1. 程式人生 > >centos7.x 實測安裝 mysql 伺服器 5.6|5.7 版本,此方法老版本也相容(未測試)

centos7.x 實測安裝 mysql 伺服器 5.6|5.7 版本,此方法老版本也相容(未測試)

自己曾經挖過的坑,幫小朋友解決問題時再次發生,近來無事,記錄一下(有意重現部分問題,並給出解決方案)... ...

照顧小白,所以寫的囉嗦一點(本帖安裝的mysql5.7版本)。

1、先檢查系統是否裝有mysql(有的話注意要先解除安裝)

# rpm -qa |grep -i mysql

結果如圖:(系統已經安裝過一個mysql)如果版本不是你需要安裝的,需要解除安裝。如果未安裝,則什麼都不顯示。

解除安裝命令:

# yum remove mysql-communtity-*(依次全部解除安裝)

2.檢視mysql的repo源,選則版本並下載。可以使用wget 或 離線下載後再上傳到伺服器

網頁地址:  http://repo.mysql.com/

2.1 選擇你需要安裝的版本等,複製連結(示例安裝mysql5.7)

2.2 使用wget下載rpm包(注意版本需要根據自己的選擇而定)

# wget http://repo.mysql.com/mysql57-community-release-el7-11.noarch.rpm

2.3 安裝下載的rpm包

# sudo rpm -ivh mysql57-community-release-el7-11.noarch.rpm

2.4 檢視yum源是否存在剛剛下載的mysql repo

3.安裝mysql服務

# sudo yum install mysql-server

安裝成功後使用命令檢視:

# rpm -qa |grep -i mysql

以上步驟如有報錯,請參考本文最後的報錯示例(可能有解決方案咯)

4.配置並使用mysql

4.1 配置資料庫賬號密碼

# mysql -u root

錯誤 4.1.1 :

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

解決 4.1.1 :

原因:/var/lib/mysql的訪問許可權問題,將/var/lib/mysql的擁有者改為當前使用者(tip:將命令中的root替換成相應的使用者)

# chown -R root /var/lib/mysql/
# chown -R root /var/lib/mysql-files

修改後重啟mysql服務:

# service mysqld restart

錯誤:4.1.2此時登陸會出現另外一個問題(mysql5.6 未出現,mysql5.7出現了此問題):

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

解決 4.1.2 :

方案1:使用命令獲取隨機密碼
 # grep "password" /var/log/mysqld.log
方案2:
1.執行 # vim /etc/my.cnf ,開啟檔案後,找到[mysqld]關鍵字,在[mysqld]下面一行新增skip-grant-tables 儲存並退出
(centos版本不同路徑可能是 /etc/mysql/my.cnf ,自行查詢)

2.執行 # service mysqld restart,重啟之後執行 # mysql -u root -p 再嘗試登陸mysql,遇到需要輸入密碼,直接回車

到此能正常進入mysql命令列的話繼續... ...

tip:
資料庫後續配置遠端登陸等操作完成後記得以下操作:

1.執行 # vim /etc/my.cnf,開啟檔案後, 把剛才新增的 skip-grant-tables 刪掉,儲存退出

2.執行 # service mysql restart。

錯誤:4.1.3

ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

解決:

1.修改使用者名稱密碼
mysql>alter user 'root'@'localhost' identified by '123456';  

2、重新整理許可權
mysql>flush privileges;

如果報錯
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
說明你的密碼強度太低,可以通過執行以下語句來解決
mysql>set global validate_password_policy=0;

設定資料庫賬號密碼完成(mysql 5.6和5.7版本的user表字段不同,所以設定密碼的sql語句有一些差異,自行測試

mysql>use mysql; #使用mysql庫
mysql>update user set password=password('123456') where user='root'; #mysql 5.6
mysql>update user set authentication_string=password('123456') where user='root'; #mysql 5.7
mysql>flush privileges; #寫入許可權

4.2 配置遠端連線

tip:如再次在此步驟前發生了4.1.2的錯誤,則需要先將skip-grant-tables 刪掉並重啟服務後方可繼續... ...

配置遠端連線的作用簡單一句話解釋: 如果你要在別的機器連線這個資料庫,就需要開啟遠端連線許可權

場景1:你想root使用12345678從別的任何主機連線到mysql伺服器,(給其它使用者授權請靈活變通!!!)
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
mysql>FLUSH PRIVILEGES;

場景2:如果你想允許某使用者anyone(是否root使用者皆可)從ip為192.168.0.123的主機連線到mysql伺服器,並使用1234567890作為密碼
mysql>GRANT ALL PRIVILEGES ON *.* TO 'anyone'@’192.168.0.123’ IDENTIFIED BY '1234567890' WITH GRANT OPTION;
mysql>FLUSH PRIVILEGES;

4.3 使用navicat等客戶端工具測試mysql是否可以正常連線。 工具使用方法(略) ... ...

可能問題:navicat無法連線mysql伺服器,防火牆問題解決方案

檢查伺服器防火牆是否開放3306埠
Centos7 firewalld 防火牆執行命令,並重啟:
#firewall-cmd --zone=public --add-port=3306/tcp --permanent firewall-cmd --reload

Centos6.5之前   iptables 防火牆執行命令
#vim /etc/sysconfig/iptables

在檔案內新增下面命令列,然後重啟
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
# service iptables restart

5.設定mysql服務開機自啟

編輯系統檔案:

# vim /etc/rc.local 

新增service mysqld start