mysql 5.7支持的最高版本是Ubuntu17 ,即便安裝成功後,也會出現各類妖蛾子,本人就被這種問題困擾了好一會。在Ubuntu 18.04下安裝mysql,建議安裝8.0以上版本!
mysql
1. 配置apt sourcesql
下載mysql-apt-config_0.8.11-1_all.deb數據庫
sudo dpkg -i mysql-apt-config_0.8.11-1_all.deb
2. 更新apt sourcesession
sudo apt-get update
3. 安裝mysql 8加密
sudo apt-get install mysql-server
注意在安裝過程當中,加密方式一塊選擇傳統加密方式spa
4. 配置遠程訪問權限code
mysql -u root -proot mysql #登錄mysql,默認選中mysql數據庫
查看root用戶的權限:server
mysql> select host, user, authentication_string, plugin from user; +-----------+------------------+------------------------------------------------------------------------+-----------------------+ | host | user | authentication_string | plugin | +-----------+------------------+------------------------------------------------------------------------+-----------------------+ | localhost | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | | localhost | mysql.session | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | | localhost | mysql.sys | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | | localhost | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B | mysql_native_password | +-----------+------------------+------------------------------------------------------------------------+-----------------------+ 4 rows in set (0.00 sec) mysql> show variables like '%skip_networking%'; +-----------------+-------+ | Variable_name | Value | +-----------------+-------+ | skip_networking | OFF | +-----------------+-------+ 1 row in set (0.01 sec)
能夠看到 root 用戶的 host,默認應該顯示的 localhost,只支持本地訪問,不容許遠程訪問。blog
受權root用戶遠程訪問權限:ip
mysql> CREATE USER 'root'@'%' IDENTIFIED BY 'root'; Query OK, 0 rows affected (0.09 sec) mysql> select host, user, authentication_string, plugin from user; +-----------+------------------+------------------------------------------------------------------------+-----------------------+ | host | user | authentication_string | plugin | +-----------+------------------+------------------------------------------------------------------------+-----------------------+ | % | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B | mysql_native_password | | localhost | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | | localhost | mysql.session | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | | localhost | mysql.sys | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | | localhost | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B | mysql_native_password | +-----------+------------------+------------------------------------------------------------------------+-----------------------+ 5 rows in set (0.00 sec) mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root'; Query OK, 0 rows affected (0.06 sec) mysql> select host, user, authentication_string, plugin from user; +-----------+------------------+------------------------------------------------------------------------+-----------------------+ | host | user | authentication_string | plugin | +-----------+------------------+------------------------------------------------------------------------+-----------------------+ | % | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B | mysql_native_password | | localhost | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | | localhost | mysql.session | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | | localhost | mysql.sys | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | | localhost | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B | mysql_native_password | +-----------+------------------+------------------------------------------------------------------------+-----------------------+ 5 rows in set (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.01 sec)
從別的機器使用mysql客戶端鏈接,應該是成功了。
5. 其餘設置(可選)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; #修改加密規則,password爲當前密碼 ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password'; #更新 root 用戶密碼,password爲當前密碼 FLUSH PRIVILEGES; #刷新權限
6. 若是遇到SQLException : SQL state: 42000 com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Access denied for user 'root'@'%' to database 'ranger' ErrorCode: 1044 這種錯誤
應該是看到受權的權限沒有打開: Grant_priv is set to N for root@%. 修復下
UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';
FLUSH PRIVILEGES;