报错原因:
root用户只能使用localhost连接,不能使用局域网或外网IP连接。
解决办法:
一、方法一,改表
- 进入mysql,选择数据库。
- 输入 update user set host=’%’ where user=‘root’;,修改root用户的权限范围。
- 输入flush privileges;,将权限更新操作刷新到内存中。
如果这个方法不行,可以用下面这种方法。
二、方法二,授权
- 创建用户
创建user01,只能本地访问
create user user01@‘localhost’ identified by ‘password’;
创建user02,可以远程访问
create user user02@’%’ identified by ‘password’ - 修改用户密码
以user01为例:
set password for ‘user01’@‘localhost’=password(‘anotherpassword’) - 授权
授予user01管理test的全部权限
grant all privileges on test.* to user01;
授予user02查看权限,并修改密码
grant select on . to ‘user02’@’%’ identified by ‘anotherpassword’;
授予所有权限
GRANT ALL PRIVILEGES ON . TO zhangsan@"%" IDENTIFIED BY “lisi”;
三、方法三,设置mysql允许远程连接(ubuntu系统)
- sudo vi /etc/mysql/my.cnf
- 注释掉如下两行:
bind-address=127.0.0.1
skip-network(mysql5.6版本里没有这行) - sudo service mysql restart
结合一中的授权,被授权用户可以远程访问
如果mysql远程访问没有开启,其它通过远程访问如django,mysql客服端均出现如下提示:
Mysql ERROR 1698 (28000) ,特此记录一下