1

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

有一个关于将单个表设置为只读的问题,但似乎它会拒绝用户创建其他表的能力;或者如果他们这样做了,他们就无法对他们做任何事情。似乎没有(或者我找不到)像 NTFS 中那样覆盖允许/授予的“拒绝”设置;从我读到的 REVOKE 只是与先前的 GRANT 相反,你不能“嵌套”它们。

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

4

2 回答 2

0

您可以通过压缩表使单个 MyISAM 表只读。myisampack在命令行上使用来打包表格。

更多信息可以在 MySQL 手册中找到:http: //dev.mysql.com/doc/refman/5.0/en/myisampack.html

于 2014-01-29T12:47:07.817 回答
0
GRANT SELECT ON example.* to 'someuser'@'somehost';

授予只读权限。

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

授予创建表权限。

于 2013-07-18T03:18:25.803 回答