MySQL 8.0版本的一些登陸問題
錯誤程式碼:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'exit()' at line 1
or
ERROR 1396 (HY000): Operation ALTER USER failed for 'root'@'localhost'
or
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
or
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
or
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '('*******') WHERE User='root'' at line 1
以上這麼多錯誤,總的來說就是語法錯誤;輸入密碼正確,但就是進不去;就算跳過密碼,改密碼的時候,沒法改。(僅針對MySQL8.0版本)
解決方法:
很簡單,改密碼。
密碼改了還不行的原因:
1、MySQL8.0版本不能通過直接修改mysql.user表來更改密碼;
2、authentication_string欄位下只能是MySQL加密後的43位字串密碼;
解決措施:
1、清空原密碼;
修改my.cnf檔案
vim /etc/my.cnf
加上
skip-grant-tables
儲存更改並重啟MySQL服務
systemctl restart mysqld.service
重啟之後直接mysql命令,秒進mysql
然後清空root密碼
UPDATE user SET authentication_string='' WHERE user='root';
然後重新整理
flush privileges;
exit退出,把插入到my.cnf的skip-grant-tables去掉,然後重啟MySQL。
2、已清空root密碼,修改root密碼;
進入MySQL(上步已清空密碼,故可以進入)。
修改密碼操作(注意區分作用域Host):
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY "***";
or(如果作用域localhost,則執行下面程式碼)
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY "***";
返回以下結果則成功
Query OK, 0 rows affected (0.00 sec)
重新整理,然後退出MySQL;
再次進去,發現成功!
總結:
MySQL 5.*的版本修改密碼命令為
UPDATE user SET authentication_string="123456" WHERE user="root";
MySQL 8.*的版本修改密碼命令為
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY "123456";
可以看出,5.*之後的版本取消了password函式,故不適用於8.*版本。
附錄:
1、修改Host為%:
update user set host='%' where host= 'localhost';
2、centos 7從零開始安裝MySQL 8.0
首先,解除安裝預設安裝的MariaDB(第二個命令根據自己情況刪除,因為檔名稱可能不同)
rpm -qa | grep -i mariadb
rpm -e --nodeps mariadb-libs
然後,下載MySQL倉庫,並安裝(同一目錄下操作)
wget https://repo.mysql.com//mysql80-community-release-el7-3.noarch.rpm
yum -y install mysql80-community-release-el7-3.noarch.rpm
最後,安裝MySQL資料庫
yum -y install mysql-community-server
3、MySQL服務操作命令
開啟MySQL服務:
systemctl start mysqld.service
關閉MySQL服務:
systemctl stop mysqld.service
重啟MySQL服務:
systemctl restart mysqld.service
4、檢視MySQL預設登陸密碼命令
cat /var/log/mysqld.log | grep password
5、遠端連線問題
如果遠端連線提示:plugin caching_sha2_password錯誤
原因:MySQL8.0預設密碼策略與5.*版本不同
解決方法:(將plugin修改為mysql_native_password即可)
update user set plugin = 'mysql_native_password' where user = 'root';
重新整理後啟用。
作者:Cool baby 出處:https://www.cnblogs.com/coolbaby/ 本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連線,否則保留追究法律責任的權利.