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