错误com.mysql.cj.exceptions.CJException: Access denied for user ‘root‘@‘%‘ to database ‘xdu_sxpp‘

本文介绍如何通过SQL命令授权用户对特定数据库进行操作, 包括设置用户名、密码及权限等。

需要授权数据库操作

grant all on xxx.* to ‘root’@’%’ identified by ‘password’ with grant option;

其中:xxx代表创建的数据库; password为用户密码,在此为root的密码。

### 三级标题:解决 MySQL 连接错误Access denied for user &#39;eteams&#39;@&#39;%&#39; to database &#39;eteams&#39; 当出现 `Access denied for user &#39;eteams&#39;@&#39;%&#39; to database &#39;eteams&#39;` 错误时,通常表示数据库用户权限配置不当或连接时使用的凭据与数据库中定义的权限不匹配。此问题可能由多种原因引起,包括用户权限不足、认证插件不兼容、数据库不存在或连接参数错误等。 一种常见原因是用户 `&#39;eteams&#39;@&#39;%&#39;` 未被授予访问特定数据库的权限。此时需要通过 MySQL 的权限管理命令授予该用户访问权限,例如: ```sql GRANT ALL PRIVILEGES ON eteams.* TO &#39;eteams&#39;@&#39;%&#39;; FLUSH PRIVILEGES; ``` 此操作将允许用户 `eteams` 从任意主机访问 `eteams` 数据库,并具有所有操作权限。需要注意的是,在 MySQL 8.0 及以上版本中,某些旧的权限授予语法可能不再支持,例如 `IDENTIFIED BY` 在 `GRANT` 语句中已不再推荐使用,应单独使用 `CREATE USER` 或 `ALTER USER` 进行密码设置[^2]。 此外,用户 `&#39;eteams&#39;@&#39;%&#39;` 的认证方式也可能导致连接失败。MySQL 8.0 默认使用 `caching_sha2_password` 认证插件,而部分旧版 JDBC 驱动可能不支持该插件。为避免此类问题,可以将用户认证方式更改为 `mysql_native_password`,执行如下 SQL 语句: ```sql ALTER USER &#39;eteams&#39;@&#39;%&#39; IDENTIFIED WITH mysql_native_password BY &#39;tCKe4k9tdxVJwAnEr52TZZQC&#39;; ``` 此操作将确保用户使用兼容性更强的密码验证机制进行连接,从而避免因认证插件不匹配导致的连接拒绝错误。 还需要确认数据库 `eteams` 是否确实存在。如果数据库未被创建,连接时也会抛出类似错误。可以通过以下 SQL 语句创建数据库: ```sql CREATE DATABASE IF NOT EXISTS eteams CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 此语句将创建一个使用 UTF8MB4 字符集的数据库,以确保与应用端的字符编码兼容。 ### 三级标题:相关配置建议 在 JDBC 连接字符串中,应确保参数配置合理。例如,显式指定字符集、时区和 SSL 设置,以避免因配置不一致导致连接问题: ```xml <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"> <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/> <property name="url" value="jdbc:mysql://172.31.0.2:3306/eteams?characterEncoding=utf8&useSSL=false&autoReconnect=true&failOverReadOnly=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&allowMultiQueries=true"/> <property name="username" value="eteams"/> <property name="password" value="tCKe4k9tdxVJwAnEr52TZZQC"/> </bean> ``` 上述配置中,`serverTimezone=Asia/Shanghai` 明确指定了时区,避免因时区不一致导致时间数据错误;`allowPublicKeyRetrieval=true` 允许从服务器获取公钥进行身份验证,适用于使用 `sha256_password` 插件的情况;`useSSL=false` 表示不启用 SSL 加密连接,适用于开发或测试环境。 ### 三级标题:总结 `Access denied for user &#39;eteams&#39;@&#39;%&#39; to database &#39;eteams&#39;` 错误通常由用户权限不足、认证插件不兼容、数据库不存在或连接参数配置不当引起。通过授予用户适当的数据库访问权限、调整用户认证插件、确认数据库存在以及优化连接参数配置,可以有效解决此类连接问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值