mysql安装后如何初始化数据库_mysql初始配置步骤

来源:这里教程网 时间:2026-02-28 20:45:45 作者:

mysql_install_db 已被弃用,新版本必须用 mysqld --initialize

MySQL 5.7.6 及以后版本(包括 MySQL 8.0)彻底移除了

mysql_install_db
脚本。如果你在执行它时报错
command not found
或提示
deprecated
,不是路径问题,而是它根本不存在了。必须改用
mysqld --initialize
启动初始化流程。

常见错误现象:

mysqld: Can't create/write to file '/var/lib/mysql/is_writable'
—— 表明数据目录权限不对或已存在残留文件。

确保
/var/lib/mysql
(或你指定的
--datadir
路径)为空且属主为
mysql
用户(如
chown -R mysql:mysql /var/lib/mysql
首次运行必须加
--initialize
(生成 root 临时密码)或
--initialize-insecure
(root 密码为空,仅限测试环境)
若提示
Can't find error-message file
,说明未正确设置
--basedir
,需显式指定(例如
--basedir=/usr

初始化后如何获取 root 临时密码

使用

--initialize
时,MySQL 会把 root 的一次性初始密码写入错误日志(不是 stdout),不看日志就无法登录。这个密码只在首次启动时有效,后续必须用
ALTER USER
修改。

查日志位置:先确认配置中
log-error
的值,通常在
/etc/my.cnf
/etc/mysql/mysql.conf.d/mysqld.cnf
里;默认路径是
/var/log/mysqld.log
(RHEL/CentOS)或
/var/log/mysql/error.log
(Debian/Ubuntu)
执行
sudo grep 'temporary password' /var/log/mysqld.log
即可提取密码
如果日志为空,说明初始化失败或用了
--initialize-insecure
,此时 root 密码为空,但必须尽快加固

mysqld_safe 不再推荐,直接用 systemctl 或 mysqld 启动服务

mysqld_safe
是旧版包装脚本,MySQL 5.7+ 默认不再安装它(尤其在官方 tar.gz 包中)。强行调用可能报错
command not found
或启动后立即退出。

推荐方式:用
systemctl start mysqld
(RHEL/CentOS)或
sudo service mysql start
(Debian/Ubuntu)
手动启动调试时,用
mysqld --user=mysql --datadir=/var/lib/mysql --basedir=/usr
,注意所有路径必须准确,且不要后台运行(去掉
--daemonize
方便看日志)
如果报
Failed to find valid data directory
,大概率是
--datadir
下缺少
mysql
系统库(即初始化没成功)

初始化完成后必须立即执行的安全配置

临时密码只能用于首次登录,之后 MySQL 会拒绝任何操作,直到你重置密码并完成基础安全设置。跳过这步会导致后续所有命令(包括创建用户、导入数据)失败。

登录:
mysql -u root -p
,粘贴日志里的临时密码
立刻执行:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourStrongPass123!';
运行
mysql_secure_installation
(交互式脚本):禁用匿名用户、禁止 root 远程登录、删除 test 库、重载权限表
若遇到
ERROR 1820 (HY000): You must reset your password
,说明密码过期策略生效,必须先用
SET PASSWORD = PASSWORD('xxx');
(MySQL 5.7)或
ALTER USER ... IDENTIFIED BY
(MySQL 8.0+)
初始化真正卡住的地方,往往不是命令敲错,而是目录权限、日志路径、密码获取方式这三个点来回纠缠。尤其是多实例部署时,
--datadir
--socket
不匹配,会导致服务看似启动成功,实则无法连接。

相关推荐