解决springboot问题Access denied for user ''@'localhost' (using password: NO)

本文详细记录了在使用SpringBoot框架搭建过程中遇到的数据库连接问题。作者分享了因配置文件中数据库用户名和密码字段名错误导致的AccessDenied异常,并提供了正确的配置示例,帮助读者避免类似错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在学习springboot实现ssm框架的搭建,然而框架搭建好了之后出现了Access denied for user ''@'localhost' (using password: NO) 无法获取什么username和password的问题,百度发现说是什么权限问题,但自己的数据库其他项目都可以用的,这很没有道理,果断放弃,最后看到一博客说的是配置文件的问题,然后问题解决了

这是最开始的配置文件

#数据源配置
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3307/tijian?useUnicode=true&characterEncoding=UTF-8
spring.datasource.data-password=mysql
spring.datasource.data-username=root

改过之后的配置文件

#数据源配置
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3307/tijian?useUnicode=true&characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=mysql

我都是按照代码提示一行一行敲的,jieg结果错了,看来编辑器也不是100%靠谱的。

原文地址:https://blog.youkuaiyun.com/qq_36324464/article/details/79534605

### 解决方案 当遇到 `Access denied for user 'gjx'@'localhost'` 的问题时,通常是因为用户名、密码不匹配或者权限不足引起的。以下是具体的解决方案: #### 方法一:验证用户名和密码 确认当前使用的用户名 `'gjx'` 和对应的密码是否正确。如果不确定密码,可以通过重置密码的方式解决问题。 ```sql use mysql; alter user 'gjx'@'localhost' identified by '新密码'; flush privileges; ``` 上述命令用于更改指定用户的密码并刷新权限表[^1]。 #### 方法二:跳过授权表登录 MySQL 并重置密码 如果无法通过正常方式登录到 MySQL 数据库,则可以尝试以下步骤来绕过认证机制以重新设置密码。 1. 停止 MySQL 服务: ```bash sudo systemctl stop mysqld ``` 2. 编辑 MySQL 配置文件(通常是 `/etc/my.cnf` 或者安装路径下的 `my.ini`),添加以下内容: ``` skip-grant-tables ``` 3. 启动 MySQL 服务: ```bash sudo systemctl start mysqld ``` 4. 登录 MySQL 而无需提供密码: ```bash mysql -u gjx -p ``` 5. 更改用户密码: ```sql use mysql; update user set authentication_string=PASSWORD('新密码') where user='gjx'; flush privileges; exit; ``` 6. 删除配置中的 `skip-grant-tables` 行,并重启 MySQL 服务: ```bash sudo systemctl restart mysqld ``` 此过程允许管理员在未记住原始密码的情况下恢复访问权[^3]。 #### 方法三:检查主机连接限制 有时错误可能源于客户端 IP 地址未被授予访问许可。可通过下面语句查看是否有针对特定 host 的约束条件存在: ```sql select Host, User from mysql.user where User = 'gjx'; ``` 假如结果显示只有某些固定的 hosts 可用而本地地址不在其中的话,就需要扩展其范围至 `%`(代表任意位置),即执行如下操作: ```sql grant all on *.* to 'gjx'@'%' with grant option; flush privileges; ``` 以上措施能够有效应对大多数因账户凭证丢失所引发的拒绝接入状况[^2]。 ### 注意事项 - 执行任何涉及敏感数据的操作前,请务必做好备份工作以防万一发生意外情况。 - 如果仍然存在问题,建议核查防火墙设定以及端口监听状态等因素是否存在干扰因素。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值