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