我正在设置我的 PostgreSQL 9.1。我不能用 PostgreSQL 做任何事情:不能createdb
,不能createuser
;所有操作都返回错误信息
Fatal: role h9uest does not exist
h9uest
是我的账号名,我sudo apt-get install
在这个账号下是PostgreSQL 9.1。该帐户
仍然存在类似错误。root
我正在设置我的 PostgreSQL 9.1。我不能用 PostgreSQL 做任何事情:不能createdb
,不能createuser
;所有操作都返回错误信息
Fatal: role h9uest does not exist
h9uest
是我的账号名,我sudo apt-get install
在这个账号下是PostgreSQL 9.1。该帐户
仍然存在类似错误。root
使用操作系统用户 postgres
创建您的数据库 - 只要您没有设置具有与您的同名操作系统用户相对应的必要权限的数据库h9uest
角色(在您的情况下):
sudo -u postgres -i
然后再试一次。exit
以系统用户身份操作完成后键入postgres
。
或者createuser
像postgres
with一样执行单个命令sudo
,就像drees在另一个答案中所展示的那样。
关键是使用与同名数据库角色匹配的操作系统用户通过ident
身份验证获得访问权限。postgres
是初始化数据库集群的默认操作系统用户。手册:
为了引导数据库系统,一个新初始化的系统总是包含一个预定义的角色。该角色始终是“超级用户”,默认情况下(除非在运行时更改
initdb
),它将与初始化数据库集群的操作系统用户同名。通常,此角色将命名为postgres
. 为了创建更多角色,您首先必须作为这个初始角色进行连接。
我听说过使用非标准用户名或操作系统用户不存在的奇怪设置。你需要在那里调整你的策略。
在尝试了许多其他人的解决方案后,没有成功,这个答案终于帮助了我。
https://stackoverflow.com/a/16974197/2433309
简而言之,跑步
sudo -u postgres createuser owning_user
创建一个名为 owning_user 的角色(在本例中为 h9uest)。之后,您可以rake db:create
使用您设置的任何帐户名从终端运行,而无需进入 Postgres 环境。
sudo su - postgres
psql template1
在 pgsql 上创建具有“超级用户”权限的角色
CREATE ROLE username superuser;
eg. CREATE ROLE demo superuser;
然后创建用户
CREATE USER username;
eg. CREATE USER demo;
为用户分配权限
GRANT ROOT TO username;
然后启用登录该用户,这样您就可以psql template1
从普通$
终端运行例如:
ALTER ROLE username WITH LOGIN;
这对我有用:
psql -h localhost -U postgres
使用安装 postgresapt-get
不会创建用户角色或数据库。
要为您的个人用户帐户创建超级用户角色和数据库:
sudo -u postgres createuser -s $(whoami); createdb $(whoami)
psql postgres
postgres=# CREATE ROLE username superuser;
postgres=# ALTER ROLE username WITH LOGIN;
对于Postgres 9.5版本, 使用以下命令:
psql -h localhost -U postgres
希望这会有所帮助。
工作方法,
vi /etc/postgresql/9.3/main/pg_hba.conf
local all postgres peer
在这里将对等更改为信任重新开始,sudo service postgresql restart
现在试试,psql -U postgres
对于Windows用户:psql -U postgres
您应该会看到 PostgreSQL 的命令行界面:postgres=#
在本地用户提示符下,而不是 root 用户提示符下,键入
sudo -u postgres createuser <local username>
然后输入本地用户的密码。
然后输入上一条生成“角色'用户名'不存在”的命令。
以上步骤为我解决了问题。如果没有,请发送上述步骤的终端消息。
我将它安装在 macOS 上,并且必须:
cd /Applications/Postgres.app/Contents/Versions/9.5/bin
createuser -U postgres -s YOURUSERNAME
createdb YOURUSERNAME
这是来源:https ://github.com/PostgresApp/PostgresApp/issues/313#issuecomment-192461641
我使用 docker-compose 进行了健康检查。
healthcheck:
test: ['CMD-SHELL', 'pg_isready']
interval: 5s
timeout: 5s
retries: 5
如果您也有更改用户:
healthcheck:
test: ['CMD-SHELL', 'pg_isready -U postgres'] # <<<---
interval: 5s
timeout: 5s
retries: 5
--no-owner --no-privileges
使用标志转储和恢复
例如
倾倒 -pg_dump --no-owner --no-privileges --format=c --dbname=postgres://userpass:username@postgres:5432/schemaname > /tmp/full.dump
恢复 -pg_restore --no-owner --no-privileges --format=c --dbname=postgres://userpass:username@postgres:5432/schemaname /tmp/full.dump
请按照以下步骤操作,它将为您工作:
msfconsole
db_connect user:pass@host:port.../database
对不起,我不记得了,但是就像这样,然后将用户和密码以及主机和数据库替换为database.yml
就位中包含的信息:/usr/share/metasploit-framework/config
msfconsole: msf>db_status
它是否已连接。请按照以下步骤使 postgres 正常工作。
像将端口从 5432 更改为 5433 这样简单的事情对我有用。