mysql server is running with the –skip-grant-tables option
The MySQL server is running with the –skip-grant-tables option so it cannot execute this statement 意思貌似MYSQL还运行在 –skip-grant-tables模式,如何让他回到原来的模式 第一种方法:原来在mysql.ini文件中配置了skip-grant-tables,前面加个#注释掉就可以了 修改mysql的配置文件,把skip-grant-tables去掉后,重启mysql 第二种: The MySQL server is running with the –skip-grant-t MySQL服务器在运行时使用了`--skip-grant-tables`选项,这表示它不执行权限检查,即系统在启动时不加载权限表,允许任何用户无需密码即可登录。这种模式主要用于数据库系统的紧急维护或权限恢复。然而,当你需要执行涉及权限的操作时,服务器会给出“无法执行此语句”的错误,因为在这种模式下,MySQL无法处理与权限相关的操作。 要将MySQL服务器从`--skip-grant-tables`模式恢复到正常模式,有两种主要方法: 1. **修改配置文件**: 在大多数情况下,`--skip-grant-tables`是通过在`my.cnf`或`my.ini`(配置文件名称可能因系统而异)中设置`skip-grant-tables`来启用的。要恢复到正常模式,你需要编辑这个配置文件,找到`skip-grant-tables`行并在前面添加一个`#`来注释掉这一行。保存更改后,重新启动MySQL服务。命令通常为`sudo service mysql restart`或`sudo systemctl restart mysql`,具体取决于你的操作系统。 2. **动态修改服务器状态**: 如果你无法立即重启MySQL服务,可以尝试以下步骤: - 你可能需要取消新主库的只读属性,通过执行`mysql> SET GLOBAL read_only=0;`。 - 然后,刷新权限以应用更改:`mysql> FLUSH PRIVILEGES;`。 - 如果你遇到错误,提示“不可能写入二进制日志,因为BINLOG_FORMAT = STATEMENT”,这可能是因为某些表使用了限制只能记录行级别的存储引擎,例如InnoDB在READ COMMITTED或READ UNCOMMITTED事务隔离级别下。这时,你需要将二进制日志格式改为ROW: ``` mysql> SET SESSION binlog_format = 'ROW'; mysql> SET GLOBAL binlog_format = 'ROW'; ``` - 你可以将服务器设置回只读模式,执行`mysql> SET GLOBAL read_only=1;`,再次刷新权限。 使用这些命令后,你应该能够执行权限相关的语句。记得检查`read_only`变量的状态,以确保更改已生效: ``` mysql> SHOW VARIABLES LIKE '%read_only%'; ``` 请注意,这些操作可能需要具有超级用户权限(如root)。在进行此类更改时,确保你了解可能的风险,并在必要时备份你的数据。此外,确保在完成维护工作后,关闭只读模式,以便数据库系统能正常处理权限控制,以保持数据库的安全性。
- 粉丝: 8
- 资源: 901
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助