SpringBoot连接MySQL报错:用户‘firstnamelastname’访问被拒且不存在
解决SpringBoot连接MySQL时使用系统用户名导致的访问拒绝问题
问题根源
- SpringBoot默认行为:当未在
application.properties中显式配置spring.datasource.username时,框架会自动使用当前操作系统的用户名(即你的Mac终端用户名firstnamelastname)尝试连接MySQL。 - 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
相关产品推荐
相关产品推荐

