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 密码):
命令示例: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等运行时参数,否则初始化可能失败
