navicate连接mysql问题(#1130 - Host 'localhost' is not allowed to connect to this MyS

1,修改host

#1130 - Host 'localhost' is not allowed to connect to this MySQL server
 

说明所用账户没有连接权限,需更改 mysql 数据库里的 user表里的 host项

可以把localhost改称%(表示所有权限)。我用的是root用户,如下:

# mysql -u root -p   //使用root登录,不是linux的root用户,这个root用户是mysql的管理员用户
 
mysql>use mysql;

mysql>update user set host = '%'  where user ='root';

mysql>flush privileges;

mysql>select 'host','user' from user where user='root';

mysql>quit;
 

然后再连接,成功。

具体步骤:登陆到MySQL 
首先 use MySQL; 
按照别人提供的方式update的时候,出现错误。 
MySQL> update user set host='%' where user = 'root'; 
ERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY' 
然后查看了下数据库的host信息如下: 
MySQL> select host from user where user = 'root'; 
+-----------------------+ 
| host | 
+-----------------------+ 
| % | 
| 127.0.0.1 | 
| localhost.localdomain | 
+-----------------------+ 
3 rows in set (0.00 sec) 
host已经有了%这个值,所以直接运行命令: 

MySQL>flush privileges; 
 

再用MySQL administrator连接...成功!!

2. 授权法。

例如,你想myuser使用mypassword从任何主机连接到mysql服务器的话。

GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

FLUSH   PRIVILEGES;
 

如果你想允许用户myuser从ip为192.168.1.6的主机连接到mysql服务器,并使用mypassword作为密码

GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

FLUSH   PRIVILEGES;
 

如果你想允许用户myuser从ip为192.168.1.6的主机连接到mysql服务器的dk数据库,并使用mypassword作为密码

GRANT ALL PRIVILEGES ON dk.* TO 'myuser'@'192.168.1.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

FLUSH   PRIVILEGES;
 

在安装mysql的机器上运行:

d:\mysql\bin\>mysql   -h   localhost   -u   root //这样应该可以进入MySQL服务器

mysql>GRANT   ALL   PRIVILEGES   ON   *.*   TO   'root'@'%'   WITH   GRANT   OPTION //赋予任何主机访问数据的权限

mysql>FLUSH   PRIVILEGES //修改生效

mysql>EXIT //退出MySQL服务器

猜你喜欢

转载自fuxue.iteye.com/blog/1745899