权限
当你创建一个数据库对象时,你就称为它的所有者。默认情况下,只有对象的所有者和超级管理员可以
对它进行任何操作。要允许其他角色使用它,必须要经过权限授予。
OushuDB中好多种不同的权限:SELECT, INSERT, DELETE, TRUNCATE, REFERENCES, TRIGGER, CREATE, CONNECT, TEMPORARY, EXECUTE 和 USAGE 。适用于特定对象的权限因对象类型不同而不 同。
修改或者删除一个对象的权限是对象所有者独有的权限。要改变一个表、索引、序列或者视图的所有 者,可以使用ALTER TABLE命令,对于其他的类型也有相应的ALTER命令。
要赋予权限,可以使用GRANT命令。如果fred是一个已经存在的用户,而department是一个已经存在 的表,可以用下面的命令更新表的权限:
在权限的位置写上ALL则赋予所有与该对象类型相关的权限。 授权给名为PUBLIC的特殊”用户”可以用于将权限赋予系统中的所有用户。 另外,还可以使用”组”角色来
帮助管理一群用户的权限。 最后,我们可以使用REVOKE命令撤销权限:
ALTER ROLE name CREATEROLE CREATEDB;
ALTER ROLE name WITH PASSWORD 'newpassword';
ALTER ROLE name WITH PASSWORD NULL;
GRANT UPDATE ON department TO fred;
REVOKE ALL ON accounts FROM PUBLIC;
对象所有者总是隐含地拥有DROP, GRANT, REVOKE 等特殊权限,并且不能赋予或者撤销。
但是对象所有者可以选择撤销自己的普通权限,比如把一个表做成对自己和别人都是只读的。