远程访问Linux下的MySQL报错Access denied for user 'root'@'localhost' (using password:YES)

最近在学习虚拟机,安装了MySQL数据库,且配置了root用户的登录权限,在虚拟机内使用MySQL一点问题都没有
但是我现在想用DBVisual 来操作这个数据库,总是报错Access denied for user ‘root’@‘localhost’ (using password:YES)
最后在网上查了,问题原因是:默认mysql的用户是没有远程访问的权限的,因此当程序跟数据库不在同一台服务器上时,我们需要开启mysql的远程访问权限。

方法一:修改mysql库的user表,将host项,从localhost改为%。%这里表示的是允许任意host访问,如果只允许某一个ip访问,则可改为相应的ip,比如可以将localhost改为192.168.1.123,这表示只允许局域网的192.168.1.123这个ip远程访问mysql。

   #mysql -u root -proot
  mysql>use mysql;
  mysql>update user set host = '%' where user = 'root';
  mysql>select host, user from user;
  mysql>flush privileges;

方法二:直接授权(推荐)
从任何主机上使用root用户,密码:youpassword(你的root密码)连接到mysql服务器:

# mysql -u root -proot 
  mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'youpassword' WITH GRANT OPTION;

操作完后切记执行以下命令刷新权限 FLUSH PRIVILEGES
不过必须确认虚拟机的端口3306对本机开放

猜你喜欢

转载自blog.csdn.net/weixin_40672761/article/details/84973519