postgres: nâng cấp người dùng trở thành siêu người dùng?


644

Trong postgres, làm cách nào để tôi thay đổi người dùng hiện tại thành siêu người dùng? Tôi không muốn xóa người dùng hiện tại, vì nhiều lý do.

# alter user myuser ...?

Câu trả lời:


1262
ALTER USER myuser WITH SUPERUSER;

Bạn có thể đọc thêm tại Tài liệu


157
hoạt động ngược lại là ALTER USER myuser WITH NOSUPERUSER
d.raev

2
và làm thế nào tôi có thể phát hiện nếu myuser hiện đang là superuser?
thạo

20
SELECT rolname, rolsuper FROM pg_roles;tới @masterweily
caulfield

6
Tôi nhận được: LRI: phải là siêu người dùng để thay đổi siêu nhân
Stepan Yakovenko

15
@masterweily Bạn có thể làm \duđể liệt kê tất cả người dùng / vai trò.
XåpplI'-I0llwlg'I -

63

Để mở rộng ở trên và làm một tài liệu tham khảo nhanh:

  • Để biến người dùng thành SuperUser: ALTER USER username WITH SUPERUSER;
  • Để làm cho người dùng không còn là SuperUser: ALTER USER username WITH NOSUPERUSER;
  • Để chỉ cho phép người dùng tạo cơ sở dữ liệu: ALTER USER username CREATEDB;

Bạn cũng có thể sử dụng CREATEROLECREATEUSERcho phép người dùng đặc quyền mà không biến họ thành siêu người dùng.

Tài liệu


27

$ su - postgres
$ psql
$ \du;để xem người dùng trên db
chọn người dùng mà bạn muốn là siêu người dùng và:
$ ALTER USER "user" with superuser;


trong trường hợp cụ thể này, bạn phải đặt tên người dùng trong trạng thái hôn mê, ví dụALTER USER "user" WITH SUPERUSER;
Carlos.V

9

Chạy lệnh này

alter user myuser with superuser;

Nếu bạn muốn xem quyền cho người dùng chạy lệnh sau

\du

8

Có thể đôi khi nâng cấp lên một siêu người dùng có thể không phải là một lựa chọn tốt. Vì vậy, ngoài siêu người dùng, có rất nhiều tùy chọn khác mà bạn có thể sử dụng. Mở terminal của bạn và gõ như sau:

$ sudo su - postgres
[sudo] password for user: (type your password here)
$ psql
postgres@user:~$ psql
psql (10.5 (Ubuntu 10.5-1.pgdg18.04+1))
Type "help" for help.

postgres=# ALTER USER my_user WITH option

Cũng liệt kê danh sách các tùy chọn

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

Vì vậy, trong dòng lệnh nó sẽ trông giống như

postgres=# ALTER USER my_user WITH  LOGIN

HOẶC sử dụng mật khẩu được mã hóa.

postgres=# ALTER USER my_user  WITH ENCRYPTED PASSWORD '5d41402abc4b2a76b9719d911017c592';

HOẶC thu hồi quyền sau một thời gian cụ thể.

postgres=# ALTER USER my_user  WITH VALID UNTIL '2019-12-29 19:09:00';

4

Bạn có thể tạo SUPERUSERhoặc quảng cáo USER, vì vậy đối với trường hợp của bạn

$ sudo -u postgres psql -c "ALTER USER myuser WITH SUPERUSER;"

hoặc rollback

$ sudo -u postgres psql -c "ALTER USER myuser WITH NOSUPERUSER;"

Để ngăn lệnh đăng nhập khi bạn đặt mật khẩu, hãy chèn một khoảng trắng phía trước nó, nhưng kiểm tra xem hệ thống của bạn có hỗ trợ tùy chọn này không.

$  sudo -u postgres psql -c "CREATE USER my_user WITH PASSWORD 'my_pass';"
$  sudo -u postgres psql -c "CREATE USER my_user WITH SUPERUSER PASSWORD 'my_pass';"

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.