在項目中遇到了以下錯誤:java
java.sql.SQLException: null, message from server: "Host '192.168.254.137' is not allowed to connect to this MySQL server" com.mysql.jdbc.SQLError.createSQLException(SQLError.java:963) com.mysql.jdbc.SQLError.createSQLException(SQLError.java:896) com.mysql.jdbc.SQLError.createSQLException(SQLError.java:885) com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1042) com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2253) com.mysql.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:2104) com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2088) com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:806) com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
多是你的賬號不容許從遠程登錄,只能在localhost。這個時候只要在localhost的那臺電腦,登入mysql後,更改 「mysql」 數據庫裏的 「user」 表裏的 「host」 項,從」localhost」改稱」%」mysql
mysql -u root -pvmwaremysql>use mysql; mysql>update user set host = '%' where user = 'root'; mysql>select host, user from user;
例如,你想myuser使用mypassword從任何主機鏈接到mysql服務器的話。sql
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION; FLUSH PRIVILEGES;
若是你想容許用戶myuser從ip爲192.168.1.6的主機鏈接到mysql服務器,並使用mypassword做爲密碼數據庫
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION; FLUSH PRIVILEGES;
若是你想容許用戶myuser從ip爲192.168.1.6的主機鏈接到mysql服務器的dk數據庫,並使用mypassword做爲密碼服務器
GRANT ALL PRIVILEGES ON dk.* TO 'myuser'@'192.168.1.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION; FLUSH PRIVILEGES;
我用的第一個方法,剛開始發現不行,在網上查了一下,少執行一個語句 mysql>FLUSH RIVILEGES 使修改生效.就能夠了ide
另一種方法,不過我沒有親自試過的,在csdn.net上找的,能夠看一下.this
在安裝mysql的機器上運行:.net
d:\mysql\bin\>mysql -h localhost -u root //這樣應該能夠進入MySQL服務器 mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION //賦予任何主機訪問數據的權限 mysql>FLUSH PRIVILEGES //修改生效 mysql>EXIT //退出MySQL服務器
這樣就能夠在其它任何的主機上以root身份登陸啦!server