作者:用户fkise9sswv | 来源:互联网 | 2024-12-26 11:37
本文由瀚高PG实验室撰写,详细介绍了如何在PostgreSQL中创建、管理和删除模式。文章涵盖了创建模式的基本命令、public模式的特性、权限设置以及通过角色对象简化操作的方法。
作者:瀚高PG实验室 (Highgo PG Lab)
1. 创建模式:
CREATE SCHEMA myschema;
该命令用于创建一个名为myschema的模式。创建后,此模式将包含自己的逻辑对象集合,如表、视图和函数等。
2. public模式:
每当创建一个新的数据库时,PostgreSQL会自动创建一个public模式。如果没有特别指定,默认情况下所有操作都将在public模式下进行,例如:
CREATE TABLE products( ... ) 等同于 CREATE TABLE public.products ( ... )。
3. 权限管理:
默认情况下,用户无法访问不属于他们的模式中的对象。为了使用户能够查看和使用这些对象,模式的所有者需要授予相应的权限。例如:
GRANT ALL ON SCHEMA myschema TO public;
这将授予CREATE和USAGE两种权限。如果public模式拥有myschema模式的CREATE权限,则用户可以在myschema中创建新对象,如:
CREATE TABLE myschema.products ( product_no integer, name text, price numeric CHECK (price > 0) );
4. 默认权限设置:
为确保模式下的所有表和序列对象具有适当的权限,可以使用如下命令:
ALTER DEFAULT PRIVILEGES IN SCHEMA myschema GRANT INSERT, SELECT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER ON TABLES TO public;
ALTER DEFAULT PRIVILEGES IN SCHEMA myschema GRANT SELECT, UPDATE, USAGE ON SEQUENCES TO public;
ALTER DEFAULT PRIVILEGES IN SCHEMA myschema GRANT EXECUTE ON FUNCTIONS TO public;
5. 使用角色对象简化操作:
创建一个与模式关联的角色对象,可以使用户直接登录并操作该模式。例如:
CREATE ROLE myschema LOGIN PASSWORD '123456';
CREATE SCHEMA myschema AUTHORIZATION myschema;
在Linux Shell中以myschema角色登录到数据库MyTest,并输入正确密码即可成功登录。
6. 删除模式:
DROP SCHEMA myschema;
若要删除模式及其所有对象,请使用级联删除:
DROP SCHEMA myschema CASCADE;