xzy*_*fer 27 mysql privileges grant user-permissions
我一直无法找到合理的解决方案来实现以下目标:
我希望有一个用户拥有数据库(或具有相同模式的一系列数据库)的所有权限,除了一个表,他们只有SELECT权限.
基本上我希望用户可以自由统治数据库但不能更新特定的表.
到目前为止,我已经尝试过,但无济于事:
授予该数据库的所有权限(db_name.*),然后专门授予该所需表的select权限(希望它会覆盖"all",我知道这是愚蠢的).
授予该数据库的所有权限(db_name.*),然后撤消插入,更新和删除.但是这产生了一个错误,表明db_name.table_name没有授权规则.
从我能够收集的内容来看,除了只读表之外,我必须单独授予数据库每个表的所有权限.
请有人告诉我有一个更简单的方法
注意:我正在运行MySQL 5.1.Ubuntu 10.04上的最新版本.
小智 36
我知道这是一个老帖子,但我想我会加入@tdammers问题让别人看.您还可以在information_schema.tables上执行SELECT CONCAT以创建grant命令,而不必编写单独的脚本.
首先撤消该db的所有权限:
REVOKE ALL PRIVILEGES ON db.* FROM user@localhost;
Run Code Online (Sandbox Code Playgroud)
然后创建GRANT语句:
SELECT CONCAT("GRANT UPDATE ON db.", table_name, " TO user@localhost;")
FROM information_schema.TABLES
WHERE table_schema = "YourDB" AND table_name <> "table_to_skip";
Run Code Online (Sandbox Code Playgroud)
将结果复制并粘贴到MySQL客户端并运行它们.
AFAIK,是的,您需要为每个表单独授予.但是,嘿,你那里有一台电脑.计算机非常适合为您自动执行重复性任务,那么为什么不制作执行以下操作的脚本:
SHOW TABLES;)或者,或者:2.对于列表中的每个项目,检查它是否是特殊表格; 如果不是,则授予所有权限
我没有提供代码的原因是它可以用任何带有MySQL工具的脚本语言来完成,甚至是shell脚本; 使用你最舒服的东西.
| 归档时间: |
|
| 查看次数: |
26090 次 |
| 最近记录: |