MySQL初始化是首次安装后创建数据目录、系统数据库并生成初始root密码的过程;需检查/var/lib/mysql是否为空,非空则跳过;使用mysqld --initialize生成随机密码并记录于错误日志;启动服务后凭临时密码登录并强制修改密码。

MySQL 初始化是指首次安装后创建基础数据目录、系统数据库(如 mysql、sys、information_schema、performance_schema)并生成初始 root 密码的过程。不同版本和安装方式(二进制包、yum/apt、Docker)流程略有差异,但核心步骤一致。
确认 MySQL 未初始化过
初始化前需检查数据目录(默认通常为 /var/lib/mysql 或自定义路径)是否为空。若该目录下已有 ibdata1、mysql/、sys/ 等子目录或文件,说明已初始化,不可重复执行,否则会报错或损坏数据。
- 执行
ls -l /var/lib/mysql查看内容 - 若输出非空,跳过初始化,直接启动服务即可
- 若目录不存在,需先创建并赋权:
mkdir -p /var/lib/mysql && chown -R mysql:mysql /var/lib/mysql
使用 mysqld --initialize 初始化
这是官方推荐的初始化方式(MySQL 5.7+ 默认启用安全模式,生成随机 root 密码):
1.) 将所有文件解压到php环境中,本程序才用smarty+php+mysql设计。如果运行不了,请修改hhy文件夹下的smarty.php文件改法请看说明2.) 修改configs下的config.inc.php下的连接数据库的密码和用户名3.) 本程序没有做安全页面,人工导入sql.inc到mysql数据库。管理员初始化帐号为admin,密码为hhy。后台地址:http://你的网站地址/h
- 命令示例:
mysqld --initialize --user=mysql --basedir=/usr --datadir=/var/lib/mysql -
--initialize:生成数据文件 + 随机 root 密码(密码会打印在错误日志中,通常是/var/log/mysqld.log) -
--initialize-insecure:不生成密码(root 密码为空),仅用于测试环境,不建议生产使用 - 确保
my.cnf中未配置skip-grant-tables,否则初始化会失败
启动服务并首次登录
初始化成功后,启动 mysqld 服务:
- systemd 环境:
systemctl start mysqld - 查看日志获取临时密码:
grep 'temporary password' /var/log/mysqld.log - 用临时密码登录:
mysql -u root -p,输入日志中的密码 - 首次登录后必须修改密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewPass123!';
可选:初始化时指定配置文件与字符集
为避免后续乱码或兼容问题,建议在初始化前配置好 my.cnf:
- 在
[mysqld]段落添加:
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
default-storage-engine = InnoDB - 初始化命令中可显式指定配置文件:
mysqld --defaults-file=/etc/my.cnf --initialize ... - 注意:配置文件中不能包含
socket、pid-file等运行时参数,否则初始化可能失败









