You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SpringBoot连接MySQL报错:用户‘firstnamelastname’访问被拒且不存在

解决SpringBoot连接MySQL时使用系统用户名导致的访问拒绝问题

问题根源

  1. SpringBoot默认行为:当未在application.properties中显式配置spring.datasource.username时,框架会自动使用当前操作系统的用户名(即你的Mac终端用户名firstnamelastname)尝试连接MySQL。
  2. MySQL用户不存在:你在mysql.user表中查不到该用户,是因为这个用户从未在MySQL中创建过,自然无法通过身份验证,导致访问被拒。

解决方案(二选一即可)

方案1:显式配置SpringBoot数据库连接参数(推荐)

直接在application.properties中指定合法的MySQL用户名(比如你能正常登录的root)及对应参数:

# 替换为你的MySQL用户名
spring.datasource.username=root
# 替换为你的MySQL用户密码
spring.datasource.password=your_root_password
# 替换为你的目标数据库名,按需调整SSL和时区参数
spring.datasource.url=jdbc:mysql://localhost:3306/your_database_name?useSSL=false&serverTimezone=UTC

配置完成后重启SpringBoot应用即可。

方案2:在MySQL中创建系统用户名并授权

如果需要保留SpringBoot的默认用户名行为,可登录MySQL(用mysql -u root -p),执行以下SQL创建用户并授权:

-- 创建对应系统用户名的MySQL用户,localhost表示仅允许本地连接
CREATE USER 'firstnamelastname'@'localhost' IDENTIFIED BY 'your_new_password';
-- 授权该用户访问你的目标数据库,替换为实际数据库名
GRANT ALL PRIVILEGES ON your_database_name.* TO 'firstnamelastname'@'localhost';
-- 刷新权限使配置生效
FLUSH PRIVILEGES;

之后在application.properties中补充密码配置:

spring.datasource.password=your_new_password

补充说明

你之前卸载重装MySQL后问题仍存在,是因为该问题的核心是SpringBoot的默认配置逻辑,和MySQL本身的状态无关,重装不会改变SpringBoot的这一行为。

内容的提问来源于stack exchange,提问作者Atinuke

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 07:42:12