游乐游手机版
首页/数据库/文章详情

MySQL数据库安全脚本mysql_secure_installation详细执行方式与操作指南

时间:2026-06-10 07:04
MySQL安装后需执行安全脚本,用于设置root密码、删除匿名用户、禁止root远程登录、删除测试数据库并重新加载权限表。依次响应脚本提示即可完成加固操作,有效提升数据库安全性,防止未授权访问。

MySQL mysql_secure_installation安全脚本执行

MySQL安装完成后,有一件事千万别偷懒:跑一遍安全脚本。默认安装留下的匿名用户、测试数据库和弱密码配置,在生产环境里就是一颗定时冲击波。`mysql_secure_installation`这个官方提供的交互式脚本,帮你一口气搞定下面这些核心安全加固任务: - 设置 MySQL root 用户密码 - 删除匿名用户 - 禁止 root 用户远程登录 - 删除测试数据库 - 重新加载权限表 下面就来一步步走通整个流程。

MySQL的mysql_secure_installation安全脚本执行方式

步骤 1

启动 mysql_secure_installation 脚本

打开终端,直接执行以下命令:
sudo mysql_secure_installation

步骤 2

输入当前的 MySQL root 密码

如果是首次安装,root用户默认没有密码,直接按 Enter 跳过就行。如果之前设过密码,就输入当前的。

步骤 3

设置新的 root 密码

脚本会询问是否需要设置新root密码。如果当前没有密码,强烈建议设一个强密码。输入Y并按Enter,然后根据提示完成密码设置。

步骤 4

删除匿名用户

默认安装会创建一个匿名用户,任何人只要知道IP就能空密码登录。输入Y并按Enter,直接移除这个风险点。

步骤 5

禁止 root 用户远程登录

限制root只能从本地连接,能有效防止密码被暴力猜解。输入Y并按Enter。

步骤 6

删除测试数据库

名为`test`的测试数据库默认对所有人开放权限,上线前必须删掉。输入Y并按Enter。

步骤 7

重新加载权限表

所有修改完,最后一步是让权限表立即生效。输入Y并按Enter,完成收尾。

完整示例

下面是执行脚本时的一组典型输出,标注了每个环节需要注意的选项:
Securing the MySQL server deployment.
Enter password for user root: (输入当前的 root 密码或直接按 Enter 如果没有密码)
The existing password for the user account root has expired. Please set a new password.
New password: (输入新的 root 密码)
Re-enter new password: (重新输入新的 root 密码)
VALIDATE PASSWORD PLUGIN can be used to test passwords and improve security.
It checks the strength of password and allows the users to set only those passwords which are secure enough.
Would you like to setup VALIDATE PASSWORD plugin?
Press y|Y for Yes, any other key for No: Y (根据需要选择是否启用密码验证插件)
Please set the password validation policy:
LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1 (选择密码验证策略)
Using existing password for root.
Estimated strength of the password: 100
Change the password for root ? ((Press y|Y for Yes, any other key for No) : N (如果刚刚设置了密码,这里选择 N)
… skipping.
By default, a MySQL installation has an anonymous user, allowing anyone
to log into MySQL without ha ving to ha ve a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y (删除匿名用户)
Success.
Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y (禁止 root 用户远程登录)
Success.
By default, MySQL comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y (删除测试数据库)
Dropping test database…
Success.
Removing privileges on test database…
Success.
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y (重新加载权限表)
Success.
All done!
到这一步,MySQL的安全基础就扎稳了。把这些设置纳入你的初始化流程,能少踩很多坑。
来源:https://www.jb51.net/database/365345i0i.htm
上一篇PostgreSQL密码复杂度验证与有效期完整代码示例 下一篇Ubuntu安装MySQL数据库及安全配置详细教程
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
金仓数据库逻辑备份实战:全库导出与模式替换全流程
数据库 · 2026-07-03

金仓数据库逻辑备份实战:全库导出与模式替换全流程

在长期的运维实践中,我越来越体会到,备份就像一份保险——平时看似无用,但关键时刻却是唯一的救命稻草。逻辑备份看似简单,可真正执行恢复时,各种陷阱接连浮现:表名大小写不一致、Schema 未正确切换、Owner 属性未同步修改……任何一个环节处理不当,最终恢复出的数据库就会与预期相去甚远。 本文将深入

金仓数据库sys_rman物理备份全流程演练与误覆盖恢复
数据库 · 2026-07-03

金仓数据库sys_rman物理备份全流程演练与误覆盖恢复

干运维这行,逻辑备份和物理备份我都接触过,但说句实在话,真正能在生产环境里扛住事儿的,还得是物理备份。逻辑备份导出的是 SQL 语句,数据量一大,那速度慢得让人抓狂,而且最关键的是,它没法做时间点恢复。物理备份不一样,它直接拷贝数据文件,再配上 WAL 归档日志,想恢复到过去哪一秒都行,这是它最硬核

Windows下将MySQL注册为系统自启服务教程
数据库 · 2026-07-03

Windows下将MySQL注册为系统自启服务教程

先说一个关键前提:务必以管理员身份运行终端,否则 mysqld --install 这条命令几乎不可能成功。问题不在于命令写错,而是 Windows 系统的用户账户控制(UAC)机制会在中途拦截——在普通 CMD 或 PowerShell 窗口执行这条命令,要么直接提示 Access is deni

Mac版Navicat中快速对比两个数据库的表结构异同
数据库 · 2026-07-03

Mac版Navicat中快速对比两个数据库的表结构异同

直接说结论:Mac 版 Navicat 和 Windows 版在表结构比对逻辑上完全一致。但默认配置下,它确实无法承受“全库一键比对上万张表”的压力。要想避免卡死、内存溢出、进度条永远停在 0%,你必须手动将表分批处理,或者利用前缀过滤来控制扫描范围。 为什么 Mac 上点击「结构同步」后界面会卡住

MySQL中UNION操作推荐用UNION ALL的原因
数据库 · 2026-07-03

MySQL中UNION操作推荐用UNION ALL的原因

MySQL中UNION与UNION ALL性能对比:别再被“保险”迷惑,差距远超预期 先给出核心结论:UNION ALL 的性能通常比 UNION 高出不止一个数量级。原因在于,UNION 在合并结果集后会自动触发去重操作,这往往伴随着隐式排序,进而产生临时表和文件排序。而 UNION ALL 则直