错误现象:
连接远端的MYSQL出现1045错误:”
Access denied for user root@162.105.67.62,请检查用户名和口令
“。
根据网上的介绍,通过命令
mysql> use mysql; mysql> select host,user from user;
得到如下结果 +—————+——+ | host | user | +—————+——+ | localhost | root | +—————+——+ 5 rows in set (0.00 sec)
发现root用户仅允许本地(localhost)登录
,如果要远程登录该mysql服务器的话,就需要新建一个普通权限的用户,新建用户使用如下命令:
mysql> grant select,update,insert,delete on mas.* to duan@localhost identified by “123456”;
这句命令的意思是:新建用户duan,并且只允许该用户在本地(localhost)登录,密码是123456,并且赋予它对mas库中所有表select,update,insert的权限。我们在这有一个mas库,所以用mas.*代表mas库下的所有表。 现在该duan用户,已经可以登录mysql了,但是也还是只能本地登录。
若要duan用户可以远程登录mysql,则还需要如下命令:
mysql> update user set host = ‘%’ where user = ‘duan’;
现在我们再查看mysql的管理库:
mysql> select host,user from user; +———–+——+ | host | user | +———–+——+ | % | duan | | localhost | root | +———–+——+ 5 rows in set (0.00 sec) 这时,在MySQL-Front上新建连接,输入连接名,远端的Linux的IP地址,输入用户名duan和密码123456,选择连接端口,mysql默认的是3306,还是连接不上。
经过多番查找,发现还需要执行
mysql> flush privileges;
把缓存flush后,终于大功告成了。 因为使用update语句修改用户记录,还需要FLUSH语句告诉服务器重载授权表。 当你使用GRANT和REVOKE语句时,表自动重载,而你直接修改授权表时不是。 所以更简便的方法是 mysql> grant select,update,insert,delete on mas.* to duan@“%” identified by “123456”;
转载于:https://blog.51cto.com/xunzhang/1308111