1. 程式人生 > >mysql 遠端連線失敗

mysql 遠端連線失敗

一、mysql  禁止 IP 遠端連線

mysql 庫 user表中 host 為 localhost 修改為 % 允許所有 IP 連線 或者 新增一條資料 host 為允許連線的 IP 

mysql    -uroot  -proot

二、授權某個使用者可以遠端連線

以root為例:

grant all privileges on *.* to [email protected]"%" 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