用SQLyog连接虚拟机中的mysql,解决连接不上的方法

在自己的虚拟机上安装了mysql,但是在本地使用SQLyog连接的时候报了如下错误:

这里写图片描述

这个问题主要是

MySQL没有允许远程登陆,所以要授权MySQL远程登陆。

授权方法:
方法一、本地登入mysql,更改 “mysql” 数据库里的 “user” 表里的 “host” 项,将”localhost”改为”%”

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

  方法二、直接授权(推荐)

  从任何主机上使用root用户,密码:youpassword(你的root密码)连接到mysql服务器:
 

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

  操作完后切记执行以下命令刷新权限

    FLUSH PRIVILEGES

  这时就可以连接成功了。

另一种情况就是安装mysql的时候,直接给root用户设密码之后没有刷新权限,即没有执行flush privileges
如果是这种情况,使用方法一的时候会报如下错。

mysql> update user set host='%' where user='root';
ERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY'
mysql> select host,user from user;
+-----------------------+------+
| host                  | user |
+-----------------------+------+
| %                     | root |
| 127.0.0.1             | root |
| ::1                   | root |
| localhost             |      |
| localhost.localdomain |      |
| localhost.localdomain | root |
+-----------------------+------+
6 rows in set (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

因为root的host已经是%了,只需刷新权限即可。

猜你喜欢

转载自blog.csdn.net/huangbaokang/article/details/82222209