mysql 远程连接失败

发布时间:2019-08-08

一、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端口