我最近安装了最新版本的ubuntu,我还不习惯。我在将postgresql与pgadmin3连接时遇到了一些问题。
我尝试按照几个教程创建一个可以在pgadmin3中使用的本地主机服务器。我没有真正达到标准,我认为通过安装,卸载,安装,卸载,尝试我找到的答案,我做得更糟......此时我不确定我的postgres是否干净。我可能有两个postgres安装,再次,我不确定。我试图卸载它,但我有一个错误,基本上说postgres不在sudo。
问题是我现在在控制台中运行psql时出现此错误:
$psql
psql: FATAL: role "user" does not exist
我找不到pg_hba.conf
,此时我太害怕通过尝试关注任何其他帖子而使事情变得更糟。
我怎样才能做到这一点?
答案 0 :(得分:42)
正如评论中所指出的那样,你的pg_hba.conf看起来很好。
通常,数据库将作为postgres用户运行(检查ps aux | grep postgres
以找出postgres正在运行的用户名)。
以该用户身份登录,例如sudo su - postgres
,然后创建与您的普通Ubuntu用户帐户(createuser username
)匹配的用户,最后创建一个具有相同名称的数据库并设置所有者({ {1}})对该数据库用户,如下所示:-O
)。
这应该使调用createdb -O username username
工作,而pgadmin - 只要你以默认用户身份启动它,用户名 - 也应该有用。
编辑:默认情况下,psql
将使用您的Linux用户名作为database-username和database-name的默认值。您可以使用psql
覆盖用户名,并通过将该数据库名称添加到命令行(例如-U someotherusername
)来连接到其他数据库。您可能还会发现psql someotherdbname
对列出现有数据库非常有用。
答案 1 :(得分:8)
sudo -u postgres createuser user
可以帮助您创建具有postgres所有权限的新用户
答案 2 :(得分:2)
使用postgres用户:
sudo su postgres
然后使用psql。
如果您仍然遇到问题,请点击此链接:PostgreSQL error: Fatal: role "username" does not exist
答案 3 :(得分:0)
在Windows 10中,这适用于
pg_restore --format = c --verbose --no-owner --no-privileges --dbname = MYDB --username = postgres --no-password --jobs = 8 F:/MYBK.backup
- username =(role)和--no-password是necesaries
答案 4 :(得分:0)
如果您在Windows上遇到这个问题,虽然有点老了,但是只需删除Postgres data
目录并通过运行initdb /data