如何初始化mysql权限表_mysql权限表初始化方法

P粉602998670
发布: 2025-12-20 09:16:42
原创
778人浏览过
MySQL权限表初始化需按版本选择正确命令:5.7.6+用mysqld --initialize(生成随机root密码)或--initialize-insecure(空密码),5.7.5及更早用mysql_install_db,8.0+必须用--initialize且权限表转为数据字典表;初始化后须立即加固安全,包括修改root密码、删除匿名用户、限制远程访问并刷新权限。

如何初始化mysql权限表_mysql权限表初始化方法

MySQL 权限表初始化通常发生在首次安装 MySQL 后、尚未运行过 mysqld 服务时,或权限系统损坏需重建的情况下。核心是执行 mysql_install_db(旧版本)或 mysqld --initialize(5.7.6+ 推荐方式),后者会自动生成 root 密码并初始化数据目录中的系统表(含 mysql 库下的 userdbtables_priv 等权限表)。

确认 MySQL 版本与初始化方式

不同版本初始化逻辑差异较大,选错命令会导致失败或安全风险:

  • MySQL 5.7.6 及以上(推荐):使用 mysqld --initialize(默认生成随机 root 密码)或 mysqld --initialize-insecure(root 密码为空,仅用于测试环境)
  • MySQL 5.7.5 及更早:使用 mysql_install_db 脚本(已弃用,不支持新数据字典)
  • MySQL 8.0+:必须用 --initializemysql_install_db 已完全移除;权限表结构升级为数据字典表(如 mysql.role_edges),不再以 MyISAM 表形式存在

执行标准初始化流程(以 5.7.6+ 为例)

确保 MySQL 服务未运行,且数据目录(如 /var/lib/mysql)为空或已备份:

度加剪辑
度加剪辑

度加剪辑(原度咔剪辑),百度旗下AI创作工具

度加剪辑 380
查看详情 度加剪辑
  • 切换到 MySQL 用户(如 sudo -u mysql)避免权限问题
  • 运行:mysqld --initialize --user=mysql --basedir=/usr --datadir=/var/lib/mysql
  • 成功后查看错误日志(通常在 datadir 下的 hostname.err),其中包含类似 A temporary password is generated for root@localhost: xxxxxx 的提示
  • 启动 mysqld:systemctl start mysqldmysqld_safe --user=mysql &

初始化后必须完成的安全配置

初始化只是起点,权限表虽已生成,但默认策略宽松,需立即加固:

  • 用临时密码登录:mysql -u root -p,然后执行 ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourStrongPass123!';
  • 删除匿名用户:DROP USER ''@'localhost';
  • 限制 root 远程访问(除非必要):DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');,再执行 FLUSH PRIVILEGES;
  • 检查权限表完整性:SELECT host,user,authentication_string FROM mysql.user; 确认无异常空用户或宽泛 host

常见问题与绕过方案

若初始化失败或权限表损坏,不建议手动修改 mysql 库文件:

  • “Table 'mysql.user' doesn't exist”:说明数据目录未初始化或被误删,重新执行 --initialize 并确保 datadir 清空
  • 忘记临时密码且无法登录:Linux 下可停服务,加 --skip-grant-tables --skip-networking 启动,再用 UPDATE mysql.user SET authentication_string=PASSWORD('newpass') WHERE user='root'; 重置(8.0+ 改用 ALTER USER ... IDENTIFIED WITH mysql_native_password BY 'newpass';
  • Docker 环境:官方镜像在首次启动时自动调用 --initialize,通过 MYSQL_ROOT_PASSWORD 环境变量设置初始密码,无需手动操作

以上就是如何初始化mysql权限表_mysql权限表初始化方法的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号