簡體   English   中英

Createuser:無法連接到數據庫 postgres:致命:角色“tom”不存在

[英]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 等詳細信息,您使這個問題更難回答。)

在此處查看 git gist 和說明

運行這個:

 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 以啟用創建數據庫,如下所示:

  1. Go 到端子/外殼

  2. 使用sudo -u postgres -i進入 postgres

現在你的終端就像“postgres@anish-Latitude-E7450:~$”

  1. 使用psql進入 postgres 終端

現在你的終端就像“postgres=#”

  1. 輸入alter user [postgres_user_name] createdb;

現在用戶將有權創建數據庫。

  1. 使用 '\q' 退出 psql

  2. 使用exit注銷 postgres

希望這對您有所幫助。

您需要先運行 initdb。 它將創建數據庫集群和初始設置

請參閱如何首次配置 postgresql? http://www.postgresql.org/docs/8.4/static/app-initdb.html

暫無
暫無

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

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