You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu22运行mysql_secure_installation保留root的auth_socket方案

保留auth_socket认证完整执行MySQL安全加固的方法

mysql_secure_installation的报错本质是交互流程默认强制要求为root用户设置密码,没有适配auth_socket认证无需密码的场景,不需要修改root认证插件,按以下步骤操作即可完成全部加固项:

前置校验

先执行以下命令登录MySQL,确认root用户当前认证插件配置:

sudo mysql

在MySQL命令行执行查询:

SELECT user, host, plugin FROM mysql.user WHERE user='root' AND host='localhost';

返回结果中plugin字段值为auth_socket即为符合预期,执行exit退出MySQL命令行。

非交互执行安全加固

MySQL 8.0.29版本自带的mysql_secure_installation支持通过参数跳过密码修改环节,直接执行以下命令即可完成全部安全配置,全程不会触发SET PASSWORD报错:

sudo mysql_secure_installation \
  --auth-socket=root \
  --skip-change-root-password \
  --remove-anonymous-users \
  --disallow-root-remote-login \
  --remove-test-db \
  --reload-privilege-tables

各参数对应加固项和交互流程完全一致:

  • --auth-socket=root:告知脚本root用户使用auth_socket认证,无需存储服务端密码凭据
  • --skip-change-root-password:跳过root密码修改流程,从根源避免报错
  • --remove-anonymous-users:删除所有匿名用户
  • --disallow-root-remote-login:禁止root账号从远程地址登录
  • --remove-test-db:删除默认test测试库及相关访问权限
  • --reload-privilege-tables:刷新权限表让配置立即生效

结果验证

命令执行完成后,重新通过sudo mysql登录,执行以下查询确认配置生效:

  • 认证插件校验:重复前置校验的查询语句,确认root@localhost的plugin值仍为auth_socket
  • 匿名用户校验:执行SELECT user, host FROM mysql.user WHERE user='';,返回空结果即为正常
  • 远程登录限制校验:执行SELECT user, host FROM mysql.user WHERE user='root' AND host NOT IN ('localhost', '127.0.0.1', '::1');,返回空结果即为正常
  • 测试库校验:执行SHOW DATABASES LIKE 'test';,返回空结果即为正常

低版本兼容方案

如果使用的MySQL版本不支持上述非交互参数,直接手动执行等价SQL即可,加固效果完全一致:

sudo mysql -e "
DELETE FROM mysql.user WHERE User='';
DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');
DROP DATABASE IF EXISTS test;
DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';
FLUSH PRIVILEGES;
"

内容的提问来源于stack exchange,提问作者Cheradenine Zakalwe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 16:32:30