MySQL开启远程访问
默认情况下,MySQL是不允许远程访问的,可以通过以下步骤修改。
修改MySQL配置文件
找到MySQL配置文件,增加或修改以下配置
[mysqld]
bind-address = 0.0.0.0
# skip-networking
0.0.0.0:说明所有IP都可以访问,当然也可以修改成只允许特定的IP访问。
修改完成后,需要重启MySQL服务。
授权MySQL用户可以远程访问
登录到MySQL命令行,执行以下命令
GRANT ALL ON database_name.* TO user_name@'ip_address' IDENTIFIED BY 'user_password';
database_name:数据库名称,使用*则可以访问所有数据库。
user_name:数据库用户。
ip_address:指定的远程IP可以访问,使用%则允许所有IP连接。
user_password:用户密码。
配置防火墙
很多服务器需要手动开启防火墙才可以访问指定的端口,国内的服务器需要在安全组里放行MySQL端口,一般为3306端口。
Iptables:
sudo iptables -A INPUT -p tcp --destination-port 3306 -j ACCEPT
特定IP放行
sudo iptables -A INPUT -s 10.8.0.5 -p tcp --destination-port 3306 -j ACCEPT
UFW:
sudo ufw allow 3306/tcp
特定IP放行
sudo ufw allow from 10.8.0.5 to any port 3306
FirewallD:
sudo firewall-cmd --permanent --zone=public --add-port=3306/tcp
sudo firewall-cmd --reload
特定IP放行
sudo firewall-cmd --new-zone=mysqlzone --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --permanent --zone=mysqlzone --add-source=10.8.0.5/32
sudo firewall-cmd --permanent --zone=mysqlzone --add-port=3306/tcp
sudo firewall-cmd --reload
验证MySQL远程访问
使用以下命令测试远程访问
mysql -u user_name -h mysql_server_ip -p
user_name:MySQL数据库远程访问用户。
mysql_server_ip:MySQL服务器IP地址。
没有报错则说明开启MySQL远程访问成功,否则有问题。