117 遠端連線mysql資料庫的幾種方式

phpstory發表於2018-08-16

1. 直接連線mysql伺服器3306埠

3306埠無法遠端訪問的解決方案

a.網路檢測

1)ping 主機的ip地址 
— 如果ping不通,說明你的網路有問題,可以搜尋解決網路問題的方案

2)telnet 主機ip地址 3306 
— 如果顯示無法連線,則可能是網路問題,也可能是其它問題,需要下面的步驟繼續排查

3)telnet 主機ip地址 22 
— 如果無法連線,可能是你的主機沒有安裝ssh-server(一般系統只預設安裝ssh-client); 
— 也可能是防火牆把22埠禁用,不一定是網路問題(這一步僅和上一步做對比; 
— 如果能夠連線,說明網路沒有問題,而是你的主機配置問題,然後按以下步驟繼續排查)

b.埠檢測

1) netstat -ntpl | grep 3306 
tcp 0 0 127.0.0.1:3306 127.0.0.1:* LISTEN -

2) netstat -ntpl | grep 22 
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -

3)結論 
— :::3306 0.0.0.0:22 都是表明允許任意ip訪問(:::3306的結論是根據結果推測,不保證正確) 
— 127.0.0.1:3306 表示僅允許本機訪問

— 對於埠只允許本機訪問,可以檢視兩個地方的配置: 
1.防火牆對3306埠進行了限制,針對這種情況下面c項說明了解決方案 
2.mysql配置繫結本機地址,針對這種情況下面的d項說明了解決方案

c.防火牆檢測

— ubuntu下使用ufw工具 
sudo ufw status 檢視防火牆狀態,在ubuntu下iptables一般被ufw接管,而selinux是預設不安裝的,如果你曾經安裝過,就需要禁用seliux並重啟系統了。 
sudo ufw enable/disable 啟用和禁用防火牆 
sudo ufw allow 3306 允許訪問3306埠

— 以下是centos等系統的做法: 
1)iptables –list檢視; 
2)開啟防火牆3306埠 
vim /etc/sysconfig/iptables 
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT(允許3306埠通過防火牆) 
/etc/init.d/iptables restart(重啟防火牆使配置生效) 
3)或者直接關閉防火牆; 
參考:http://blog.csdn.net/fjssharpsword/article/details/50973283

d.mysql配置檔案檢查

檢查my.cnf的配置,bind-address=addr可以配置繫結ip地址。 
不配置或者IP配置為0.0.0.0,表示監聽所有客戶端連線。

— 如何查詢my.cnf配置檔案: 
ps -aux | grep mysql 檢視程式ID是3340 
ll /proc/3340 檢視程式程式情況,找配置檔案 
或者#which mysql 找程式路徑

e.mysql使用者訪問許可權

進入mysql資料庫

$mysql -u root -p
>use mysql;
>select host,user from user;
  •  

MySQL建使用者的時候會指定一個host,預設是127.0.0.1/localhost只能本機訪問; 
其它機器用這個使用者帳號訪問會提示沒有許可權,host改為%,表示允許所有機器訪問。

例如: 你想myuser使用mypassword(密碼)從任何主機連線到mysql伺服器的話。

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

  如果你想允許使用者myuser從ip為192.168.1.6的主機連線到mysql伺服器,並使用mypassword作為密碼

  mysql>GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.3'IDENTIFIED BY

  'mypassword' WITH GRANT OPTION;

   mysql>FLUSH PRIVILEGES

  使修改生效,就可以了

2.ssh通道

mysql伺服器安裝了ssh-server,並開放了22埠

a.ssh配置項中ip為mysql伺服器ip 
b.使用者名稱和密碼是mysql伺服器主機的使用者名稱和密碼 
c.mysql配置項為mysql的使用者名稱和密碼

3.http通道

mysql伺服器搭建了web伺服器,以lnmp環境為例。

a.把資料庫連線工具安裝根目錄下的ntunnel_mysql.php檔案拷貝到mysql伺服器的web伺服器根目錄。 
b.通道地址http://mysql伺服器ip或域名/ntunnel_mysql.php 
c.使用者名稱為mysql伺服器主機的使用者名稱和密碼 
d.mysql配置項為mysql的使用者名稱和密碼

更多內容請關注微信訂閱號:phpstory

相關文章