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

时间:2013-07-18 03:13:13

标签: mysql

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

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

我正在考虑制作一个单独的'原始'数据库,这个数据库只有SELECT,所以用户可以将它复制到'工作区'数据库中,但这看起来有点hacky并且会占用我的一些半空间。预算云服务器。什么是正确的解决方案?

2 个答案:

答案 0 :(得分:0)

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

授予只读权限。

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

授予create table特权。

答案 1 :(得分:0)

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

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