在自己的虚拟机上安装了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已经是%了,只需刷新权限即可。