如何在mysql中配置初始用户和密码_mysql用户初始化方法

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

MySQL 安装完成后,初始化用户和设置密码是保障数据库安全的第一步。不同版本的 MySQL(如 5.7 及以上)在安装过程中会自动生成临时密码,而有些安装方式则需要手动初始化用户权限表。以下是几种常见的 MySQL 用户初始化方法及配置初始用户和密码的操作步骤。

1. 使用 mysql\_install\_db 或 mysqld --initialize 初始化数据目录

在较早版本的 MySQL 中,使用 mysql_install_db 脚本初始化数据目录并创建系统表(包括用户表)。从 MySQL 5.7.6 开始,推荐使用 mysqld --initialize 命令。

执行以下命令初始化数据目录(假设数据目录为 /var/lib/mysql):

mysqld --initialize --user=mysql --basedir=/usr --datadir=/var/lib/mysql

该命令会:

生成 root 用户的临时随机密码(记录在错误日志中,通常位于 /var/log/mysqld.log) 创建数据字典和权限表(如 mysql.user)

查看临时密码:

grep 'temporary password' /var/log/mysqld.log

2. 首次登录并修改 root 密码

使用上一步获取的临时密码登录 MySQL:

mysql -u root -p

登录后立即修改 root 用户密码(MySQL 5.7+ 默认使用 validate_password 插件,密码需满足强度要求):

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass123!';

如果提示密码太弱,可先调整密码策略:

SET GLOBAL validate_password.policy = LOW;
SET GLOBAL validate_password.length = 6;

3. 创建额外管理用户(可选但推荐)

为安全起见,建议不要长期使用 root 账户进行日常操作。可创建一个具有管理员权限的新用户:

CREATE USER 'admin'@'%' IDENTIFIED BY 'AdminPass123!';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

之后可通过该用户远程连接管理数据库。

4. 忘记临时密码或跳过密码初始化

若无法获取临时密码,可临时跳过权限验证来重置密码:

编辑 my.cnf,在 [mysqld] 段添加:
skip-grant-tables
重启 MySQL 服务 无需密码登录:
mysql -u root
执行:
UPDATE mysql.user SET authentication_string = PASSWORD('newpass') WHERE User = 'root';
(MySQL 5.7 以前)
或:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpass';
移除 my.cnf 中的 skip-grant-tables 并重启服务

基本上就这些。关键是在初始化阶段正确生成权限表,并及时设置强密码。生产环境中务必限制 root 远程登录,使用专用账户管理数据库。

相关推荐