CentOS7.4安裝MySQL踩坑記錄

CentOS7.4安裝MySQL踩坑記錄

time: 2018.3.19html


CentOS7.4安裝MySQL時網上的文檔雖然多可是不靠譜的也多, 可能由於版本與時間的問題, 因此記錄下本身踩坑的過程, 若是你發現進坑了, 歡迎參考本篇文章:)node

  • 第一次嘗試遇到的問題:
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

嘗試卸載從新安裝, 參考, 步驟:

1.查看yum是否安裝過mysql
yum list installed mysql*
yum list installed | grep mysql*
沒有顯示結果, 說明yum中沒有安裝mysql(對yum與rpm並非很瞭解, 若有錯誤歡迎指出)
2.刪除配置文件與文件夾
rm -rf /var/lib/mysql
rm /etc/my.cnf
3.查看rpm中的安裝並卸載
rpm -qa | grep -i mysql
如下根據上面命令顯示的列表修改python

rpm -e mysql-community-server-5.7.21-1.el7.x86_64 mysql-community-common-5.7.21-1.el7.x86_64 mysql-community-libs-5.7.21-1.el7.x86_64 mysql57-community-release-el7-11.noarch mysql-community-client-5.7.21-1.el7.x86_64  mysql-community-libs-compat-5.7.21-1.el7.x86_64 --nodeps

3.清除餘項
whereis mysql
刪除上面命令顯示的路徑
rm -rf /usr/share/mysql/
4.刪除配置
rm -rf /usr/my.cnf
rm -rf /root/.mysql*# 無結果mysql

# 筆者機器上無結果
chkconfig --list | grep -i mysql
chkconfig --del mysqld
systemctl list-dependencies | grep -i mysql

5.從新安裝

下載mysql源並安裝到rpm:sql

wget http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
rpm -ivh mysql57-community-release-el7-11.noarch.rpm

更新yum並安裝mysql(時間較長):數據庫

# 更新yum軟件包
yum check-update
# 更新系統
yum update
# 安裝mysql
yum install mysql mysql-server

注意事項
更新yum後可能須要從新編輯/usr/bin/yum文件頭(由於筆者將默認的python更改成python3), 編輯後再次安裝便可, 出現的錯誤以下:centos

[root@centos ~]# yum install mysql mysql-server
  File "/usr/bin/yum", line 30
    except KeyboardInterrupt, e:
                            ^
SyntaxError: invalid syntax

安裝完成後配置

未跳過grant-tables受權表時啓動MySQL會出現:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)socket

這裏須要修改root的密碼, 這條命令是給mysql加上一個啓動參數--skip-grant-tables, 顧名思義,就是在啓動mysql時不啓動grant-tables受權表, 用於忘記管理員密碼後的修改
/usr/local/mysql/bin/mysqld_safe --skip-grant-tables --user=mysql &
可是, MySQL 5.7.6 版本開始默認是不安裝mysqld_safe, 如下爲新方法:
1.中止 mysql 服務
service mysqld stop
2.設置 mysqld 選項 --skip-grant-tables參數:
systemctl set-environment MYSQLD_OPTS='--skip-grant-tables'
3.從新啓動mysql
systemctl start mysqld
4.執行 mysql -u root 登陸mysql並更改密碼函數

[root@centos ~]# mysql -uroot
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.21 MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> UPDATE mysql.user
    -> SET authentication_string = PASSWORD('toor'), password_expired = 'N'
    -> WHERE User = 'root' AND Host = 'localhost';
Query OK, 1 row affected, 1 warning (0.65 sec)
Rows matched: 1  Changed: 1  Warnings: 1

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql>

password_expired = 'N'過時狀態設置爲No, flush privileges; 刷新權限記錄, 詳見ui

5.設置完密碼後去掉--skip-grant-tables參數, 重啓mysql便可用設置的密碼登陸root用戶
systemctl unset-environment MYSQLD_OPTS
systemctl restart mysqld
mysql -uroot -p

MySQL5.7開啓遠程鏈接

1.鏈接到mysql數據庫
mysql -uroot -p
2.選擇數據庫
use mysql
3.開啓遠程鏈接:

# mysql安裝後默認是localhost訪問,若是須要外部訪問能夠設置一個新的帳號把host改成%,意味着全部ip都可以訪問
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '你的密碼' WITH GRANT OPTION;

因爲密碼策略問題報錯:

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

緣由: MySQL5.6.6版本以後增長了密碼強度驗證插件validate_password,相關參數設置的較爲嚴格。
使用了該插件會檢查設置的密碼是否符合當前設置的強度規則,若不知足則拒絕設置。影響的語句和函數有:create user,grant,set password,password(),old password。

解決參考:

# 查看mysql全局參數配置
mysql> select @@validate_password_policy; 
+----------------------------+
| @@validate_password_policy |
+----------------------------+
| MEDIUM                     |
+----------------------------+
1 row in set (0.01 sec)

mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+--------+
| Variable_name                        | Value  |
+--------------------------------------+--------+
| validate_password_check_user_name    | OFF    |
| validate_password_dictionary_file    |        |
| validate_password_length             | 8      |
| validate_password_mixed_case_count   | 1      |
| validate_password_number_count       | 1      |
| validate_password_policy             | MEDIUM |
| validate_password_special_char_count | 1      |
+--------------------------------------+--------+
7 rows in set (0.00 sec)
# 修改mysql參數配置
mysql> set global validate_password_policy=0;
Query OK, 0 rows affected (0.00 sec)

mysql> set global validate_password_mixed_case_count=0; 
Query OK, 0 rows affected (0.00 sec)

mysql> set global validate_password_number_count=3; 
Query OK, 0 rows affected (0.00 sec)

mysql> set global validate_password_special_char_count=0;
Query OK, 0 rows affected (0.00 sec)

mysql> set global validate_password_length=3;
Query OK, 0 rows affected (0.00 sec)

mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+-------+
| Variable_name                        | Value |
+--------------------------------------+-------+
| validate_password_check_user_name    | OFF   |
| validate_password_dictionary_file    |       |
| validate_password_length             | 3     |
| validate_password_mixed_case_count   | 0     |
| validate_password_number_count       | 3     |
| validate_password_policy             | LOW   |
| validate_password_special_char_count | 0     |
+--------------------------------------+-------+
7 rows in set (0.01 sec)
# 配置完便可修改簡單密碼
mysql> set password for 'root'@'localhost' = password('簡單密碼');
Query OK, 0 rows affected, 1 warning (0.00 sec)

4.從新配置並重啓服務

# 此時配置遠程鏈接無報錯
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '簡單密碼' WITH GRANT OPTIONN;
Query OK, 0 rows affected, 1 warning (0.00 sec)
# 刷新權限
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> ^DBye
# 重啓mysql服務
systemctl restart mysqld.service

ok, 能夠遠程鏈接了

相關文章
相關標籤/搜索