PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Cách thay đổi người dùng thành Superuser trong PostgreSQL

  • Tạo người dùng mới
  • Xem Quyền của Người dùng Hiện tại
  • Thay đổi Quyền của Người dùng Hiện tại
    • Chỉ định SUPERUSER Quyền
    • Thu hồi quyền

Việc sửa đổi quyền người dùng trong PostgreSQL có thể từ khá đơn giản đến cực kỳ phức tạp, tùy thuộc vào mức độ chi tiết cho phép thực sự được yêu cầu. Tuy nhiên, trong hầu hết các trường hợp, nó là ALTER USER mạnh mẽ lệnh sẽ được sử dụng để làm mọi thứ, từ cho phép người dùng đăng nhập, tạo cơ sở dữ liệu, quản lý vai trò và thậm chí trở thành SUPERUSER tài khoản.

Chúng ta sẽ khám phá ngắn gọn sức mạnh của ALTER USER để bạn có thể dễ dàng thực hiện nhiều phép gán và xóa khi có nhu cầu.

Tạo người dùng mới

Trước khi chúng tôi đi vào thay đổi quyền người dùng, chúng tôi nên thiết lập một tài khoản người dùng mới (thường được gọi là ROLE ) để lộn xộn với.

Để bắt đầu, chúng tôi sẽ liệt kê tất cả những người dùng hiện có:

=# SELECT usename FROM pg_user;
 usename
----------
 postgres
(1 row)

Theo mặc định, postgres thường là người dùng duy nhất tồn tại, vì vậy chúng tôi muốn tạo một người dùng mới là librarian để kiểm soát library của chúng tôi cơ sở dữ liệu. Điều này có thể được thực hiện bằng cách sử dụng CREATE USER lệnh:

=# CREATE USER librarian;
CREATE ROLE
=# SELECT usename FROM pg_user;
  usename
-----------
 postgres
 librarian
(2 rows)

Xem Quyền của Người dùng Hiện tại

Thường có thể hữu ích khi kiểm tra các quyền hiện có được gán cho người dùng trong hệ thống. Điều này có thể dễ dàng được thực hiện với \du lệnh từ psql lời nhắc:

=# \du
                             List of roles
 Role name |                   Attributes                   | Member of
-----------+------------------------------------------------+-----------
 librarian |                                                | {}
 postgres  | Superuser, Create role, Create DB, Replication | {}

Chúng ta có thể thấy rõ điều đó mặc dù hiện chúng ta đã thêm một librarian mới người dùng, chúng tôi phải gán cho nó một số quyền.

Thay đổi Quyền của Người dùng Hiện tại

Bây giờ librarian của chúng tôi người dùng tồn tại, chúng tôi có thể bắt đầu sử dụng ALTER USER để sửa đổi các quyền được cấp cho librarian .

Định dạng cơ bản của ALTER USER bao gồm tên của người dùng (hoặc ROLE ) theo sau là một loạt các options để thông báo cho PostgreSQL những thay đổi được phép thực hiện:

=# ALTER USER role_specification WITH OPTION1 OPTION2 OPTION3;

Các tùy chọn này bao gồm từ CREATEDB , CREATEROLE , CREATEUSER và thậm chí là SUPERUSER . Ngoài ra, hầu hết các tùy chọn cũng có phần đối ứng phủ định, thông báo cho hệ thống rằng bạn muốn từ chối người dùng mà quyền cụ thể. Các tên tùy chọn này giống với đối tác gán của chúng, nhưng có tiền tố là NO (ví dụ:NOCREATEDB , NOCREATEROLE , NOSUPERUSER ).

Chỉ định SUPERUSER Quyền

Bây giờ chúng ta đã hiểu những điều cơ bản về cách tạo người dùng và sử dụng ALTER USER để sửa đổi quyền, chúng tôi có thể khá đơn giản sử dụng SUPERUSER tùy chọn để chỉ định librarian của chúng tôi người dùng SUPERUSER quyền:

=# ALTER USER librarian WITH SUPERUSER;
ALTER ROLE

Chắc chắn rồi, nếu chúng tôi hiển thị danh sách quyền của mình bây giờ, chúng tôi sẽ thấy librarianSUPERUSER mới sự cho phép chúng tôi muốn:

=# \du
                             List of roles
 Role name |                   Attributes                   | Member of
-----------+------------------------------------------------+-----------
 librarian | Superuser                                      | {}
 postgres  | Superuser, Create role, Create DB, Replication | {}

Thu hồi Quyền

Trong trường hợp chúng tôi mắc lỗi và chỉ định một quyền mà sau này chúng tôi muốn thu hồi, chỉ cần cấp cùng một ALTER USER nhưng thêm NO tiền tố phía trước các tùy chọn cho phép được thu hồi.

Ví dụ:chúng tôi có thể xóa SUPERUSER từ librarian của chúng tôi người dùng như vậy:

=# ALTER USER librarian WITH NOSUPERUSER;
ALTER ROLE
=# \du
                             List of roles
 Role name |                   Attributes                   | Member of
-----------+------------------------------------------------+-----------
 librarian |                                                | {}
 postgres  | Superuser, Create role, Create DB, Replication | {}

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Không có toán tử nào phù hợp với (các) loại đối số và tên đã cho. Bạn có thể cần thêm phôi kiểu rõ ràng. - Netbeans, Postgresql 8.4 và Glassfish

  2. Nhận kích thước của đối tượng lớn trong truy vấn PostgreSQL?

  3. Pyodbc - Không tìm thấy tên nguồn dữ liệu và không có trình điều khiển mặc định nào được chỉ định

  4. Nhận tổng riêng biệt của một cột bảng đã nối

  5. Tích hợp PostgreSQL với hệ thống xác thực