mysql8出现The MySQL server is running with the --skip-grant-tables option so it cannot execute

本文解决了一个常见的MySQL错误:当服务器以--skip-grant-tables选项运行时无法执行CREATE USER语句的问题。通过先执行flush privileges命令,然后再次尝试创建用户,可以成功绕过此限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

执行以下语句的时候

mysql> CREATE USER 'appleyuchi'@'%' IDENTIFIED with mysql_native_password  BY 'appleyuchi';
出现:

ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

解决方案:

先执行

mysql> flush privileges;

然后再

mysql> CREATE USER 'appleyuchi'@'%' IDENTIFIED with mysql_native_password  BY 'appleyuchi';

即可

### MySQL `--skip-grant-tables` 导致无法执行语句的原因分析 当使用 `--skip-grant-tables` 启动 MySQL 服务时,服务器会绕过权限验证机制[^4]。这意味着所有的用户无需密码即可访问数据库,并拥有最高权限。然而,在某些情况下,可能会遇到 SQL 语句无法正常执行的情况。 #### 原因解析 1. **SQL Mode 的影响**: 当启用 `--skip-grant-tables` 参数后,MySQL 可能默认启用了严格的 SQL 模式 (Strict SQL Mode),这可能导致一些不符合语法标准的查询被拒绝执行。 2. **日志记录冲突**: 在特定版本中,如果同时指定了其他参数(如 `--shared-memory` 或者 `--console`),可能引发内部冲突,从而阻止正常的命令执行[^3]。 3. **多实例运行问题**: 如果在同一台机器上有多个 MySQL 实例正在运行,则新启动的服务端口或套接字文件可能发生冲突,进而干扰命令处理过程。 4. **配置文件设置不当**: 配置文件中的某些选项(比如插件加载路径、字符集定义等)也可能与当前环境不符,造成异常行为。 --- ### 解决方案 以下是针对上述原因提出的解决方案: #### 方法一:调整 SQL 模式 尝试通过显式指定宽松模式来规避潜在限制: ```sql SET GLOBAL sql_mode=''; ``` 此方法适用于由严格模式引起的执行失败情况。注意该操作仅临时生效直到下次重启为止;若需永久改变,请编辑 my.cnf 文件并添加如下内容至 `[mysqld]` 下面: ```ini sql-mode="" ``` #### 方法二:单独开启服务而不附加额外参数 避免混杂过多不必要的开关标志位,例如去掉 `--shared-memory` 和 `--console` 这类非必要项后再重新激活服务: ```bash mysqld_safe --skip-grant-tables & ``` 或者对于 systemd 控制的 Linux 发行版来说, ```bash systemctl stop mysql.service && systemctl set-environment MYSQLD_OPTS="--skip-grant-tables" && systemctl start mysql.service ``` 完成之后再连接到 shell 并重设 root 用户的新密码: ```sql FLUSH PRIVILEGES; ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'; ``` #### 方法三:排查进程间相互作用 确认是否有重复监听相同地址/端口号的现象存在。利用 netstat 工具查看开放状况以及 lsof 查找占用资源实体: ```bash netstat -tulnp | grep :3306 lsof -iTCP:3306 -sTCP:LISTEN ``` 若有发现竞争现象则考虑变更目标实例绑定 IP 地址或是切换工作端口号数。 #### 方法四:修正初始化脚本错误 有时安装包自带的 init.d 脚本里预设了一些不合实际需求的行为逻辑,建议手动编写简易控制单元代替原有方式实现精确管理目的。 最后别忘了恢复正常状态下的安全防护措施! --- ### 注意事项 尽管跳过了授权表能够快速恢复访问能力,但从长远来看并不推荐长期维持这种无保护的状态因为存在着极大的安全隐患风险。一旦解决问题就应当立即移除相关参数恢复正常运作流程。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值