postgres: อัพเกรดผู้ใช้ให้เป็น superuser หรือไม่?


644

ใน postgres ฉันจะเปลี่ยนผู้ใช้ปัจจุบันเป็น superuser ได้อย่างไร ฉันไม่ต้องการลบผู้ใช้ปัจจุบันด้วยเหตุผลหลายประการ

# alter user myuser ...?

คำตอบ:


1262
ALTER USER myuser WITH SUPERUSER;

คุณสามารถอ่านเพิ่มเติมได้ที่เอกสาร


157
การดำเนินการตรงข้ามคือ ALTER USER myuser WITH NOSUPERUSER
d.raev

2
และฉันจะตรวจสอบได้อย่างไรว่า myuser ปัจจุบันเป็น superuser หรือไม่
masterweily

20
SELECT rolname, rolsuper FROM pg_roles;ถึง @masterweily
caulfield

6
ฉันได้รับ: ข้อผิดพลาด: ต้องเป็น superuser เพื่อเปลี่ยน superusers
Stepan Yakovenko

15
@masterweily คุณสามารถทำ\duรายการผู้ใช้ / บทบาททั้งหมด
XåpplI'-I0llwlg'I -

63

หากต้องการขยายด้านบนและทำการอ้างอิงอย่างรวดเร็ว:

  • วิธีทำให้ผู้ใช้เป็น SuperUser: ALTER USER username WITH SUPERUSER;
  • วิธีทำให้ผู้ใช้ไม่ได้เป็น SuperUser อีกต่อไป: ALTER USER username WITH NOSUPERUSER;
  • หากต้องการอนุญาตให้ผู้ใช้สร้างฐานข้อมูล: ALTER USER username CREATEDB;

นอกจากนี้คุณยังสามารถใช้CREATEROLEและCREATEUSERเพื่อให้สิทธิ์ผู้ใช้โดยไม่ต้องทำให้พวกเขา superuser

เอกสาร


27

$ su - postgres
$ psql
$ \du;เพื่อดูผู้ใช้บน db
เลือกผู้ใช้ที่คุณต้องการเป็น superuser และ:
$ ALTER USER "user" with superuser;


ในกรณีเฉพาะนี้คุณต้องใส่ชื่อผู้ใช้ไว้ใน comas ตัวอย่างALTER USER "user" WITH SUPERUSER;
Carlos.V

9

เรียกใช้คำสั่งนี้

alter user myuser with superuser;

หากคุณต้องการดูการอนุญาตให้ผู้ใช้เรียกใช้คำสั่งต่อไป

\du

8

บางครั้งอาจเป็นการอัพเกรดเป็น superuser อาจไม่ใช่ตัวเลือกที่ดี นอกจากผู้ใช้ระดับสูงแล้วยังมีตัวเลือกอื่น ๆ อีกมากมายที่คุณสามารถใช้ได้ เปิดเทอร์มินัลของคุณและพิมพ์ต่อไปนี้:

$ 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

นอกจากนี้ยังแสดงรายการตัวเลือก

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'

ดังนั้นในบรรทัดคำสั่งมันจะดูเหมือน

postgres=# ALTER USER my_user WITH  LOGIN

หรือใช้รหัสผ่านที่เข้ารหัส

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

หรือเพิกถอนสิทธิ์หลังจากเวลาที่กำหนด

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

4

คุณสามารถสร้างSUPERUSERหรือส่งเสริมUSERดังนั้นสำหรับกรณีของคุณ

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

หรือย้อนกลับ

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

หากต้องการป้องกันคำสั่งจากการบันทึกเมื่อคุณตั้งรหัสผ่านให้แทรกช่องว่างด้านหน้าไว้ แต่ตรวจสอบว่าระบบของคุณรองรับตัวเลือกนี้

$  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';"

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.