前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >MySQL8.0允许外部访问

MySQL8.0允许外部访问

作者头像
小陈运维
发布2021-10-13 11:01:52
发布2021-10-13 11:01:52
3.4K00
代码可运行
举报
文章被收录于专栏:小陈运维小陈运维
运行总次数:0
代码可运行

MySQL8.0允许外部访问

一、前置条件:

按照https://blog.csdn.net/h996666/article/details/80917268安装完MySQL之后。

二、开始修改配置:

1,登进MySQL之后,

2,输入以下语句,进入mysql库:

代码语言:javascript
代码运行次数:0
运行
复制
use mysql
代码语言:javascript
代码运行次数:0
运行
复制

3,更新域属性,’%’表示允许外部访问:

代码语言:javascript
代码运行次数:0
运行
复制
update user set host='%' where user ='root';
代码语言:javascript
代码运行次数:0
运行
复制

4,执行以上语句之后再执行:

代码语言:javascript
代码运行次数:0
运行
复制
FLUSH PRIVILEGES;
代码语言:javascript
代码运行次数:0
运行
复制

5,再执行授权语句:

代码语言:javascript
代码运行次数:0
运行
复制
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION;

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

6,其它说明:

FLUSH PRIVILEGES; 命令本质上的作用是:

将当前user和privilige表中的用户信息/权限设置从mysql库(MySQL数据库的内置库)中提取到内存里。

MySQL用户数据和权限有修改后,希望在”不重启MySQL服务”的情况下直接生效,那么就需要执行这个命令。

通常是在修改ROOT帐号的设置后,怕重启后无法再登录进来,那么直接flush之后就可以看权限设置是否生效。

而不必冒太大风险。

三、可能存在的其它问题:

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

代码语言:javascript
代码运行次数:0
运行
复制
Client does not support authentication protocol requested by server;
代码语言:javascript
代码运行次数:0
运行
复制

报错原因:

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

Navicat 12以下客户端支持的是mysql_native_password 这种加密方式;

解决方案:

1,用如下语句查看MySQL当前加密方式

代码语言:javascript
代码运行次数:0
运行
复制
select host,user,plugin from user;
代码语言:javascript
代码运行次数:0
运行
复制

查询结果

代码语言:javascript
代码运行次数:0
运行
复制
+-----------+------------------+-----------------------+
| 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。

2,使用命令将他修改成mysql_native_password加密模式:

代码语言:javascript
代码运行次数:0
运行
复制
update user set plugin='mysql_native_password' where user='root';

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

四、如果还连接不上

通过以上操作后,依然无法连接上,问题可能出在了防火墙上。

1,MySQL部署在实体服务器上解决方案如下: a.开放MySQL的端口号,默认端口号是3306。 b.直接关闭防火墙(慎重操作,不建议。当然测试玩的话就随意了。。。。)

2,MySQL部署在云计算机上的方案如下: a.以阿里云为例,找到实例,设置安全组,开放端口号即可。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-12-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Linux运维交流社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • MySQL8.0允许外部访问
    • 一、前置条件:
    • 二、开始修改配置:
    • 三、可能存在的其它问题:
    • 四、如果还连接不上
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档