mysql8.0解决外网访问权限
2018-12-17 本文已影响0人
yichen_china
进入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';
再次连接的时候,就成功了。