ฉันอ่านวิธีแก้ปัญหาที่เป็นไปได้ทั้งหมดซึ่งเป็นเรื่องปกติถ้าคุณจำการเชื่อมต่อกับฐานข้อมูลก่อนที่คุณจะให้สิ่งต่าง ๆ ;) ขอบคุณไปยังโซลูชันอื่น ๆ ทั้งหมด !!!
user@server:~$ sudo su - postgres
สร้างผู้ใช้ psql:
postgres@server:~$ createuser --interactive
Enter name of role to add: readonly
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) n
Shall the new role be allowed to create more new roles? (y/n) n
เริ่ม psql cli และตั้งรหัสผ่านสำหรับผู้ใช้ที่สร้าง:
postgres@server:~$ psql
psql (10.6 (Ubuntu 10.6-0ubuntu0.18.04.1), server 9.5.14)
Type "help" for help.
postgres=# alter user readonly with password 'readonly';
ALTER ROLE
เชื่อมต่อกับฐานข้อมูลเป้าหมาย:
postgres=# \c target_database
psql (10.6 (Ubuntu 10.6-0ubuntu0.18.04.1), server 9.5.14)
You are now connected to database "target_database" as user "postgres".
ให้สิทธิ์ที่จำเป็นทั้งหมด:
target_database=# GRANT CONNECT ON DATABASE target_database TO readonly;
GRANT
target_database=# GRANT USAGE ON SCHEMA public TO readonly ;
GRANT
target_database=# GRANT SELECT ON ALL TABLES IN SCHEMA public TO readonly ;
GRANT
เปลี่ยนสิทธิ์เริ่มต้นสำหรับเป้าหมาย db public shema:
target_database=# ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO readonly;
ALTER DEFAULT PRIVILEGES