大多数情况下能搜到,前提是mysql用mysqld --initialize初始化且日志路径未自定义;若无输出,需先确认服务是否启动、日志路径是否正确、权限是否足够,或是否存在残留数据干扰。

grep 'temporary password' /var/log/mysqld.log 能搜到吗?
大多数情况下能,但前提是 MySQL 是用 mysqld --initialize 初始化的(默认安装方式),且日志路径没被自定义。CentOS/RHEL 系统通常写在 /var/log/mysqld.log;Ubuntu/Debian 可能是 /var/log/mysql/error.log 或 /var/log/mysql/mysql-error.log。如果 grep 没输出,别急着重装——先确认服务是否真正启动过(systemctl status mysqld),因为没启动就不会生成临时密码日志。
找不到 /var/log/mysqld.log 怎么办?
常见原因和应对方式:
-
mysqld没跑起来:执行sudo systemctl start mysqld再试一次 grep - 日志路径被改过:查配置文件
/etc/my.cnf或/etc/mysql/my.cnf里log-error的值,例如log-error=/var/log/mysql/mysqld.err - 权限不够:用
sudo grep 'temporary password' /var/log/mysqld.log,普通用户读不了该文件 - 初始化时用了
--initialize-insecure:这种模式压根不生成临时密码,mysql -u root直接回车就能进(仅限测试环境)
Windows 上怎么找初始密码?
Windows 不走 syslog,临时密码写在 MySQL data 目录下的错误日志里,文件名通常是 主机名.err(比如 DESKTOP-ABC123.err)。路径一般为:
-
C:\ProgramData\MySQL\MySQL Server 8.0\Data\(隐藏目录,需开启显示隐藏文件) - 或你自定义的
datadir路径(查my.ini中的datadir配置项)
用记事本或 VS Code 打开该 .err 文件,Ctrl+F 搜 temporary password。注意:PowerShell 默认不支持直接 grep,可用 Select-String -Path "DESKTOP-ABC123.err" -Pattern "temporary password" 替代。
搜到了但登录失败?重点检查这三点
临时密码只允许首次登录,且必须立刻改密码,否则后续任何操作都会报错 ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.。常见卡点:
- 复制时多了一个空格或换行符:把密码粘贴进命令行后,用左右箭头确认光标前后无多余字符
- 密码含特殊字符未转义:比如
mysql -u root -p'abc@123!',单引号必须包住整个密码,不能漏 - host 匹配失败:日志里写的是
root@localhost,但你用的是mysql -h 127.0.0.1 -u root—— 这其实是不同账户,得查SELECT user, host FROM mysql.user;确认实际生效的 host 是什么
临时密码不是万能钥匙,它只管“第一次进门”,进门后第一件事就是执行 ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewPass123!';,否则连 SHOW DATABASES; 都会被拦住。











