问题描述
我无法使用第三方工具或者django登陆我的数据库。然后,我给root赋予权限:
GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ IDENTIFIED BY ‘yeqinfang’ WITH GRANT OPTION;
报错:
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 ‘. TO ‘root’@’%’ IDENTIFIED BY ‘yeqinfang’ WITH GRANT OPTION’ at line 1
解决办法
我的mysql是8.0版本,不支持上面的语句,因此,我需要创建用户来验证一下:
create user 'yeqinfang'@'%' identified by 'yeqinfang';
这里报错:
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
说我密码不安全,那么我就更改一下密码吧!
(1)查看策略
show variables like "%validate%";
(2)修改全局变量
密码长度至少为6
set global validate_password.length=6
权限设置最低:
set global validate_password.policy=0;
(3)重新创建用户
create user 'yeqinfang'@'%' identified by 'yeqinfang';
创建成功。
(4)给新用户权限
GRANT ALL PRIVILEGES ON . TO ‘yeqinfang’@’%’ IDENTIFIED BY ‘yeqinfang’ WITH GRANT OPTION;
还是一样的报错,那就换种方式:
grant all privileges on *.* to 'yeqinfang'@'%';
成功。
(5)给自己权限
grant all privileges on *.* to 'root'@'%';
成功。事实表明,是语句错误。
(6)刷新权限
FLUSH PRIVILEGES;
(7)尝试外部连接:
报错如上:不支持caching_sha2_password验证方式
(9)换个密码验证方式:
例如:
ALTER USER ‘username’@’%’ IDENTIFIED WITH mysql_native_password BY ‘password’;
修改如下:
ALTER USER 'yeqinfang'@'%' IDENTIFIED WITH mysql_native_password BY 'yeqinfang';
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'yeqinfang';
FLUSH PRIVILEGES;
(10)尝试连接:
如上,连接成功。root用户或其他用户都可以。