实训网站建设的总结,招商加盟的网站应该怎么做,少儿编程加盟店倒闭,开发一款游戏需要多少资金【PostgreSQL】表操作快速链接 创建表及基础表命令 修改表 表权限
创建对象时#xff0c;会为其分配所有者。所有者通常是执行创建语句的角色。对于大多数类型的对象#xff0c;初始状态是只有所有者#xff08;或超级用户#xff09;才能对对象执行任何操作。要允许其他角…【PostgreSQL】表操作快速链接 创建表及基础表命令 修改表 表权限
创建对象时会为其分配所有者。所有者通常是执行创建语句的角色。对于大多数类型的对象初始状态是只有所有者或超级用户才能对对象执行任何操作。要允许其他角色使用它必须授予权限。
有不同种类的特权SELECT、INSERT、UPDATE、DELETE、TRUNCATE和REFERENCES。适用于特定对象的权限因对象的类型表、函数等而异。有关这些特权含义的更多详细信息如下所示。以下各节和章节还将向您展示如何使用这些权限。 TRIGGER CREATE CONNECT TEMPORARY EXECUTE USAGE SET ALTER SYSTEM
可用的权限 SELECT 允许来自表、视图、实例化视图或其他类似表的对象的任何列或特定列。还允许使用 .引用 、 或 中的现有列值也需要此权限。对于序列此权限还允许使用该函数。对于大型对象此权限允许读取对象。SELECTCOPY TOUPDATEDELETEMERGEcurrval INSERT 允许将新行放入表、视图等。可以对特定列授予在这种情况下命令中只能将这些列分配给这些列因此其他列将接收默认值。还允许使用 .INSERTINSERTCOPY FROM UPDATE 允许表、视图等的任何列或特定列实际上任何重要的命令也需要特权因为它必须引用表列来确定要更新的行和/或计算列的新值。 除了权限之外还需要至少一列的此权限。对于序列此权限允许使用 and 函数。对于大型对象此权限允许写入或截断对象。UPDATEUPDATESELECTSELECT … FOR UPDATESELECT … FOR SHARESELECTnextvalsetval DELETE 允许从表、视图等中获取行实际上任何重要的命令也需要特权因为它必须引用表列来确定要删除的行。DELETEDELETESELECT TRUNCATE 允许在桌子上。TRUNCATE REFERENCES 允许创建引用表或表的特定列的外键约束。 TRIGGER 允许在表、视图等上创建触发器。 CREATE 对于数据库(database)允许在数据库中创建新的架构和发布并允许在数据库中安装受信任的扩展。 对于架构(schema)允许在架构中创建新对象。要重命名现有对象您必须拥有该对象并具有包含架构的此权限。 对于表空间(tablespace)允许在表空间内创建表、索引和临时文件并允许创建将表空间作为默认表空间的数据库。 请注意撤消此权限不会更改现有对象的存在或位置。 CONNECT 允许被授权者连接到数据库。此权限在连接启动时进行检查除了检查 施加的任何限制。pg_hba.conf TEMPORARY 允许在使用数据库时创建临时表。 EXECUTE 允许调用函数或过程包括使用在函数之上实现的任何运算符。这是适用于函数和过程的唯一特权类型。 USAGE 对于存储过程允许使用存储过程创建函数。这是适用于存储过程的唯一特权类型。 对于模式允许访问模式中包含的对象假设还满足对象自己的权限要求。从本质上讲这允许被授权者在模式中“查找”对象。如果没有此权限仍然可以查看对象名称例如通过查询系统目录。此外在撤消此权限后现有会话可能具有以前执行过此查找的语句因此这不是防止对象访问的完全安全的方法。 对于序列允许使用 currval 和nextval 函数。 对于类型和域允许在创建表、函数和其他架构对象时使用类型或域。请注意此权限不控制该类型的所有“用法”例如查询中出现的类型的值。它仅阻止创建依赖于类型的对象。此权限的主要用途是控制哪些用户可以创建对类型的依赖关系这可能会阻止所有者以后更改类型。 对于外部数据包装器允许使用外部数据包装器创建新服务器。 对于外部服务器允许使用服务器创建外部表。受赠者还可以创建、更改或删除与该服务器关联的自己的用户映射。
SET 允许在当前会话中将服务器配置参数设置为新值。虽然可以在任何参数上授予此权限但除了通常需要超级用户权限才能设置的参数外它没有任何意义。
ALTER SYSTEM 允许使用 ALTER SYSTEM 命令将服务器配置参数配置为新值。
下表使用上面显示的缩写总结了每种类型的 SQL 对象可用的权限。它还显示了可用于检查每个对象类型的权限设置的 psql 命令。
对象类型所有权限默认PUBLIC权限psql的命令DATABASECTcTc\lDOMAINUU\dDFUNCTION或PROCEDUREXX\dfFOREIGN DATA WRAPPERU没有\dewFOREIGN SERVERU没有\desLANGUAGEUU\dLLARGE OBJECTrw没有\dlPARAMETERsA没有\dconfigSCHEMAUC没有\dnSEQUENCErwU没有\dpTABLE和类似表格的对象arwdDxt没有\dpTable columnarwx没有\dpTABLESPACEC没有\dbTYPEUU\dT
已授予特定对象的权限显示为条目列表其中每个条目描述由特定授予者授予的一个被授权者的权限。 例如假设用户创建表并执行以下操作miriam mytable
GRANT SELECT ON mytable TO PUBLIC;
GRANT SELECT, UPDATE, INSERT ON mytable TO admin;
GRANT SELECT (col1), UPDATE (col1) ON mytable TO miriam_rw;然后 psql 的命令将显示\dp \dp mytableAccess privilegesSchema | Name | Type | Access privileges | Column privileges | Policies
--------------------------------------------------------------------------------public | mytable | table | miriamarwdDxt/miriam| col1: || | | r/miriam | miriam_rwrw/miriam || | | adminarw/miriam | |
(1 row)如果给定对象的“访问权限”列为空则表示该对象具有默认权限即PUBLIC其在相关系统目录中的权限条目为 null。如上所述默认权限始终包括所有者的所有权限并且可以包括一些取决于对象类型的权限。第一个GRANT或者REVOKE将实例化默认权限例如miriamarwdDxt/miriam然后根据指定的请求修改它们。同样条目仅针对具有非默认权限的列显示在“列权限”中。注意为此“默认权限”始终表示对象类型的内置默认权限。其权限受命令影响的对象将始终显示一个显式权限条目ALTER DEFAULT PRIVILEGES其中包括ALTER的效果。
修改表所有者
修改或销毁对象的权利是作为对象所有者所固有的本身不能授予或撤销。但是与所有特权一样该权限可以由拥有角色的成员继承;
例如ALTER可以使用对象的适当类型的命令将对象分配给新的所有者
ALTER TABLE table_name OWNER TO new_owner;超级用户总是可以做到这一点;普通角色只有在既是对象的当前所有者或继承了拥有角色的特权又能够担任新的拥有角色时才能执行此操作。
分配授权
要分配特权请使用 GRANT 命令。例如如果是现有角色并且是现有表则可以使用以下方式授予更新表的权限
GRANT UPDATE ON accounts TO joe;写入代替特定权限将授予与对象类型相关的所有权限。
GRANT ALL ON accounts TO joe;特殊的“角色”名称可用于向系统上的每个角色授予特权。此外当数据库有许多用户时可以设置“组”角色来帮助管理权限 — 有关详细信息。
撤销授权
要撤消以前授予的权限请使用适当命名的 REVOKE 命令
REVOKE ALL ON accounts FROM PUBLIC;通常只有对象的所有者或超级用户才能授予或撤消对对象的权限。但是可以“使用授予选项”授予特权这使接收者有权依次将其授予其他人。如果授予选项随后被撤销则所有从该接收者直接或通过一系列授予获得特权的人都将失去该特权。
对象的所有者可以选择撤消自己的普通权限例如将表设置为对自己和其他人只读。但所有者始终被视为持有所有授予选项因此他们始终可以重新授予自己的权限。