mysql - 如何将某些表设置为只读但允许用户创建新表?

标签 mysql

我正在与其他一些合作者一起从事一些数据项目。大多数都是 SQL 的新手,所以询问我是否可以将“原始”数据表设置为只读,这样它们就不会被意外更改,我将如何去做?目前所有用户都有 GRANT SELECT ON mydb.* TO 'user'@'%' 权限,但我需要更开放一些。

有一个关于制作 single table read-only 的问题,但它似乎会拒绝用户制作其他表格的能力;或者即使他们这样做了,他们也无法对他们做任何事情。似乎没有(或者我找不到)像 NTFS 中那样覆盖允许/授权的“拒绝”设置;从我读到的 REVOKE 只是与先前的 GRANT 相反,你不能“嵌套”它们。

我正在考虑制作一个单独的“原始”数据库,该数据库只能用于 SELECT,以便用户可以将其复制到“工作区”数据库中,但这似乎有点老套,并且会占用我的一些半显着空间预算云服务器。什么是正确的解决方案?

最佳答案

GRANT SELECT ON example.* to 'someuser'@'somehost';

授予只读权限。

GRANT CREATE ON example TO 'someuser'@'somehost';

授予创建表权限。

关于mysql - 如何将某些表设置为只读但允许用户创建新表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17713886/

相关文章:

c# - CheckedListBoxControl Devexpress C# ---- 将所有项目保存在 MysQL 数据库中

PHP MySQLi 准备好的语句 - 我应该包括所有字段吗?

php - 防止MySQL中的多个数据条目

database - mysql查询帮助?

sql - mysql仅在用户不存在时创建用户

python - sqlalchemy 出现神秘错误 : TypeError 'User' object is not callable

mysql - 使用左连接或右连接连接四个表

mysql - MySQL Workbench 中 & 符号转换为 And 字符串

php - 如何通过 Zend Framework 2 加入 LIKE

mysql - 查询以选择自上次成功以来的所有行