分享一个最近使用阿里云“轻量应用服务器”踩的坑。使用Navicat远程连接轻量应用服务器MySQL时,提示连接失败,在忙活了半天终于找到问题所在并且最终搞定。

1.登录MySQL

首先需要确定已经在阿里云轻量应用服务器后台管理页面中,把防火墙配置为允许访问3306端口。
firewall.png

然后使用后台自带的远程连接,获取MySQL密码:
getpassword.png

输入命令及刚刚获取的数据库密码登录数据库:

mysql -u root -p

此时如提示-bash: mysql: command not found,这是由于没有配置MySQL环境变量,导致不能在任意目录下使用mysql的指令,可以先配置环境变量后再进行操作,或者直接输入完整路径使用命令:

/usr/local/mysql/bin/mysql -u root -p

2.设置允许远程连接

①登录成功后,输入命令选择使用mysql库:

mysql> use mysql

②查看user以及host

mysql> select Host, User from user;

selecthost.png
上图中的user是数据库名,host是它对应的权限,可以发现默认配置权限是只允许localhost本地连接访问,这就是我们无法远程连接的原因了,所以接下来就是把它改成非本地用户时也可以访问。

③修改访问权限:

mysql> update user set Host='%' where User='root';

此时如果出现提示:You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column,就需要关闭safe mode之后,再执行上面的操作了。执行以下命令即可关闭:

mysql> SET SQL_SAFE_UPDATES = 0;

④最后使用下面的命令,刷新数据库权限之后,就可以通过Navicat等工具,成功远程连接数据库了:

mysql> flush privileges;