直接上最终完整代码
CREATE USER 'root'@'yourIP';
ALTER USER 'root'@'yourIP' IDENTIFIED WITH mysql_native_password BY 'yourpassword';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'yourIP' WITH GRANT OPTION;
flush PRIVILEGES;
因为不是数据库方向的,短短几句代码也折腾了很久。发出来希望可以帮助有需要的人。这里重点就是第二句。很多文档可能是这样写的:
CREATE USER 'root'@'yourIP' IDENTIFIED BY 'yourpassword';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'yourIP' WITH GRANT OPTION;
flush PRIVILEGES;
这样写并不是说就错了,而是我用了不成功。这里涉及一个小知识点,mysql8 之前的版本中,加密规则默认是mysql_native_password;而在mysql8之后,加密规则是caching_sha2_password。因此,如果你本地和远程的MySQL版本不一致,或者像我一样使用的是较老版本的Navicat for MYSQL,就会出现无论怎么输密码就是登录不了。客户端工具会提示密码错误或者尝试升级版本。
密码不会明文存在数据库,会进行加密。如果加密方式不同,即使输入相同,最终结果肯定是不一致的。因此针对高版本MySQL,你需要指定加密方式为:mysql_native_password
? ? ? ? ? ? ? ? ? ? ? ? ? ?
?
|