📜  PostgreSQL – 删除角色

📅  最后修改于: 2022-05-13 01:57:15.045000             🧑  作者: Mango

PostgreSQL – 删除角色

PostgreSQL 中使用DROP ROLE语句删除角色。

Syntax: DROP ROLE [IF EXISTS] target_role;

我们来分析一下上面的语法:

  • 在 DROP ROLE 关键字后添加要删除的角色名称。
  • 使用 IF EXISTS 选项可用于在请求删除不存在的角色时发出通知而不是错误。

需要注意的是,要删除超级用户角色,必须是超级用户。要删除非超级用户角色,您需要使用 CREATE ROLE 语句创建角色的 previlage。如果我们不小心尝试删除已在任何数据库中引用的角色,PostgreSQL 将引发错误。在这种情况下,必须采取两个步骤:

  • 您需要使用 DROP OWNED 语句删除该特定角色拥有的数据库对象,或者使用 REASSIGN OWNED 语句将数据库对象的所有权重新分配给另一个角色。
  • 您还需要撤销授予该角色的所有其他权限。

换句话说,完全按照下面的语句删除角色:

REASSIGN OWNED BY target_role TO another_role;
DROP OWNED BY target_role;


DROP ROLE target_role;

例子:



在这个例子中:

  • 在这里,我们将创建一个名为 geeksforgeeks 的新角色,并使用该角色创建一个名为Employees的表。
  • 然后,我们将展示如何从 PostgreSQL 数据库服务器中删除角色 geeksforgeeks 的分步指南。

首先,使用Postgres角色登录 PostgreSQL:

psql -U postgres

其次,使用以下语句创建一个名为geeksforgeeks 的新角色:

create role geeksforgeeks with login password 'geeks12345';

三、grant createdb 使用以下语句授予geeksforgeeks 的特权:

alter role geeksforgeeks createdb;

第四,创建一个名为sales的新数据库:

create database sales;

现在,使用 geeksforgeeks角色登录 PostgreSQL 数据库服务器,如下所示:

psql -U geeksforgeeks -W sales

向 Sales数据库添加一个新表:

create table employee(
    customer_id int generated always as identity,
    customer_name varchar(150) not null,
    primary key(employee_id)
);

现在使用以下命令显示 sales 数据库中的表列表:

\du

这将显示以下结果:

现在以Postgres身份登录并尝试删除 geeksforgeeks 角色:

drop role geeksforgeeks;

输出: