mysql切换数据库时会报错:ERROR 1044 (42000): Access denied for user 'root'@'localhost' to database 'mysql'

来源:互联网 发布:pe系统支持网络功能 编辑:程序博客网 时间:2024/05/18 12:39

解决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即可。

方法二:
还有一个原因可能是远程登录,而默认主机是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;

阅读全文
0 0
原创粉丝点击