Linux系统MySQL 5.7.25(版本14.14)初始用户数据问题咨询
解决MySQL 5.7.25(14.14)Linux下初始登录Access Denied问题
嘿,我对MySQL 5.7系列的初始配置门儿清,你遇到的这个问题其实是版本特性导致的——从MySQL 5.7开始,初始密码机制完全变了,再也不是空密码或者默认的password啦!这就是你用老方法登录失败的原因,别慌,我给你一步步解决:
第一步:找到系统生成的临时初始密码
MySQL 5.7安装完成后,会自动给root用户生成一个随机临时密码,存放在MySQL的错误日志里。你可以用命令快速提取:
- 对于CentOS/RHEL系列:
sudo grep 'temporary password' /var/log/mysqld.log - 对于Debian/Ubuntu系列:
sudo grep 'temporary password' /var/log/mysql/error.log
执行后你会看到类似这样的输出:
2024-05-20T12:34:56.789012Z 1 [Note] A temporary password is generated for root@localhost: XyZ12!abC
这里的XyZ12!abC就是你的临时初始密码,把它记下来。
第二步:用临时密码登录并修改正式密码
拿到临时密码后,执行登录命令:
mysql -u root -p
然后输入刚才找到的临时密码,就能成功进入MySQL shell了。
⚠️ 注意:此时你只能执行修改密码的操作,其他命令都会被拒绝,所以赶紧改密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';
MySQL 5.7默认有密码强度要求,新密码需要包含大小写字母、数字和特殊字符。如果是测试环境想放宽限制,可以先执行这两句再改密码:
SET GLOBAL validate_password_policy=LOW; SET GLOBAL validate_password_length=6;
备选方案:如果找不到临时密码(跳过权限表重置)
要是你找不到错误日志或者临时密码失效了,可以用跳过权限验证的方式重置密码:
- 先停止MySQL服务:
# CentOS/RHEL sudo systemctl stop mysqld # Debian/Ubuntu sudo service mysql stop - 以跳过权限表的方式启动MySQL:
sudo mysqld_safe --skip-grant-tables & - 直接登录(无需密码):
mysql -u root - 在MySQL shell里重置密码:
USE mysql; UPDATE user SET authentication_string=PASSWORD('你的新密码') WHERE User='root' AND Host='localhost'; FLUSH PRIVILEGES; EXIT; - 停止安全模式进程,重启正常的MySQL服务:
# CentOS/RHEL sudo systemctl stop mysqld sudo systemctl start mysqld # Debian/Ubuntu sudo service mysql stop sudo service mysql start
这样操作后,你就能用新设置的密码正常登录root用户了。
内容的提问来源于stack exchange,提问作者mango
相关产品推荐
相关产品推荐

