Java气象采集应用写入数据库报Access denied访问被拒绝如何处理
- 检查MySQL
weather用户的主机权限
MySQL用户的身份由用户名@登录主机共同确认,默认%通配符不包含localhost本地连接,执行以下SQL确认用户存在:
若查询结果中没有SELECT user,host FROM mysql.user WHERE user='weather';host为localhost的记录,执行以下命令创建用户并授权:CREATE USER 'weather'@'localhost' IDENTIFIED BY 'weather'; GRANT ALL PRIVILEGES ON weather.* TO 'weather'@'localhost'; FLUSH PRIVILEGES; - 验证账号密码正确性
使用命令行工具测试本地登录,确认密码匹配:
若登录失败,重置mysql -uweather -pweather -h localhost weatherweather@localhost用户的密码:ALTER USER 'weather'@'localhost' IDENTIFIED BY 'weather'; - 修正JDBC配置项
你当前使用的com.mysql.cj.jdbc.Driver是MySQL 8.0+的官方驱动,存在必填参数要求,且不推荐将账号密码直接写在URL中,可调整配置如下:
其中datastore.type=jdbc datastore.name=weather datastore.jdbc.driver=com.mysql.cj.jdbc.Driver datastore.jdbc.url=jdbc:mysql://localhost:3306/weather?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true datastore.jdbc.user=weather datastore.jdbc.password=weatherserverTimezone参数为cj驱动必填项,需根据你所在时区调整;allowPublicKeyRetrieval用于兼容MySQL 8.0默认的caching_sha2_password加密插件。 - 检查版本匹配关系
确认项目依赖的mysql-connector-java版本与你部署的MySQL服务版本兼容:- MySQL 5.x 服务对应 5.x 版本驱动,驱动类需改为
com.mysql.jdbc.Driver - MySQL 8.x 服务对应 8.x 版本驱动,使用现有cj驱动类即可
- MySQL 5.x 服务对应 5.x 版本驱动,驱动类需改为
- 检查本地网络与服务状态
确认MySQL服务正常运行,3306端口正常监听,本地防火墙未拦截127.0.0.1的3306端口请求。
内容的提问来源于stack exchange,提问作者Saverio Guzzo
相关产品推荐
相关产品推荐

