# 如何給遠程主機開啟mysql遠程登錄權限
> 在千鋒學習PHP的有些學員會在阿里或者騰訊雲去購買自己的雲服務器。在初級階段的項目上線時會遇到一個問題,就是無法使用遠程連接工具操作自己線上的mysql數據庫。需要上傳一份phpmyadmin,不太方便。這里為大家提供一種解決辦法。
## 問題描述:
當時用遠程工具,例如Navicat Premium連接數據庫時會產生一下錯誤。
<img src="http://php.chanpingou.com/wp-content/uploads/2017/04/QQ截圖20170405171543-300x93.png" alt="" width="300" height="93" class="alignnone size-medium wp-image-202" />
表示在當前主機是不能夠連接上mysql服務器的。
## 解決辦法:
### 1. 使用SSH工具連接遠程雲服務器
我這里使用的是SecureCRT,在下面所示窗口填寫服務器ip,用戶名,密碼信息。
<img src="http://php.chanpingou.com/wp-content/uploads/2017/04/QQ截圖20170405172334-300x278.png" alt="" width="300" height="278" class="alignnone size-medium wp-image-204" />
填寫號之后點擊鏈接,就快可以與遠程服務器建立會話。如下圖所示:
<img src="http://php.chanpingou.com/wp-content/uploads/2017/04/QQ截圖20170405172606-300x109.png" alt="" width="300" height="109" class="alignnone size-medium wp-image-206" />
### 2. 修改防火牆,開啟3306端口.
在命令行輸入以下命令可以查看編輯防火牆策略。
```vi /etc/sysconfig/iptables ```
雲服務器默認只會開啟80與22端口,不會開起3306端口。以下就是默認的防火牆策略。
<img src="http://php.chanpingou.com/wp-content/uploads/2017/04/QQ截圖20170405173452-300x108.png" alt="" width="300" height="108" class="alignnone size-medium wp-image-209" />
仿照80端口在下面添加一條開啟3306的端口策略。添加完成后如下圖所示:
<img src="http://php.chanpingou.com/wp-content/uploads/2017/04/QQ截圖20170405173725-300x113.png" alt="" width="300" height="113" class="alignnone size-medium wp-image-210" />
> 注意:增加的開放3306端口的語句一定要在icmp-host-prohibited之前
在命令行執行下面命令重啟防火牆
```service iptables restart ```
### 3.命令行登錄mysql修改權限表
執行```mysql -uroot -p```登錄服務器的mysql數據庫,依次執行一下命令:
```use mysql;```
```GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;```
```FLUSH PRIVILEGES;```
修改mysql庫的user表,將host項,從localhost改為%。%這里表示的是允許任意host訪問,如果只允許某一個ip訪問,則可改為相應的ip,比如可以將localhost改為192.168.2.135,這表示只允許局域網的192.168.2.135這個ip遠程訪問mysql,后邊的password則是登錄時需要提供的密碼。最后刷新mysql權限表即可。
此時就可以使用遠程工具操作雲服務器的mysql數據庫了。
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
互聯網+時代,時刻要保持學習,攜手千鋒PHP,Dream It Possible。