mysql切換數據庫時會報錯:ERROR 1044 (42000): Access denied for user 'root'@'localhost' to database 'mysql'

解決mysql切換數據庫時會報錯:ERROR 1044 (42000): Access denied for user ‘root’@’localhost’ to database ‘mysql’看不同原因不同解決方法

方法一:(這種方法網上出現的很多)
在my.cnf的[mysqld]字段加入:
skip-grant-tables
重啓mysql服務,這時的mysql不需要密碼即可登錄數據庫,然後進入mysql
mysql> use mysql;
mysql> update mysql.user set authentication_string=PASSWORD(‘mysqlabc’) where User=’root’;
mysql> flush privileges;
運行之後最後去掉my.cnf中的skip-grant-tables,重啓mysqld即可。

方法二:
還有一個原因可能是ssh遠程登錄,而默認主機是localhost,此時應該用:mysql -h 目標機器名 -u root -p來登錄mysql
解決方法:
1、先用遠程登錄方式登錄數據庫;然後

select host from user where user = ‘root’;

mysql> select host from user where user = ‘root’;
+———–+
| host |
+———–+
| % |
| localhost |
+———–+
2 rows in set (0.00 sec)
查看host信息,多了一個localhost

2、

select user,authentication_string,host from mysql.user;

mysql> select user,authentication_string,host from mysql.user;
+—————+——————————————-+———–+
| user | authentication_string | host |
+—————+——————————————-+———–+
| root | *670C8CB42235859A287647B8514C250EAE7856FD | % |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | localhost |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | localhost |
| root | *670C8CB42235859A287647B8514C250EAE7856FD | localhost |
+—————+——————————————-+———–+
4 rows in set (0.00 sec)
查看用戶信息,多了一個root對應localhost

3、

use mysql;
Delete FROM user Where User=’root’ and Host=’localhost’;
刪除掉這個用戶
flush privileges;

4、然後登錄驗證
mysql -u root -p

use mysql;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章