MySQL 开启root账户的远程连接功能

小柊 发表于 2017年11月30日 22时01分39秒

废话少说一句话系列(下面的命令都在MySQL控制台下执行):

授权:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY '[你的密码]' WITH GRANT OPTION;

FLUSH PRIVILEGES;

 

取消授权:

USE mysql;

DELETE FROM user WHERE Host='%' AND User='root';

FLUSH PRIVILEGES;

一、扯淡

这个月真的忙得飞起,本来这个月是想再继续之前的Docker系列,无奈实在抽不出时间,连这篇文章都是在30号晚上21点开始起草的。

在公司开发的时候,系统数据库选择的是MySQL,由于我个人现在是属于一种身在曹营(Python)心在汉(.net)的情况,所以并不想在自己电脑上装MySQL,所以决定直接把开发服务器上的MySQL打开root远程连接,方便自己本地的调试。

 

二、实践

操作很简单,在这里我用的是中规中矩的授权法,先用SSH连到开发服务器上,登陆MySQL命令行,输入下面的命令:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY '[你的密码]' WITH GRANT OPTION;

 

操作完成后,再输入下面的命令刷新一下:

FLUSH PRIVILEGES;

 

就好了。

 

这里说明两个地方,一个是'root'@'%':这里表示授权给root用户,后面的百分号表示允许远程访问。

第二个是刚刚上面命令红色标出的密码,这个密码是远程连接时使用的,需要满足当前的密码策略强度,如果您输入的密码强度不满足当前数据库的密码策略,操作会失败。

 

三、测试

完成上面的步骤之后,我们可以在其他机子上试一下能不能访问了,下面是我用Navicat的测试,在输入服务器地址,用户名和密码后点击“连接测试”,提示“连接成功”,测试通过。

 

如果您还连不上服务器,可能是因为开了防火墙的缘故(比如CentOS 7默认启动了自带防火墙服务:firewalld.service),建议您检查防火墙状态后再试。

 

四、收回授权

收回授权的话,一般会用revoke命令,但我在实际测试中发现并没有什么卵用,琢磨着是因为就算收回授权了,也不会删除MySQL的用户表里的那条远程root用户记录,所以还是要手动去删一下这个记录才能生效:

具体操作如下:

登陆MySQL控制台,输入以下命令:

USE mysql;

DELETE FROM user WHERE Host='%' AND User='root';

FLUSH PRIVILEGES;

 

如果在完成上面的步骤之后还是能远程登陆,重启一下MySQL服务就好。

 

 

小柊

2017年11月30日 21:22:26

相关文章

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注