一、mysql 禁止 IP 远程连接
mysql 库 user表中 host 为 localhost 修改为 % 允许所有 IP 连接 或者 添加一条数据 host 为允许连接的 IP
mysql -uroot -proot
二、授权某个用户可以远程连接
以root为例:
grant all privileges on *.* to root@"%" identified by "password" with grant option;
命令解释
*.*:第一个*代表数据库名;第二个*代表表名。这里的意思是所有数据库里的所有表都授权给用户;
root:授予root账号;
%:表示授权的用户IP,这里代表任意的IP地址都能访问MySQL;
password:分配账号对应的密码;
然后 flush privileges; 刷新权限信息
三、修改/etc/mysql/my.conf
找到bind-address = 127.0.0.1这一行
改为bind-address = 0.0.0.0 或者注释掉这一行
四、防火墙,比如 lnmp.org 集成环境,为了安全默认是禁止远程连接 mysql 的;
解决办法链接:https://www.vpser.net/security/linux-iptables.html
如果是 CentOS 7 ,默认安装了firewalld 需要先关闭并禁用
systemctl stop firewalld
systemctl mask firewalld
1、检查是否安装了 iptables
service iptables status
2、安装 iptables 防火墙 centos7 需要安装 iptables_service
yum install iptables-services
3、清除已有 iptables 规则
iptables -F
iptables -X
iptables -Z
4、开放指定的端口
-A 和 -I 参数分别为添加到规则末尾和规则最前面
允许本地回环接口(即本机运行本机)
iptables -A INPUT -i lo -j ACCEPT
允许已建立的或相关连的通行
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
允许所有本机向外的访问
iptables -A OUTPUT -j ACCEPT
允许访问 22 端口,其它端口也类似
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
允许访问80端口,其它端口也类似
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
允许ping
iptable -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
宝塔面板解决方法
在宝塔控制面板数据库权限
然后还要在安全中放行3306端口