:主要是因为用户没有远程登录权限。
1.创建授权用户
create user zhj@'%' identified by 'ZHJ123'; (其中:zhj是用户名, 'ZHJ123'是密码)
2、更改权限:
命令1:(有效)
grant all on xxxx.* to 'root'@'%' identified by 'password' with grant option; (其中:xxxx代表操作数据库的名称,password访问数据库账户的密码) 例如:grant all on *.* to 'shiyong'@'192.168.%'; // 赋予所有权限
命令2:(这个命令不容易使用,登录会报告1044错误。说明有些权限没有改变。
UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='zhj';
///不能解决远程登录问题()
3、查看:(Grant_priv, Super_priv必须都是“Y”)
select host,user, Grant_priv, Super_priv from mysql.user;
4、更新
flush privileges; ///这句话是用来刷新你修改的权限的
【误区】UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='zhj'; ///不可能单独执行此命令,而只执行此命令grant可以解决。
【有效】grant all on *.* to 'zzz'@'%'; //成功远程登录。
【扩展】
///在当前用户下(vulclone)执行grent命令,会提示错误(using password: YES) //需要在root在用户下执行。 grant all privileges on *.* to vulclone@'%' with grant option; ///类似于这样的命令,结果MySQL报:ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IDENTIFIED BY '1234' with grant option' at line 1 //可能需要在当前用户下执行。 GRANT ALL PRIVILEGES ON *.* TO 'vulclone'@'%' IDENTIFIED BY '1234' with grant option;