mysql8.0密码设置之后登陆不上的问题

执行alter user 'root'@'localhost' identified with mysql_native_password by '密码'; 后,执行

select host, user, authentication_string, plugin from user; root那行密码是没有加密过的密码导致一直登不上。

解决方法是执行alter user 'root'@'localhost' identified by '密码';密码显示成一串加密字符串,验证也没有问题,就没有问题了

 

 

所以完整正确的过程如下:

1.停止mysql服务;

2.管理员方式打开cmd,cd 到bin目录下;

3.执行mysqld --console --skip-grant-tables --shared-memory;

4.这个窗口放着,用管理员身份再开一个窗口,cd到bin目录下;

5.执行mysql.exe -u root;

6.执行select host, user, authentication_string, plugin from user;

7.执行alter user 'root'@'localhost' identified by '密码';

8.执行 FLUSH PRIVILEGES;

9.再执行select host, user, authentication_string, plugin from user;检查一下;

10.关闭两个窗口,重启服务;

11.尝试登陆。

 

### 如何重置 MySQL 8.0 Root 用户密码 对于 CentOS 7 上的 MySQL 8.0 版本,如果忘记 root 密码,则可以通过特定流程来恢复访问权限并设置密码。 #### 停止 MySQL 服务 首先停止正在运行的 MySQL 或 MariaDB 服务。这一步骤确保数据库处于安全状态,在更改配置时被其他进程干扰[^1]。 ```bash sudo systemctl stop mysqld ``` #### 启动 MySQL 跳过授权表 接着以跳过授权表的方式启动 MySQL 实例,允许无验证进入服务器环境: ```bash sudo mysqld_safe --skip-grant-tables & ``` 此命令会绕过正常的认证机制,因此能够无需提供现有凭证就能连接到实例。 #### 登录 MySQL 并执行必要的变更 此时可以带任何参数直接登录 MySQL 客户端工具,并立即发出一系列指令更新 root 的身份验证信息: ```sql USE mysql; -- 修改本地主机上的root账户密码 ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'; FLUSH PRIVILEGES; ``` 上述操作仅改变了默认管理员账号关联的秘密密钥,还刷新了存储于内存中的权限缓存以便即时生效这些改动[^2]。 另外一种情况是在某些环境中可能还需要针对远程连接定义 `'root'@'%'` 这样的通配符模式下的用户记录来进行同样的处理: ```sql ALTER USER 'root'@'%' IDENTIFIED BY 'another_secure_password'; FLUSH PRIVILEGES; ``` 完成以上步骤之后记得重启 MySQL 服务恢复正常工作流,并尝试利用刚设定的新密码正常登陆管理界面[^3]。 #### 验证新的密码策略是否有效 最后建议通过标准的身份验证过程测试能否顺利接入系统,确认一切按预期运作良好。 ```bash mysql -u root -p Enter password: new_password ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值