https://blog.csdn.net/WeakFantasy/article/details/52348829?locationNum=10
在Linux中裝上mysql之后,發現windows中用navicat連接數據庫失敗,這是由於默認mysql的用戶是沒有遠程訪問的權限的,因此當navicat程序跟mysql數據庫不在同一台服務器上時,我們需要開啟mysql的遠程訪問權限才能正常訪問mysql數據庫。
主要的有兩種方法,改表法和授權法,下面將分別介紹。
1、登陸mysql
- mysql -u root -p
2、改表法:修改mysql庫的user表,將host項,從localhost改為%。%這里表示的是允許任意host訪問,如果只允許某一個ip訪問,則可改為相應的ip,比如可以將localhost改為192.168.1.123,這表示只允許局域網的192.168.1.123這個ip遠程訪問mysql。
- mysql> USE MYSQL;
- mysql> UPDATE USER SET host = '%' WHERE user = 'root';
3、授權法:
- mysql> USE MYSQL;
- mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION //賦予任何主機訪問以及修改所有數據的權限
- 例如,你想root用戶使用root從任何主機連接到mysql服務器的話。
- GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
- 如果你想允許用戶root從ip為192.168.1.123的主機連接到mysql服務器,並使用root作為密碼
- GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.123'IDENTIFIED BY 'root' WITH GRANT OPTION;
- mysql> FLUSH PRIVILEGES //修改生效
防火牆開放3306端口
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之前,否則將仍不能進行訪問。
