常记录:在新建项目的时候出现了这个问题:

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
检查地址,端口,数据库名称,用户名,密码这五个参数是否正确