第一步:开启MySQL用户的远程访问权限
mysql -u root -p mysql # 第1个mysql是执行命令,第2个mysql是系统数据名称
在MySQL控制台执行:
grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
# root是用户名,%代表任意主机,'123456'指定的登录密码(这个和本地的root密码可以设置不同的,互不影响)
flush privileges; # 重载系统权限
exit;
如果想允许用户root从ip为192.168.137.99的主机连接到MySQL服务:
grant all privileges on *.* to 'root'@'192.168.137.99' identified by '123456' with grant option;
flush privileges;
第二步:设置防火墙,让 3306 端口对外可访问
iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
# 查看规则是否生效
iptables -L -n # 或者: service iptables status
FirewallD防火墙开放3306端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
命令含义:
- zone #作用域
- add-port=3306/tcp #添加端口,格式为:端口/通讯协议
- permanent #永久生效,没有此参数重启后失效
重启防火墙
systemctl restart firewalld.service
---------------------
作者:LaooGao
来源:CSDN
原文:https://blog.csdn.net/u013257111/article/details/79063578
此时生产环境是不安全的,远程管理之后应该关闭端口,删除之前添加的规则
iptables -D INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
注意:上面iptables添加/删除规则都是临时的,如果需要重启后也生效,需要保存修改:
service iptables save # 或者: /etc/init.d/iptables save
另外,
vi /etc/sysconfig/iptables # 加上下面这行规则也是可以的
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT