SQLyog客戶端無法連線MySQL伺服器案例分析

迷倪小魏發表於2017-08-18


實驗環境:
作業系統:Redhat 6.4  IP10.1.1.99(虛擬機器)
資料庫:MYSQL5.1

 

在Linux上安裝好MYSQL之後,進行本地登入

[root@wjq2 ~]# mysql -uroot -p

Enter password:

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 10

Server version: 5.1.66 Source distribution

 

Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.

 

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

 

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

 

mysql>

登陸成功;

 

 

下面透過SQLyog客戶端來遠端連線MYSQL伺服器所遇問題進行分析:

 

問題一:

 

問題分析:

[root@wjq2 ~]# service mysqld status

mysqld (pid  2364) is running...

[root@wjq2 ~]# netstat -nalp | grep "3306"

tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      2364/mysqld        

tcp        0      0 10.1.1.99:3306              10.1.1.123:55569            ESTABLISHED 2364/mysqld        

tcp        0      0 10.1.1.99:3306              10.1.1.123:55568            ESTABLISHED 2364/mysqld

 

本地使用者可以用3306埠連線,說明網路沒有問題,3306埠也開啟著,其實問題可能出在iptables,檢視iptables的執行狀態

 

[root@wjq2 ~]# service iptables status

iptables: Firewall is not running.

 

發現iptables是禁用狀態,所以問題並不是出現在iptables這裡。

注意:
1
、如果你的iptables沒有禁用,可以禁用iptables
2
、如果不想禁用iptables也可以,把-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT新增到/etc/sysconfig/iptables即可,表示允許3306埠透過防火牆。

[root@wjq2 ~]# cat /etc/sysconfig/iptables
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
COMMIT
修改完之後,需要重新啟動iptables方可生效

 

禁用iptables或修改完配置檔案之後,再次遠端連線MYSQL,又出現如下的錯誤:

 

 

問題二:


 

問題分析:

 

根據錯誤提示,10.1.1.123是我本地主機的網路卡IP,遠端連線時不允許透過該主機連線到MYSQL伺服器;可以初步判斷可能是應為缺少許可權;

 

下面我將允許使用者root使用密碼XXX從任何主機連線到MYSQL伺服器

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'XXX' WITH GRANT OPTION;          

Query OK, 0 rows affected (0.00 sec)

 

或者是允許使用者root從IP為10.1.1.123的主機連線到MYSQL伺服器,並使用XXX作為登入密碼

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'10.1.1.123' IDENTIFIED BY 'XXX' WITH GRANT OPTION;          

Query OK, 0 rows affected (0.00 sec)

 

授權成功之後,再次嘗試進行遠端連線,可以發現連線成功;




作者:SEian.G(苦練七十二變,笑對八十一難)

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31015730/viewspace-2143797/,如需轉載,請註明出處,否則將追究法律責任。

相關文章