無法遠端連線伺服器上的mysql

會飛的Tiger發表於2017-08-10

前言

使用mysql管理工具連線伺服器上的mysql,顯示連線被拒絕,但是在伺服器上是可以登入mysql的。

無法遠端連線通常以下幾種情況:

首先,

關閉mysql。        

service mysqld stop

1.0 沒有授權(這裡介紹三種的方法)

1.1 檢視授權

SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;

+-----------------------+ 
| host | 
+-----------------------+ 
| % | 
| 127.0.0.1 | 
+-----------------------+  

host下面的欄位:

% 代表任何主機都可以連線

127.0.0.1   表示該使用者只能通過這個伺服器地址連線

1.2 如果沒有授權,修改授權

授權任何地址都可以連線

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

或者這樣寫:

 grant select,delete,update,create,insert,drop on *.* to admin@"%" identified by "123456";

1.3 授權一個ip地址訪問該資料庫

本機ip自己通過cmd檢視 ,假設這裡我的本機ip是112.141.165.24

授權root使用者,僅可以通過112.141.165.24訪問伺服器上的資料庫。

GRANT ALL PRIVILEGES ON *.* TO 'root'@’112.141.165.24’ IDENTIFIED BY '123456' WITH GRANT OPTION;

以上,授權後全部需要重新整理授權:

flush privileges;

2.0 防火牆禁止了3306埠

檢視伺服器開啟的埠

vi /etc/sysconfig/iptables

看一下里面的配置是否有3306埠

沒有的情況下:

新增一條配置3306埠的策略

-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT

重啟防火牆

service iptables restart

3.0 檢視mysql配置

修改MySQL的配置檔案/etc/mysql/my.cnf,預設3306埠只允許本地訪問

註釋條這行:

#bind-address = 127.0.0.1

或者改成     bind-address = 0.0.0.0

4.0 修改安全組策略

上面的三條都不行,請看這一條。

登入阿里雲伺服器

在ESC伺服器>網路和安全>安全組,點選你例項上的配置規則,如果沒有3360的話,自己配置一條開放3306埠的規則。

 

相關文章