一、问题
今天navicat连接mysql报了Access denied for user ‘root‘@‘localhost‘ (using password:YES)
出现这个报错语句的一般原因是输入了错误的密码,也有可能是是root帐户默认不开放远程访问权限。
相关的解决方法是重新设置密码和修改root用户的远程访问权限
二、解决方案
方案一
1.服务器通过mysql -u root -p 命令登录mysql
2.切换mysql数据库:use mysql;
3.查询用户是否具有远程登录权限:select host,user from user;
可以看出root账号只有本地访问权限
4.添加远程访问权限
# 授权所有主机都可以通过root用户,密码123456,进行访问数据库
# 123456:给新增权限用户设置的密码
# %:代表所有主机,也可以具体到主机ip地址
# MySQL 8.0之后的版本,需要先创建一个用户,再进行授权
create user root@'%' identified by '123456';
grant all privileges on *.* to root@'%' with grant option;
#刷新权限
flush privileges;
如果执行命令mysql -u root -p时还是报错,可以试试方案二
方案二
1. mysql配置文件把命令:skip-grant-tables ,添加进[mysqld]里面
2.重启mysql服务
3.通过命令行进入MySQL的bin目录,输入“mysql -u root -p”(不输入密码),回车即可进入数据库。
4.执行“use mysql;”,使用mysql数据库。
5.执行select user,host from user;查询是否存在匿名用户,有的话删除匿名用户。
6.执行:update user set password=PASSWORD(“123456”) where user=’root’;(修改root的密码)
7.打开mysql配置文件,删除“skip-grant-tables”,保存并关闭文件。
8.重启mysql服务
© 版权声明
THE END
暂无评论内容