Postgresql

刪除或更改 postgres 數據庫帳戶的使用者名有什麼後果?

  • September 8, 2021

我有信心了解數據庫級別所涉及的內容:

  • 如果刪除,我需要為每個系統管理員創建使用者,給他們SUPERUSER,然後刪除postgres使用者。
  • 如果更改名稱,我需要更改postgres帳戶。

不過,我的問題是我不確定這一行動的後果是什麼。例如,從 Linuxpostgres使用者的角度來看,這意味著什麼?當 I 時su - postgres,我可以執行psql並且可以連接到數據庫。我假設如果 postgres DB 使用者消失了,該功能就會消失。

此外,數據庫是使用postgreslinux 使用者啟動的。如果我刪除了postgres會導致數據庫無法啟動的使用者,是否存在一些問題?

來自ps:

/usr/pgsql-9.3/bin/postgres -D /var/lib/pgsql/9.3/data PG_GRANDPARENT_PID=1 USER=postgres PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin PWD=/ PGLOCALEDIR=/usr/pgsql-9.3/share/locale LANG=en_US.UTF-8 PGSYSCONFDIR=/etc/sysconfig/pgsql SHLVL=1 HOME=/var/lib/pgsql LOGNAME=postgres PGDATA=/var/lib/pgsql/9.3/data _=/usr/pgsql-9.3/bin/postgres

我在 Cent OS 7 上執行 PosrgreSQL 9.3。

Linux使用者與數據庫使用者postgres完全不同。postgres它是通過 rpm 包創建的。當您以系統postgres使用者身份登錄時,它假定您要連接的數據庫使用者和數據庫名稱與您嘗試連接的作業系統使用者相同。這就是為什麼一個簡單的 psql 可以工作,並以postgres使用者和database.

postgres數據庫只是template1. 您可以刪除它或重新創建它,但問題很少。但是,您將無法刪除該postgres使用者,因為數據庫系統需要它。

user1@[local]:5432:user1:=# DROP ROLE postgres;
ERROR:  cannot drop role postgres because it is required by the database system
Time: 50.570 ms
user1@[local]:5432:user1:=#

但是,您可以通過設置所有用於 的連接來reject阻止postgres使用者的登錄,這將阻止使用者使用該特定使用者而不是分配給他們的使用者進行登錄。

引用自:https://dba.stackexchange.com/questions/126173