允许远程登录 MySQL

2016-07-28  本文已影响59人  字母数字或汉字

默认 MySQL 有两项措施保证你不能远程登录:

  1. /etc/mysql/my.cnf 文件中的 bind-address = 127.0.0.1
  2. root 用户域为 localhost

我们要分别解决这两个问题。

首先,注释掉配置文件里的 bind-address 行,保存,重启 MySQL。

$ sudo vi /etc/mysql/my.cnf
$ service mysql restart

这样我们就解除了配置文件的安全保护。

然后,登录 MySQL 的 root 用户,创建新用户,使用远程域(这里使用全网 %),分配数据库权限。

$ mysql -uroot -p

# 新建用户,使用 % 域
mysql> CREATE USER 'xp'@'%' IDENTIFIED BY 'password';
# 分配 数据库.表 的完全权限,允许该用户再授权其他用户其拥有的权限
mysql> GRANT ALL PRIVILEGES ON *.* TO 'xp'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
# 使授权即时生效
mysql> FLUSH PRIVILEGES;

这样我们就配置好了 MySQL 服务器,在没有被防火墙拦截 3306 端口流量的前提下就能够远程登录了。

我所使用的 Ubuntu Server 需要对 ufw(iptables) 防火墙做配置:

$ sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
$ sudo iptables -t nat -L

$ sudo ufw allow 3306

如果使用 AWS 还需注意在控制台允许流量出入。

上一篇下一篇

猜你喜欢

热点阅读