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 远程登录,使用专用账户管理数据库。
