Centos7 安裝MySQL8
1. 添加MySQL8的本地源
- 執行以下命令獲取安裝MySQL源
[root@virde ~]# wget https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm
[root@virde ~]# sudo yum localinstall mysql80-community-release-el7-1.noarch.rpm
- 可以用下面命令檢測源是否添加成功
[root@virde ~]# 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服務器
- 執行以下命令進行安裝
[root@virde ~]# sudo yum install mysql-community-server
安裝過程中有詢問輸入y回車即可。
啟動MySQL
- 用下面命令啟動MySQL
[root@virde ~]# sudo service mysqld start
Starting mysqld:[ OK ]
- 你可以用下面的命令檢查MySQL的運行狀態
[root@virde ~]# sudo service mysqld status
mysqld (pid 3066) is running.
- 重啟MySQL
[root@virde ~]# sudo service mysqld restart
Starting mysqld:[ OK ]
- 停止MySQL
[root@virde ~]# sudo service mysqld stop
Starting mysqld:[ OK ]
注意:如果你的服務器內存是500M或者更小,可能會因為內存不夠導致無法啟動成功。
修改/etc/my.cnf中的innodb_buffer_pool_size=50M或者更小即可
MySQL ROOT賬號權限配置和遠程鏈接
登陸MySQL本地Shell客戶端,並修改root初始密碼
- 軟件安裝好之后,會在錯誤日志中生成一個超級用戶的初始密碼,用下面的命令可以查看這個初始密碼
[root@virde ~]# 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 root@localhost: nDjEy-#jv7Dn
- 登陸mysql shell客戶端,用ALTER USER指令修改初始密碼
[root@virde ~]# 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系統防火牆配置可能不一樣,具體可能需要另查資料)
防火牆命令:
[root@virde ~]# service firewalld stop
或者
[root@virde ~]# systemctl stop firewalld.service -
如果你的客戶端出現下面這個錯誤,Client does not support authentication protocol requested by server。是因為MySQL8服務器版本中使用了新的密碼驗證機制,這需要客戶端的支持,如果是舊的客戶端(比如Navicat for mysql 11.1.13),可能不會很好的支持,需要你換到比較新的版本。暫時沒有找到能讓舊版本支持的方法。引用鏈接中方法我試過了,不管用。