默认 MySQL 有两项措施保证你不能远程登录:
-
/etc/mysql/my.cnf
文件中的bind-address = 127.0.0.1
行 -
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 还需注意在控制台允许流量出入。
网友评论