PostgreSQL

Lệnh PostgreSQL DROP ROLE

Lệnh PostgreSQL DROP ROLE
Được viết bởi Minh Hoàng

Series chia sẻ về PostgreSQL – Cơ sở dữ liệu mã nguồn mở tiên tiến nhất thế giới.

Bài viết này sẽ mô tả cách sử dụng lệnh PostgreSQL DROP ROLE để loại bỏ, xóa một role.

1. Lệnh xóa role

1. Lệnh xóa role

Loại bỏ hay xóa một role bằng lệnh DROP ROLE có cú pháp như sau:

DROP ROLE [ IF EXISTS ] role_name [, ...]

※Để loại bỏ role superuser, bạn cần phải là một superuser. Để loại bỏ các roles không phải là superuser, bạn cần có đặc quyền CREATEROLE.

Trước khi xóa một role, bạn phải bỏ hoặc thay đổi chủ sở hữu của các đối tượng cơ sở dữ liệu do role đó đang sở hữu. Ngoài ra, nếu role có đặc quyền trên các đối tượng cơ sở dữ liệu, bạn cũng phải loại bỏ tất cả các đặc quyền đó.


Các role hiện tại:

\du

Lệnh PostgreSQL DROP ROLE (1)

Chúng ta sẽ xóa role fpt_minhhn:

DROP ROLE fpt_minhhn;

Lệnh PostgreSQL DROP ROLE (2)

Role fpt_minhhn đã bị loại bỏ:

Lệnh PostgreSQL DROP ROLE (3)

2. Trường hợp role bị xóa là chủ sở hữu của đối tượng cơ sở dữ liệu

2. Trường hợp role bị xóa là chủ sở hữu của đối tượng cơ sở dữ liệu

Nếu role bạn đang cố gắng loại bỏ là chủ sở hữu của một đối tượng cơ sở dữ liệu như schemas, tables, views,… thì bạn phải loại bỏ đối tượng hoặc thay đổi quyền sở hữu sang một role khác trước khi loại bỏ role đó. Ngoài ra, nếu bạn đã thêm các đặc quyền cho tables,… vào role thì phải cần xóa các đặc quyền trước khi xóa role.

Bạn có thể xóa từng đối tượng hoặc cũng có thể xóa đồng thời các đối tượng thuộc sở hữu của role đã chỉ định trong cơ sở dữ liệu.

Có thể bạn quan tâm:
Lệnh DROP OWNED xóa tất cả các đối tượng cơ sở dữ liệu thuộc sở hữu của một role cụ thể
Lệnh REASSIGN OWNED thay đổi quyền sở hữu các đối tượng cơ sở dữ liệu

Chúng ta sẽ xóa role minhhoangblog:

DROP ROLE minhhoangblog;

Lệnh PostgreSQL DROP ROLE (4)

Lỗi “ERROR: Cannot delete the role “minhhoangblog” as it depends on other objects” không thể xóa role minhhoangblog vì có đối tượng khác phụ thuộc vào nó và việc xóa role không thành công. Thông báo lỗi cũng cho thấy nguyên nhân gây ra lỗi không thể xóa là do role minhhoangblog đang sở hữu bảng business và lược đồ myschema3.

Do đó trước khi xóa role minhhoangblog, chúng ta cần xóa một lần tất cả các đối tượng cơ sở dữ liệu mà role minhhoangblog đang là owner bằng lệnh DROP OWNED hoặc xóa lần lượt từng đối tượng bảng business và lược đồ myschema3 như sau:

DROP TABLE business;
DROP SCHEMA myschema3;

Lệnh PostgreSQL DROP ROLE (5)

Như vậy đã xóa bảng business và lược đồ myschema3 thành công. Chúng ta thực hiện lại lệnh xóa role minhhoangblog:

DROP ROLE minhhoangblog;

Lệnh PostgreSQL DROP ROLE (6)

Lúc này role minhhoangblog đã được xóa thành công:

\du

Lệnh PostgreSQL DROP ROLE (7)

Cảm ơn bạn đã theo dõi. Đừng ngần ngại hãy cùng thảo luận với chúng tôi!

Giới thiệu

Minh Hoàng

Xin chào, tôi là Hoàng Ngọc Minh, hiện đang làm BrSE, tại công ty Toyota, Nhật Bản. Những gì tôi viết trên blog này là những trải nghiệm thực tế tôi đã đúc rút ra được trong cuộc sống, quá trình học tập và làm việc. Các bài viết được biên tập một cách chi tiết, linh hoạt để giúp bạn đọc có thể tiếp cận một cách dễ dàng nhất. Hi vọng nó sẽ có ích hoặc mang lại một góc nhìn khác cho bạn[...]

Translate »