在 CentOS 8 上手动安装 MySQL 后,初始密码的位置取决于安装方式。以下是查找密码的步骤:
1. 通过 yum/dnf
安装的 MySQL 8.0
如果使用官方 RPM 源安装,初始密码会在安装时自动生成并记录在日志中:
# 查看 MySQL 初始密码
sudo grep 'temporary password' /var/log/mysqld.log
输出类似:
[Note] A temporary password is generated for root@localhost: AbcDeFg123!
密码:AbcDeFg123!
(示例,实际以你的输出为准)
2. 手动初始化的 MySQL(mysqld --initialize
)
如果你手动执行了 mysqld --initialize
,密码会生成在当前目录下的日志中:
# 查找包含临时密码的日志文件(根据初始化时的路径)
sudo grep 'temporary password' /var/log/mysqld.log # 默认路径
# 或
sudo grep 'temporary password' /path/to/your/log/file.log # 自定义路径
3. 无密码初始化(不安全,不推荐)
如果在初始化时使用了 --skip-grant-tables
参数,MySQL 会无密码启动。这种情况下,需要重置 root 密码:
# 1. 停止 MySQL 服务
sudo systemctl stop mysqld
# 2. 以跳过权限验证的方式启动
sudo mysqld_safe --skip-grant-tables &
# 3. 无密码登录
mysql -u root
# 4. 在 MySQL 命令行中重置密码
USE mysql;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewPassword123!';
FLUSH PRIVILEGES;
EXIT;
# 5. 停止 MySQL 服务
sudo pkill mysqld
# 6. 正常启动 MySQL
sudo systemctl start mysqld
4. 忘记密码后的重置方法
如果忘记了密码,可以通过以下步骤重置:
# 1. 停止 MySQL 服务
sudo systemctl stop mysqld
# 2. 创建临时配置文件
echo "skip-grant-tables" | sudo tee -a /etc/my.cnf
# 3. 启动 MySQL
sudo systemctl start mysqld
# 4. 无密码登录并重置密码
mysql -u root
USE mysql;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewPassword123!';
FLUSH PRIVILEGES;
EXIT;
# 5. 停止 MySQL,移除临时配置
sudo systemctl stop mysqld
sudo sed -i '/skip-grant-tables/d' /etc/my.cnf
# 6. 正常启动 MySQL
sudo systemctl start mysqld
5. 验证密码是否生效
mysql -u root -p
# 输入新密码后能登录即成功
密码安全建议
- 密码必须包含大小写字母、数字和特殊字符,长度至少 8 位。
- 生产环境建议使用
mysql_secure_installation
命令进一步加固安全:sudo mysql_secure_installation
注意事项
- 版本差异:MySQL 5.7 和 8.0 的密码策略不同,8.0 要求更严格的密码复杂度。
- 日志位置:如果自定义了数据目录,日志路径可能不同,需通过
my.cnf
配置文件查找。