前言
使用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埠的規則。