mysql8.0解决外网访问权限

进入MySQL之后,

输入以下语句:

use mysql #更新域属性:
update user set host='%' where user ='root';#执行以上语句之后再执行:
FLUSH PRIVILEGES;再执行授权语句:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION;

然后外部就可以通过账户密码访问了。

mysql -u root -P 3306 -h 127.0.0.1 -p #回车后输入密码

FLUSH PRIVILEGES; 命令本质上的作用是:
将当前user和privilige表中的用户信息/权限设置从mysql库(MySQL数据库的内置库)中提取到内存里。

MySQL用户数据和权限有修改后,希望在"不重启MySQL服务"的情况下直接生效,那么就需要执行这个命令。
通常是在修改ROOT帐号的设置后,怕重启后无法再登录进来,那么直接flush之后就可以看权限设置是否生效。而不必冒太大风险。

执行完之后,再用Navicat连接mysql,报错如下:

Client does not support authentication protocol requested by server;
Navicat 12版本不会报错,可以直接跳过以下步骤

mysql8.0 引入了新特性 caching_sha2_password;这种密码加密方式客户端不支持;

客户端支持的是mysql_native_password 这种加密方式;
可以用如下语句查看加密方式

select host,user,plugin from user;
查询结果

+-----------+------------------+-----------------------+
| host      | user             | plugin                |
+-----------+------------------+-----------------------+
| %         | root             | caching_sha2_password |
| localhost | mysql.infoschema | mysql_native_password |
| localhost | mysql.session    | mysql_native_password |
| localhost | mysql.sys        | mysql_native_password |
+-----------+------------------+-----------------------+
看第一行,root加密方式为caching_sha2_password。

可以使用命令将他修改成mysql_native_password加密模式:

update user set plugin='mysql_native_password' where user='root';

再次连接的时候,就成功了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容