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

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;

备选方案:如果找不到临时密码(跳过权限表重置)

要是你找不到错误日志或者临时密码失效了,可以用跳过权限验证的方式重置密码:

  1. 先停止MySQL服务:
    # CentOS/RHEL
    sudo systemctl stop mysqld
    # Debian/Ubuntu
    sudo service mysql stop
    
  2. 以跳过权限表的方式启动MySQL:
    sudo mysqld_safe --skip-grant-tables &
    
  3. 直接登录(无需密码):
    mysql -u root
    
  4. 在MySQL shell里重置密码:
    USE mysql;
    UPDATE user SET authentication_string=PASSWORD('你的新密码') WHERE User='root' AND Host='localhost';
    FLUSH PRIVILEGES;
    EXIT;
    
  5. 停止安全模式进程,重启正常的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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 09:30:43