mysql如何防止用户重命名数据库_限制ALTER与RENAME权限

张开发
2026/4/19 0:46:49 15 分钟阅读

分享文章

mysql如何防止用户重命名数据库_限制ALTER与RENAME权限
RENAME DATABASE 在 MySQL 5.7.23 已被彻底移除无法通过权限禁用替代方案是新建库导出导入删旧库需通过收回 CREATE、DROP 和跨库写入权限来阻断“伪重命名”链。MySQL 里 RENAME DATABASE 已被移除别白费劲去禁用它MySQL 5.7.23 之后RENAME DATABASE 语句直接被删了执行会报错ERROR 1064 (42000): You have an error in your SQL syntax。所以你根本不需要、也没法通过权限控制去“禁用”这个命令——它压根不存在了。真正能重命名数据库的惯用做法是新建库 导出导入 删旧库或者用 mysqldump mysql 命令组合。这类操作不依赖单条 SQL 权限而是靠用户能否连上、能否创建库、能否读写表来间接控制。禁止用户用 ALTER DATABASE 修改库级属性ALTER DATABASE 本身不改库名但能改默认字符集、排序规则等属于库级元数据操作。如果不想让用户调整这些得收回 ALTER 权限REVOKE ALTER ON old_db.* FROM user%;注意权限粒度是 ON database_name.*不是 ON database_name后者语法错误如果用户有 ALL PRIVILEGES必须显式 REVOKE ALTER因为 MySQL 不支持“部分回收 ALL”执行后记得 FLUSH PRIVILEGES;否则权限变更不生效真正防“重命名效果”的关键锁死建库和删库权限用户绕过 RENAME 实现重命名典型路径是CREATE DATABASE new_db → CREATE TABLE new_db.t AS SELECT * FROM old_db.t或用 mysqldump 导入。要阻断这条链得卡住三个环节 Convai Technologies Inc. 对话式 AI API用于设计游戏和支持端到端的语音交互

更多文章