簡體   English   中英

Postgres 用戶不存在?

[英]Postgres user does not exist?

我剛剛安裝了 Postgres,並且已經對它和各種配置進行了 1-2 個小時的修補。

我一直無法更改為 postgres 用戶

$ su - postgres產生以下錯誤: su: unknown login: postgres

$ sudo -u postgres psql產生以下錯誤: sudo: unknown user: postgres

這些嘗試是作為普通用戶進行的。 以 root 身份嘗試它們具有完全相同的結果。 我已經在 OS X 上通過 Homebrew 安裝了 postgres,並且我已經多次閱讀說明。

psql : 用我的默認用戶名登錄

psql -U postgres : 以 postgres 用戶身份登錄我

我似乎不需要 Sudo。

我將 Postgres.app 用於我的 OS X postgres 數據庫。 它消除了確保安裝正常運行和數據庫服務器正常啟動的麻煩。 在這里查看: http : //postgresapp.com

編輯:感謝@Erwin Brandstetter 糾正我對參數的使用。

通過psql --help ,當您沒有為數據庫名稱設置選項(沒有-d選項)時,它將是您的用戶名,如果您沒有-U ,則數據庫用戶名也將是您的用戶名,等等。

但是通過initdb (創建第一個數據庫)命令,它沒有您的用戶名作為任何數據庫名稱。 它有一個名為postgres的數據庫。 第一個數據庫總是在數據存儲區初始化時由 initdb 命令創建的。 這個數據庫叫做 postgres。

因此,如果您沒有另一個名為您的用戶名的數據庫,則需要執行psql -d postgres才能使 psql 命令工作。 似乎默認情況下它提供了-d選項, psql postgres也可以使用。

如果您創建了另一個與您的用戶名相同的數據庫(應該使用createdb完成),那么您只能命令psql 似乎第一個數據庫用戶名被 brew 設置為您的機器用戶名。

psql -d <first database name> -U <first database user name>

或者,

psql -d postgres -U <your machine username>
psql -d postgres

默認情況下會工作。

OS X 傾向於在系統帳戶名前加上“_”; 您沒有說明您使用的是哪個版本的 OS X,但至少在 10.8 和 10.9 中,_postgres 用戶存在於默認安裝中。 請注意,您將無法su到此帳戶(root 用戶除外),因為它沒有密碼。 另一方面, sudo -u _postgres應該可以正常工作。

這里的討論和回答對我非常有幫助:

psql:致命:數據庫“<用戶>”不存在

psql -U postgres

在數據庫名稱的情況下對我工作正常:postgres 和用戶名:postgres。 所以你不需要寫 sudo。

在其他數據庫的情況下,您可以嘗試

psql -U yourdb postgres

正如 Postgres 幫助中給出的那樣:

psql [OPTION]... [DBNAME [USERNAME]]

我使用su - postgressudo -u postgres psql得到與 kryshah 完全相同的錯誤。 DanielM 的回答也給出了錯誤。

錯誤設置時的輸出

然而,從 przbabu 的評論中回答。

masi$ psql
psql: FATAL:  database "masi" does not exist
masi$ psql -U postgres
psql: FATAL:  role "postgres" does not exist
masi$ psql postgres
psql (9.4.1)
Type "help" for help.

我認為這個問題的某些部分可能在 OSX 的所有者設置中

masi$ ls -al /Users/
total 0
drwxr-xr-x   7 root      admin  238 Jul  3 09:50 .
drwxr-xr-x  37 root      wheel 1326 Jul  2 19:02 ..
-rw-r--r--   1 root      wheel    0 Sep 10  2014 .localized
drwxrwxrwt   7 root      wheel  238 Apr  9 19:49 Shared
drwxr-xr-x   2 root      admin   68 Jul  3 09:50 postgres
drwxr-xr-x+ 71 masi      staff 2414 Jul  3 09:50 masi

但是做sudo chown -R postgres:staff /Users/postgres會給出chown: invalid user: 'postgres:staff'

總之,這不是解決問題的方法。 使用 postgres 安裝提供的工具來創建用戶和數據庫。

獲得正確的設置和輸出

postgres 安裝后有特定的命令可以將新用戶添加到數據庫系統。 在 initdb 之后,按照此處所述運行以下命令

createuser --pwprompt postgres
createdb -Opostgres -Eutf8 masi_development
psql -U postgres -W masi_development

為避免一直請求密碼,您可以選擇此處所述的三種選擇。

對我來說這是 macOS 上的解決方案重新安裝 psql

brew install postgres

啟動 PostgreSQL 服務器

pg_ctl -D /usr/local/var/postgres start

初始化數據庫

initdb /usr/local/var/postgres

如果此命令拋出錯誤,則 rm 舊數據庫文件並重新運行上述命令

rm -r /usr/local/var/postgres

創建一個新的數據庫

createdb postgres_test
psql -W postegres_test

您將登錄到此數據庫並可以在此處創建用戶進行登錄

解決方法很簡單:
以 root 身份登錄
之后:

su - postgres

psql

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM