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'
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:
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:
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
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';
Password của role minhhoangblog đã được thay đổi thành công.
[…] Xem thêm: Thay đổi thuộc tính role bằng lệnh PostgreSQL ALTER ROLE […]