[英]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 -U postgres
在數據庫名稱的情況下對我工作正常:postgres 和用戶名:postgres。 所以你不需要寫 sudo。
在其他數據庫的情況下,您可以嘗試
psql -U yourdb postgres
正如 Postgres 幫助中給出的那樣:
psql [OPTION]... [DBNAME [USERNAME]]
我使用su - postgres
和sudo -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.