2016-03-02 70 views
0

找不到任何教程顯示通過root刪除默認postgres用戶時的操作。PostgreSQL意外刪除用戶postgres

  1. 通過sudo創建本地postgres服務器apt-get install postgresql postgresql-contrib。在shell內部,鍵入psql並能夠啓動數據庫。

  2. 登錄到root並刪除postgres帳戶在Linux中嘗試的東西了。 2a:sudo pkill -KILL -u postgres 2b:sudo userdel postgres

  3. 已刪除的postgres服務器。重新安裝。嘗試通過shell登錄到postgres用戶帳戶時沒有找到用戶。

  4. 嘗試通過root運行postgres服務器,無法通過shell連接到服務器。

  5. 通過root重新創建postgres用戶帳戶:sudo adduser postgres --disabled-password。須藤usermod命令-a -G須藤Postgres的

  6. 仍然得到無法連接到服務器:通過根

  7. Postgres用戶連接被拒絕。登錄到postgres用戶。不用找了。

  8. 重新安裝postgres。同樣的錯誤。

建議?

謝謝你一堆。

+1

我是否有權假定您在數據庫中沒有任何有價值的數據呢? – OscarJ

+0

@OscarJ是的,沒有有價值的數據。 – Johnathan

+0

配置文件應該告訴你postgres在哪個目錄保存它的數據。當您卸載它時,它可能不會刪除該數據目錄。因此,取消防止,手動刪除數據目錄,然後重新安裝。這可能會起作用。 – OscarJ

回答

1

您並不完全需要名爲postgres的用戶,您需要擁有數據目錄,二進制文件和配置文件的用戶。您應該檢查哪個uid和gid現在與您的數據目錄相關聯,然後創建具有該特定uid和gid的用戶。但首先檢查這些身份證是誰。如果沒有用戶當前具有那些UID和GID然後創建與這些值的新用戶:

useradd -u 123 -g 456 postgres 

可替換地,重新創建用戶postgres並分配數據目錄和二進制文件到該新用戶(假設組postgres的仍然存在):

useradd -G postgres postgres 
chown -r postgres:postgres $PGDATA 
chown -r postgres:postgres /wherever/bin/is 
chown -r postgres:postgres /wherever/conf/is 
+0

在/ usr/bin/pg_lsclusters第38行的printf中嘗試pg_lsclusters導致@ Missing參數。 9.1 main 5432 down /var/lib/postgresql/9.1/main /var/log/postgresql/postgresql-9.1-main.log。 – Johnathan

+0

最後,我遇到了一些問題,試圖找出誰被分配了GID 26.在玩了一下之後,我終於做了你們提到的所有事情,但是隨後出現了一個新的錯誤。我認爲從這一點重新安裝操作系統會更容易。謝謝您的幫助。 – Johnathan