Câu trả lời:
ALTER DATABASE name OWNER TO new_owner;
Xem mục hướng dẫn của Postgresql về điều này để biết thêm chi tiết.
ERROR: must be member of role ...
= KHÔNG LÀM VIỆC VỚI RDS
Câu trả lời của Frank Heikens sẽ chỉ cập nhật quyền sở hữu cơ sở dữ liệu. Thông thường, bạn cũng muốn cập nhật quyền sở hữu các đối tượng chứa (bao gồm cả bảng). Bắt đầu với Postgres 8.2, REASSIGN OWNED có sẵn để đơn giản hóa công việc này.
EDIT QUAN TRỌNG!
Không bao giờ sử dụng REASSIGN OWNED
khi vai trò ban đầu là postgres
, điều này có thể làm hỏng toàn bộ thể hiện DB của bạn. Lệnh sẽ cập nhật tất cả các đối tượng với chủ sở hữu mới, bao gồm tài nguyên hệ thống (postgres0, postgres1, v.v.)
Đầu tiên, kết nối với cơ sở dữ liệu quản trị và cập nhật quyền sở hữu DB:
psql
postgres=# REASSIGN OWNED BY old_name TO new_name;
Đây là một ALTER DATABASE
lệnh tương đương toàn cầu được cung cấp trong câu trả lời của Frank, nhưng thay vì cập nhật một DB cụ thể, nó thay đổi quyền sở hữu của tất cả các DB thuộc sở hữu của 'old_name'.
Bước tiếp theo là cập nhật quyền sở hữu bảng cho mỗi cơ sở dữ liệu:
psql old_name_db
old_name_db=# REASSIGN OWNED BY old_name TO new_name;
Điều này phải được thực hiện trên mỗi DB thuộc sở hữu của 'old_name'. Lệnh sẽ cập nhật quyền sở hữu của tất cả các bảng trong DB.
postgres
, chính anh ta ... Đã học được điều đó một cách khó khăn.
REASSIGN OWNED
(thường là vì chủ sở hữu của bạn postgres
), hãy xem đoạn trích trong stackoverflow.com/a/2686185/1839209 .