[linux] MySQL開啟遠程訪問權限及防火墻開放3306端口

在Linux中裝上mysql之后,發現windows中用navicat連接數據庫失敗,這是由于默認mysql的用戶是沒有遠程訪問的權限的,因此當navicat程序跟mysql數據庫不在同一臺服務器上時,我們需要開啟mysql的遠程訪問權限才能正常訪問mysql數據庫。

1、登陸mysql

mysql -u root -p

2、root 用戶授權

grant all privileges on *.* to root@'%' identified by 'rootpasswd ' with grant option;
// 這段指令允許所有用root用戶輸入密碼登陸該mysql server,
// 如果將'%' 換成'192.168.1.124' ,那么只有'192.168.1.124'的主機可以登陸。 
// rootpasswd : 登錄密碼
FLUSH   PRIVILEGES;

防火墻開放3306端口 - Centos6

1、打開防火墻配置文件

vi /etc/sysconfig/iptables

2、增加下面一行

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

3、更改后的防火墻配置文件

# Firewall configuration written by system-config-firewall  
# Manual customization of this file is not recommended.  
*filter  
:INPUT ACCEPT [0:0]  
:FORWARD ACCEPT [0:0]  
:OUTPUT ACCEPT [0:0]  
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT  
-A INPUT -p icmp -j ACCEPT  
-A INPUT -i lo -j ACCEPT  
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT  
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT  
-A INPUT -j REJECT --reject-with icmp-host-prohibited  
-A FORWARD -j REJECT --reject-with icmp-host-prohibited  
  
COMMIT  

4、保存后重啟防火墻

service iptables restart

注意:增加的開放3306端口的語句一定要在icmp-host-prohibited之前,否則將仍不能進行訪問。

防火墻開放3306端口 - Centos7

一、firewalld 防火墻

語法命令如下:啟用區域端口和協議組合

firewall-cmd [--zone=<zone>] --add-port=<port>[-<port>]/<protocol> [--timeout=<seconds>]
此舉將啟用端口和協議的組合。
端口可以是一個單獨的端口 <port> 或者是一個端口范圍 <port>-<port>。
協議可以是 tcp 或 udp。

查看 firewalld 狀態

systemctl status firewalld

開啟 firewalld

systemctl start firewalld

開放端口

// --permanent 永久生效,沒有此參數重啟后失效
firewall-cmd --zone=public --add-port=3306/tcp --permanent

重新載入

firewall-cmd --reload

查看

firewall-cmd --zone=public --query-port=3306/tcp

刪除

firewall-cmd --zone=public --remove-port=3306/tcp --permanent

二、iptables 防火墻

也可以還原傳統的管理方式使用 iptables

關閉firewalld防火墻

// 停止firewalld服務
systemctl stop firewalld
// 屏蔽服務讓他不能自啟
systemctl mask firewalld

安裝iptables

yum install iptables-services

設置開機啟動

systemctl enable iptables

操作命令

// 關閉服務
systemctl stop iptables
// 啟動服務
systemctl start iptables
// 重啟服務
systemctl restart iptables
// 顯示服務狀態
systemctl status iptables

在啟動的時候會遇到這樣的問題:Unit iptables.service failed to load
問題根源是在/etc/sysconfig/下面沒有找到iptables文件。解決辦法如下:
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
/usr/libexec/iptables/iptables.init save #保存成功
然后再執行
systemctl start iptables

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容