阿里云MySQL数据库无法连接
HTTP Status 500 - Request processing failed; nested exception is org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for transaction; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Access denied for user ‘root’@’localhost’ (using password: YES))
虽然这个@的地址是你本机的地址,但别担心,不是url写错了,是数据库的账号密码出了问题。我在遇到这个问题的时候,Navicat都是正常的,但是用户名密码就是对不上号,随后我在Navicat中测试连接,果然,虽然默认的账号密码能登录上,再试一下手动输入发现test connection一直失败。
解决方法,重新注册一个数据库用户,并给予权限即可。
记得输入完一句sql输入一个;
记得%代表所有地址,要是想改成自己的地址,就把%换成相应的ip地址
1、首先登录位于阿里云上的mysql:
mysql -u root -h localhost -p
2、打开mysql数据库 (需要有能操作mysql这个库的权限,一般是mysql的root用户)
use mysql
3、新增一个用户mysqlusername
设置密码,简单的密码还不行。将host设置为%。
grant all on *.* to 'mysqluser'@'%' identified by 'My_sql123';
4、执行完以上语句,接着执行以下语句 ,刷新权限表,使配置生效
flush privileges;
5、检查端口
检查服务器防火墙以及阿里云的安全组规则3306端口开放了吗,没开放需要去开放。
6、Navicat连接
host: 阿里云服务器的ip地址
port:3306
username : mysqluser
password: My_sql123
问题解决完毕。