废话少说一句话系列(下面的命令都在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