Mysql8.0及以后的版本如何解决用户授权问题

一、前言

为了解决连接数据库的报错问题:java.sql.SQLException: Access denied for user ‘root’@‘localhost’ (using password)
两个解决方法:

  1. 配置的数据库以及账户密码出现错误,导致出现错误。这个可以在idea中测试一下连接:
    在这里插入图片描述
  2. mysql我们的用户的权限没有对应的权限
    给用户授权即可

二、Mysql8.0及以后的版本如何解决用户授权问题

1、确认用户是否存在

如果用户已经存在,可以直接授予权限。如果不存在,请先创建用户。

检查用户是否存在:
SELECT User, Host FROM mysql.user WHERE User = 'root';

2. 创建用户(如果需要)

如果用户不存在,需要先创建用户:
CREATE USER 'root'@'localhost' IDENTIFIED BY 'password';

3. 授予权限

在 MySQL 8.0 中,不能在 GRANT 命令中同时修改用户密码和授予权限。需要分两步完成:
!!!!使用旧版本的命令会报错!!!!!!

授予权限:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;

4. 修改密码

如果需要修改用户密码,可以使用 ALTER USER 命令:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password';

5. 刷新权限

在执行完权限相关的命令后,刷新权限表以确保立即生效:
FLUSH PRIVILEGES;
完整示例【以下是从创建用户到授予权限的完整操作】
!!!!!password替换成自己的密码!!!!!!

-- 创建用户(如果用户已经存在,这一步可以跳过)
CREATE USER 'root'@'localhost' IDENTIFIED BY 'password';

-- 授予所有权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;

-- 修改密码(可选,仅在需要更改密码时使用)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password';

-- 刷新权限
FLUSH PRIVILEGES;

-- 验证权限
SHOW GRANTS FOR 'root'@'localhost';

注意事项

  • 推荐的密码管理方式:在 MySQL 8.0 中,建议通过 ALTER USER 修改密码,而不是在 GRANT 中设置密码。
  • 权限表的即时刷新:从 MySQL 8.0 开始,权限的修改会自动刷新,但执行 FLUSH PRIVILEGES 是一个良好的习惯。
  • 远程连接授权:如果需要允许远程连接,请将 localhost 修改为 % 或指定的 IP 地址
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

伍六琪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值