1. 程式人生 > 實用技巧 >在伺服器之外的地方訪問 MYSQL

在伺服器之外的地方訪問 MYSQL

在伺服器之外的地方訪問 MYSQL

1.修改伺服器防火牆規則

iptables -L   可以檢視當前的防火牆規則
iptables -F   可以清空所有防火牆規則

也可以通過雲伺服器的 UI 介面修改

2.確保 mysql 的監聽地址是 0.0.0.0

監聽地址是 0.0.0.0 ,表示該 mysql 允許所有 IP 地址進行連線,這是允許遠端連線的基礎
監聽地址是 127.0.0.1,則代表該 mysql 只允許所在伺服器本機連線,外網是無法連線的

怎麼知道 mysql 的監聽地址是多少呢?
Linux 伺服器中執行如下命令可以檢視:

netstat -nutlp|grep mysql

如果監聽的地址不是 0.0.0.0,該怎麼辦?
因為 mysql 預設是監聽 0.0.0.0 的,如果檢視監聽的不是,則肯定是配置檔案中的 bind-address 引數的問題,
需要修改 mysql 的配置檔案中的 bind-address 引數,將bind-address=127.0.0.1 修改成 bind-address=0.0.0.0
儲存好後,重啟 mysql 服務就會生效了。

重啟MYSQL

步驟或方法: RedHat Linux (Fedora Core/Cent OS)

1.啟動:/etc/init.d/mysqld start

2.停止:/etc/init.d/mysqld stop

3.重啟:/etc/init.d/mysqld restart

Debian / Ubuntu Linux

1.啟動:/etc/init.d/mysql start

2.停止:/etc/init.d/mysql stop

3.重啟:/etc/init.d/mysql restart

3.新增遠端連線 mysql 的賬號

此步驟是必須要操作的,mysql 本身的使用者只能在本機上連線資料庫,外網連線的話,需要先新增遠端使用者並授權。
在 mysql 命令列模式下,或者 phpmyadmin 中執行 sql 語句新增遠端連線使用者

grant all on *.* to root@'%' identified by '123456';
flush privileges;

命令解釋:

  • *.* 第一個 * 表示庫,第二個 * 表示表; *.* 對全部資料庫的全部表授權, so.ok 表示只對so這個庫中的 ok 表授權
  • root 表示要給哪個使用者授權,這個使用者可以是存在的使用者,也可以是不存在的
  • % 表示允許遠端連線的 IP 地址,%代表允許所有 IP 連線,只允許某個IP遠端連線,可以寫成 123.123.123.123,只允許123.123.123.*這個網段遠端連線,可以寫成 123.123.123.%
  • 123456:是設定授權使用者的連線密碼
  • flush privileges:代表立即重新整理許可權表,使新增的使用者生效

上面三步都設定好了,就可以再次嘗試遠端連線mysql了。