Bài viết này sẽ mô tả cách sử dụng lệnh REASSIGN OWNED để thay đổi quyền sở hữu của các đối tượng cơ sở dữ liệu do một role cụ thể sở hữu thành một role khác.
Lệnh REASSIGN OWNED được sử dụng khi bạn muốn thay đổi quyền sở hữu của các đối tượng thuộc sở hữu của role trước khi xóa role đó.
Cú pháp lệnh:
REASSIGN OWNED BY { rolename_old | CURRENT_USER | SESSION_USER } [, ...] TO { rolename_new | CURRENT_USER | SESSION_USER }
Thay đổi quyền sở hữu của các đối tượng thuộc sở hữu của vai trò đã chỉ định (rolename_old) thành một vai trò khác (rolename_new).
Bây giờ sẽ đi vào ví dụ thực tế xem thế nào. Let’s Go!
Hiện trong database mydb có một lược đồ myschema3 được sở hữu bởi role nihongo:
¥dn
Ngoài ra, bảng business đã được tạo trong lược đồ public cũng được sở hữu bởi role nihongo:
¥dt
Và các đặc quyền a(INSERT), r(SELECT) và w(UPDATE) (cách đọc giá trị cài đặt giống như đã trình bày ở bài viết Cấp đặc quyền (privileges) cho ROLE bằng lệnh PostgreSQL GRANT) đã được thêm vào role nihongo cho bảng business trong lược đồ public:
¥dp
Bây giờ, chúng ta sẽ thay đổi quyền sở hữu của các đối tượng trong cơ sở dữ liệu mydb do role nihongo sở hữu thành role minhhoangblog sở hữu.
Thực hiện các lệnh sau khi kết nối như một superuser, chẳng hạn là postgres.
REASSIGN OWNED BY nihongo TO minhhoangblog;
Các đối tượng thuộc sở hữu của role nihongo trong cơ sở dữ liệu mydb đã được chuyển sở hữu thành role minhhoangblog:
[…] database drop role postgresql postgresql role FacebookTwitterPinterestLinkedIn Lệnh tạo bảng PostgreSQL CREATE TABLE Lệnh REASSIGN OWNED thay đổi quyền sở hữu các đối tượng cơ sở dữ liệu […]