常記錄:在新建項目的時候出現了這個問題:
com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Access denied for user: 'sariel@%' to database 'datatest'
主要有幾點原因
第一:用戶是否能夠遠程訪問到這個數據庫,具體可以用Navicat for MySQL之類的工具先進行訪問,
也可以考慮https://jingyan.baidu.com/article/4f7d57128e965f1a201927e4.html(我倒是沒用過這種方法)
若訪問失敗,則是因為這個用戶沒有訪問權限導致。
在數據庫服務器上,登錄數據庫
mysql -uroot -p
然后執行
GRANT ALL PRIVILEGES ON *.* TO sariel@’%’ IDENTIFIED BY ’000000′;
參數說明: ALL PRIVILEGES表示賦給遠程登錄用戶的權限,ALL PRIVILEGES表示所有的權限,可以單獨或組合賦select,update,insert,delete權限;
*.*:第一個*表示要賦權的數據庫名,*表示全部數據庫了,第二個*表示數據庫下的表名,同理,*表示全部表,也可以根據需求限制表;
sariel表示要賦權的用戶;
%表示遠程登錄的IP,如果要限制登錄IP的話,這里就添允許登錄的IP,比如192.18.1.99等,%表示不限制IP);
000000是用戶遠程登錄的密碼。
如果出現:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '%’ IDENTIFIED BY ’000000′' at line 1
表示你是復制粘貼過去的,注意單引號的格式,采用英文半角。
最后執行:FLUSH PRIVILEGES;
再次測試,如果能訪問成功,代表數據庫可以被遠程連接。
再次啟動服務進行測試,如果依舊出現這個問題,檢查jdbc.properties中的參數
jdbc.url=jdbc:mysql://localhost:3306/datatest?useUnicode=true&characterEncoding=utf8
jdbc.username = sariel
jdbc.password = 000000
檢查地址,端口,數據庫名稱,用戶名,密碼這五個參數是否正確