標籤:
一般情況下,mysql的使用者是沒有遠端存取的許可權的,因此當程式跟資料庫不在同一台伺服器上時,我們需要開啟mysql的遠端存取許可權。 目前有兩種方法可供選擇:改表法和授權法。
改表法:1、登陸mysqlmysql -u root -p
2、修改mysql庫的user表,將host項,從localhost改為%。%這裡表示的是允許任意host訪問,如果只允許某一個ip訪問,則可改為相應的ip,比如可以將localhost改為192.168.163.128,這表示只允許區域網路的192.168.163.128這個ip遠端存取mysql。mysql> use mysql; mysql> update user set host = ‘%‘ where user = ‘root‘; mysql> select host, user from user; 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、重啟防火牆service iptables restart
注意:增加的開放3306連接埠的語句一定要在icmp-host-prohibited之前
至此,大部分人已經能通過遠程連結到自己的mysql資料庫了,但是可能還會有人遇到問題。遠端連線資料庫時報錯:
“1130-host ... is not allowed to connect to this MySql server”當遇到這個問題的時候,恐怕你還要繼續使用“授權法”才能正常遠程連結資料庫了。
授權法:在安裝mysql的機器上運行:1、mysql -h localhost -u root //這樣應該可以進入MySQL伺服器2、mysql>GRANT ALL PRIVILEGES ON *.* TO ‘root‘@‘%‘ WITH GRANT OPTION //賦予任何主機訪問資料的許可權3、mysql>FLUSH PRIVILEGES //修改生效4、mysql>EXIT //退出MySQL伺服器這樣就可以在其它任何的主機上以root身份登入啦!
對於授權法,還有些其他的用法:如果你想允許使用者myuser從ip為192.168.1.6的主機串連到mysql伺服器,並使用mypassword作為密碼mysql>GRANT ALL PRIVILEGES ON *.* TO ‘myuser‘@‘192.168.1.6‘ IDENTIFIED BY ‘mypassword‘ WITH GRANT OPTION;mysql>FLUSH PRIVILEGES;
如果你想允許使用者myuser從ip為192.168.1.6的主機串連到mysql伺服器的dk資料庫,並使用mypassword作為密碼mysql>GRANT ALL PRIVILEGES ON dk.* TO ‘myuser‘@‘192.168.1.6‘ IDENTIFIED BY ‘mypassword‘ WITH GRANT OPTION;mysql>FLUSH PRIVILEGES;
經過這一大圈的折騰,我想你現在無論如何都應該可以遠端存取你的資料庫了吧
來自為知筆記(Wiz)
MySql server:開放mysql遠端連線