linux下mysql安装后初始密码默认写入错误日志,首选命令为sudo grep 'temporary password' /var/log/mysqld.log,若无结果则依次检查/var/log/mysql/error.log、/usr/local/mysql/data/*.err等路径;查不到时可用--skip-grant-tables方式重置,但须确保环境安全。

Linux下MySQL安装完成后,初始密码一般不在配置文件里明文写死,也不会弹窗提示——它被记在日志里,必须用命令去“挖”。找不到,基本是因为路径不对、权限不够,或你用的不是标准安装方式。
grep 'temporary password' /var/log/mysqld.log 是最常用且大概率有效的命令
MySQL 5.7 及以后版本(包括 8.0)在首次初始化时,会自动生成一个临时密码,并写入错误日志。默认路径是 /var/log/mysqld.log,执行以下命令即可提取:
sudo grep 'temporary password' /var/log/mysqld.log
输出类似这样:
2026-09-15T08:33:22.123456Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: Xy7#mQ!pL9vR
冒号后面那一串就是你要的密码,注意保留大小写和特殊字符。
- 如果提示
Permission denied,必须加sudo;没权限读不到日志 - 如果命令返回空,不代表没生成密码,只是日志不在这个路径——别停,继续查备选位置
- 某些云镜像或容器环境可能禁用了该日志记录,此时需换方法
查不到 /var/log/mysqld.log?试试这几个常见替代路径
不同发行版或安装方式(如 apt、deb 包、二进制部署)会导致日志路径偏移。优先按顺序试:
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
-
sudo grep 'temporary password' /var/log/mysql/error.log(Ubuntu/Debian 系统更常见) -
sudo grep 'password' /usr/local/mysql/data/*.err(源码编译或自定义--datadir时) -
sudo cat /root/.mysql_secret 2>/dev/null | tail -n1 | awk '{print $NF}'(部分旧版或 Kali 镜像会写这里)
如果连 .err 文件都找不到,可用 find / -name "*.err" 2>/dev/null | head -5 快速定位错误日志所在目录。
mysql_config_editor print --all 可能泄露密码,但仅限已成功登录过的客户端
这个命令只对曾经用 mysql_config_editor set 存过凭据的机器有效,不是查初始密码的正路:
mysql_config_editor print --all
如果输出里有 [client] 段并带 password 字段,说明有人之前存过——但这和安装时生成的初始密码无关,很可能是后续手动设置的。
- 多数新装系统不会提前运行
mysql_config_editor,所以这条命令大概率报错或为空 - 它不读服务端日志,也不触发 MySQL 初始化流程,纯属客户端缓存工具
- 依赖它找初始密码,等于指望别人帮你记了密码——不可靠
跳过日志直接重置?可以,但代价是停服务 + 临时开放无鉴权访问
当所有日志路径都查不到,或者 mysqld 根本没成功启动过(比如初始化失败),就得走重置流程:
- 先停服务:
sudo systemctl stop mysqld(或mysqld.service,依实际名而定) - 临时加启动参数:
sudo mysqld_safe --skip-grant-tables --skip-networking &(--skip-networking防止远程未授权连接) - 免密登录后执行:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewPass123!'; FLUSH PRIVILEGES; - 杀掉
mysqld_safe进程,再正常启服务:sudo systemctl start mysqld
这方法有效,但本质是绕过认证机制,操作窗口内任何本地用户都能连上 MySQL——务必确保操作环境可信,且完成后立刻重启服务恢复鉴权。
真正容易被忽略的点:MySQL 8.0+ 的 authentication_string 字段已弃用,直接 update user 表会失败;必须用 ALTER USER 语句,且新密码要满足默认的密码强度策略(至少 8 位、大小写字母+数字+特殊字符)。










