[英]Createuser: could not connect to database postgres: FATAL: role "tom" does not exist
我第一次嘗試設置 Postgres,我需要創建一個具有讀取和創建數據庫權限的用戶。 但是,當我使用:
createuser username
在我的終端中,我收到以下消息:
createuser:無法連接到數據庫 postgres:致命:角色“tom”不存在
Tom 是我現在登錄的 Ubuntu 用戶帳戶。 我正在嘗試創建一個“postgres”的用戶名,然后執行psql -U psql template1
以便我可以創建一個數據庫並為我的 Rails 應用程序分配一個所有者。
你提到了 Ubuntu,所以我猜你是通過 apt 從 Ubuntu 安裝 PostgreSQL 包的。
如果是這樣,則postgres
PostgreSQL 用戶帳戶已經存在,並且配置為可通過pg_hba.conf
unix 套接字的peer
身份驗證進行訪問。 您可以通過以postgres
unix 用戶身份運行命令來訪問它,例如:
sudo -u postgres createuser owning_user
sudo -u postgres createdb -O owning_user dbname
這是所有在Ubuntu PostgreSQL文檔中的全部內容,該文檔是“Ubuntu PostgreSQL”的第一個 Google 熱詞,並且在許多 Stack Overflow 問題中都有涉及。
(通過省略諸如操作系統和版本,您如何安裝 PostgreSQL 等詳細信息,您使這個問題更難回答。)
運行這個:
sudo -u postgres psql
要么
psql -U postgres
在你的終端進入 postgres
注意:如果您使用的是 Mac 並且上面的兩個命令都失敗了,請跳轉到下面關於 Mac 的部分
postgres=#
跑步
CREATE USER new_username;
注意:將 new_username 替換為您要創建的用戶,在您的情況下將是 tom。
postgres=# CREATE USER new_username;
CREATE ROLE
由於您希望該用戶能夠創建數據庫,因此您需要將角色更改為超級用戶
postgres=# ALTER USER new_username SUPERUSER CREATEDB;
ALTER ROLE
為了確認,一切都成功了,
postgres=# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------+-----------
new_username | Superuser, Create DB | {}
postgres | Superuser, Create role, Create DB, Replication | {}
root | Superuser, Create role, Create DB | {}
postgres=#
更新/修改(對於 Mac):
我最近在我的 Mac 上遇到了類似的錯誤:
psql: FATAL: role "postgres" does not exist
這是因為我的安裝是使用數據庫超級用戶設置的,其角色名稱與您的登錄(短)名稱相同。
但是一些 linux 腳本假定超級用戶具有postgres
的傳統角色名稱
我是如何解決這個問題的?
如果您安裝了homebrew
運行:
/usr/local/opt/postgres/bin/createuser -s postgres
如果您使用的是特定版本的 postgres,請說
10.5
然后運行:
/usr/local/Cellar/postgresql/10.5/bin/createuser -s postgres
要么:
/usr/local/Cellar/postgresql/10.5/bin/createuser -s new_username
要么:
/usr/local/opt/postgresql@11/bin/createuser -s postgres
如果你安裝了
postgres.app
for Mac 運行:
/Applications/Postgres.app/Contents/Versions/10.5/bin/createuser -s postgres
PS:用你的 PostgreSQL 版本替換 10.5
sudo -u postgres createuser -s tom
這應該對您有所幫助,因為如果管理員沒有為您創建 PostgreSQL 用戶帳戶,就會發生這種情況。 也可能是您被分配了一個與操作系統用戶名不同的 PostgreSQL 用戶名,在這種情況下,您需要使用 -U 開關。
1- 以默認 PostgreSQL 用戶 (postgres) 登錄
sudo -u postgres -i
2- 作為 postgres 用戶。 使用createuser
命令添加一個新的數據庫用戶
[postgres]$ createuser --interactive
3-出口
[postgres]$ exit
您的錯誤已發布在官方文檔中。 您可以閱讀這篇文章。
我從那篇文章中復制了你的原因(並超鏈接了 URL):
如果管理員尚未為您創建 PostgreSQL 用戶帳戶,則會發生這種情況。 (PostgreSQL 用戶帳戶不同於操作系統用戶帳戶。)如果您是管理員,請參閱第 20 章以獲取創建帳戶的幫助。 您需要成為安裝 PostgreSQL 的操作系統用戶(通常是 postgres)才能創建第一個用戶帳戶。 也可能是您被分配了一個與您的操作系統用戶名不同的 PostgreSQL 用戶名; 在這種情況下,您需要使用 -U 開關或設置 PGUSER 環境變量來指定您的 PostgreSQL 用戶名
為了您的目的,您可以執行以下操作:
1) 創建一個 PostgreSQL 用戶帳戶:
sudo -u postgres createuser tom -d -P
(設置密碼的-P
選項;允許為您的用戶名 'tom' 創建數據庫的-d
選項。請注意,'tom' 是您的操作系統用戶名。這樣,您可以執行 PostgreSQL 命令而無需sudo
ing。 )
2) 現在您應該可以執行createdb
和其他 PostgreSQL 命令了。
我有同樣的問題,我只是這樣做
須藤 su - postgres
createuser odoo -U postgres -dRSP #P 用於密碼( odoo或您想要授予 postgres 訪問權限的用戶名)
在 Windows 上使用:
C:\\PostgreSQL\\pg10\\bin>createuser -U postgres --pwprompt <USER>
根據需要添加--superuser
或--createdb
。
有關更多選項,請參閱https://www.postgresql.org/docs/current/static/app-createuser.html 。
如果您不想更改身份驗證方法 (ident) 並弄亂pg_hba.conf,請使用以下命令:
以默認用戶身份首次登錄
sudo su - postgres
然后訪問 psql 並創建一個與您登錄的用戶同名的用戶
postgres=# CREATE USER userOS WITH PASSWORD 'garbage' CREATEDB;
您可以使用相應的角色驗證您的用戶
postgres=# \du
在此之后,您可以創建您的數據庫並驗證它
psql -d dbName
\l
\q
對於 Linux,您可以激活 SUPERUSER 以啟用創建數據庫,如下所示:
Go 到端子/外殼
使用sudo -u postgres -i
進入 postgres
現在你的終端就像“postgres@anish-Latitude-E7450:~$”
psql
進入 postgres 終端現在你的終端就像“postgres=#”
alter user [postgres_user_name] createdb;
現在用戶將有權創建數據庫。
使用 '\q' 退出 psql
使用exit
注銷 postgres
希望這對您有所幫助。
您需要先運行 initdb。 它將創建數據庫集群和初始設置
請參閱如何首次配置 postgresql? 和http://www.postgresql.org/docs/8.4/static/app-initdb.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.