Centos7 安裝 MySQL8以及遠端訪問的配置
阿新 • • 發佈:2018-11-09
Centos7 安裝MySQL8
1. 新增MySQL8的本地源
- 執行以下命令獲取安裝MySQL源
[[email protected] ~]# wget https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm
[[email protected] ~]# sudo yum localinstall mysql80-community-release-el7-1.noarch.rpm
- 可以用下面命令檢測源是否新增成功
[[email protected] ~]# yum repolist enabled | grep "mysql.*-community.*" mysql-connectors-community/x86_64 MySQL Connectors Community 51 mysql-tools-community/x86_64 MySQL Tools Community 63 mysql80-community/x86_64 MySQL 8.0 Community Server 17
2. 安裝MySQL伺服器
- 執行以下命令進行安裝
[[email protected] ~]# sudo yum install mysql-community-server
安裝過程中有詢問輸入y回車即可。
啟動MySQL
- 用下面命令啟動MySQL
[[email protected] ~]# sudo service mysqld start
Starting mysqld:[ OK ]
- 你可以用下面的命令檢查MySQL的執行狀態
[[email protected] ~]# sudo service mysqld status mysqld (pid 3066) is running.
- 重啟MySQL
[[email protected] ~]# sudo service mysqld restart
Starting mysqld:[ OK ]
- 停止MySQL
[[email protected] ~]# sudo service mysqld stop
Starting mysqld:[ OK ]
注意:如果你的伺服器記憶體是500M或者更小,可能會因為記憶體不夠導致無法啟動成功。
修改/etc/my.cnf中的innodb_buffer_pool_size=50M或者更小即可
MySQL ROOT賬號許可權配置和遠端連結
登陸MySQL本地Shell客戶端,並修改root初始密碼
- 軟體安裝好之後,會在錯誤日誌中生成一個超級使用者的初始密碼,用下面的命令可以檢視這個初始密碼
[[email protected] ~]# sudo grep 'temporary password' /var/log/mysqld.log
2018-04-27T05:20:28.645777Z 5 [Note] [MY-010454] [Server] A temporary password is generated for [email protected]: nDjEy-#jv7Dn
- 登陸mysql shell客戶端,用ALTER USER指令修改初始密碼
[[email protected] ~]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 19
Server version: 8.0.11 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> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';
Query OK, 0 rows affected (0.08 sec)
注意:MySQL對密碼複雜度有一定的要求(新版本允許修改規則),預設密碼規則如下:
- 長度不得小於8位
- 必須包含至少一個數字,一個小寫字母,一個大寫字母和一個特殊字元
修改root賬號遠端訪問許可權
- 執行以下命令進行修改
mysql> use mysql;
mysql> update user set host="%" where user='root';
mysql> GRANT ALL ON *.* TO 'root'@'%';
mysql> flush privileges;
執行完之後用exit命令退出shell客戶端,重啟MySQL。
然後就可以在客戶端中測試一下連結是否正常了。
需要注意的幾個問題
上面的GRANT語句可能和之前的版本不同,我在用之前版本的寫法時一直報錯。網上其他人寫的舊的教程中這個語句不太適合用在MySQL8中。引用中有最新的官網文件可以拿來參考
有些系統會因為伺服器防火牆導致即使配置成功,也無法遠端連結MySQL。如果無法連結,可以先暫時關閉防火牆測試一下是否時因為防火牆的原因(不同版本的Centos系統防火牆配置可能不一樣,具體可能需要另查資料)
防火牆命令:
[[email protected] ~]# service firewalld stop
或者
[[email protected] ~]# systemctl stop firewalld.service如果你的客戶端出現下面這個錯誤,Client does not support authentication protocol requested by server。是因為MySQL8伺服器版本中使用了新的密碼驗證機制,這需要客戶端的支援,如果是舊的客戶端(比如Navicat for mysql 11.1.13),可能不會很好的支援,需要你換到比較新的版本。暫時沒有找到能讓舊版本支援的方法。引用連結中方法我試過了,不管用。