PostgreSQL

Thay đổi thuộc tính role bằng lệnh PostgreSQL ALTER ROLE

Thay đổi thuộc tính role bằng lệnh PostgreSQL ALTER 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 câu lệnh ALTER ROLE của PostgreSQL để thay đổi thuộc tính role.

Thay đổi thuộc tính role

Sử dụng lệnh ALTER ROLE để đổi thuộc tính role có định dạng như sau:

ALTER ROLE role_specification [ WITH ] option [ ... ]

option ở đây có thể là:

      SUPERUSER | NOSUPERUSER
    | CREATEDB | NOCREATEDB
    | CREATEROLE | NOCREATEROLE
    | INHERIT | NOINHERIT
    | LOGIN | NOLOGIN
    | REPLICATION | NOREPLICATION
    | BYPASSRLS | NOBYPASSRLS
    | CONNECTION LIMIT connlimit
    | [ ENCRYPTED ] PASSWORD 'password' | PASSWORD NULL
    | VALID UNTIL 'timestamp'

Xem thêm: Giải thích một số option của lệnh CREATE ROLE

Superusers có thể đổi tên bất kỳ role nào. Một role với đặc quyền CREATEROLE có thể đổi tên bất kỳ vai trò nào, ngoại trừ superusers.

Role thông thường chỉ có thể thay đổi mật khẩu của nó.

Xem thuộc tính của role minhhoangblog trước khi thao tác:

Thay đổi thuộc tính role bằng lệnh PostgreSQL ALTER ROLE (1)

Bởi vì postgres là một superuser nên có thể thay đổi role minhhoangblog thành một superuser:

ALTER ROLE minhhoangblog WITH SUPERUSER;

Kiểm tra lại thuộc tính của role minhhoangblog, chúng ta thấy đã được thay đổi thành superuser:

Thay đổi thuộc tính role bằng lệnh PostgreSQL ALTER ROLE (2)

Ví dụ sau đây đặt mật khẩu role minhhn có hiệu lực cho đến ngày 01/01/2050:

ALTER ROLE minhhn
VALID UNTIL '2050-01-01';

Cách thay đổi mật khẩu của role hiện đang kết nối

Phần này sẽ trình bày cách một role không phải superuser, không có đặc quyền CREATEROLE cũng có thể thay đổi mật khẩu của chính nó.

Đầu tiên sẽ kết nối với database mydb bằng role minhhoangblog:

psql -U minhhoangblog -d mydb

Thay đổi thuộc tính role bằng lệnh PostgreSQL ALTER ROLE (3)

Sử dụng lệnh ALTER ROLE để thay đổi mật khẩu của role minhhoangblog đang kết nối. Nhưng lần này, thay vì chỉ định tên role, hãy thử chỉ định SESSION_USER đại diện cho role tạo ra kết nối hiện tại. Làm như sau:

ALTER ROLE SESSION_USER WITH PASSWORD '12345678'; 

Thay đổi thuộc tính role bằng lệnh PostgreSQL ALTER ROLE (4)

Password của role minhhoangblog đã được thay đổi thành công.

Xem thêm: Thay đổi tên role bằng lệnh PostgreSQL ALTER ROLE

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 »