在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