1. 程式人生 > >Centos7 安裝 MySQL8以及遠端訪問的配置

Centos7 安裝 MySQL8以及遠端訪問的配置

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對密碼複雜度有一定的要求(新版本允許修改規則),預設密碼規則如下:

  1. 長度不得小於8位
  2. 必須包含至少一個數字,一個小寫字母,一個大寫字母和一個特殊字元

修改root賬號遠端訪問許可權

  • 執行以下命令進行修改
mysql> use mysql;
mysql> update user set host="%" where user='root';
mysql> GRANT ALL ON *.* TO 'root'@'%';
mysql> flush privileges;

執行完之後用exit命令退出shell客戶端,重啟MySQL。
然後就可以在客戶端中測試一下連結是否正常了。

需要注意的幾個問題

  1. 上面的GRANT語句可能和之前的版本不同,我在用之前版本的寫法時一直報錯。網上其他人寫的舊的教程中這個語句不太適合用在MySQL8中。引用中有最新的官網文件可以拿來參考

  2. 有些系統會因為伺服器防火牆導致即使配置成功,也無法遠端連結MySQL。如果無法連結,可以先暫時關閉防火牆測試一下是否時因為防火牆的原因(不同版本的Centos系統防火牆配置可能不一樣,具體可能需要另查資料)
    防火牆命令:
    [[email protected] ~]# service firewalld stop
    或者
    [[email protected] ~]# systemctl stop firewalld.service

  3. 如果你的客戶端出現下面這個錯誤,Client does not support authentication protocol requested by server。是因為MySQL8伺服器版本中使用了新的密碼驗證機制,這需要客戶端的支援,如果是舊的客戶端(比如Navicat for mysql 11.1.13),可能不會很好的支援,需要你換到比較新的版本。暫時沒有找到能讓舊版本支援的方法。引用連結中方法我試過了,不管用。

引用