Postgresql 如何连接到macOS上的postgres用户
在过去,我有理由相信我在macOS上使用了一个Postgresql 如何连接到macOS上的postgres用户,postgresql,Postgresql,在过去,我有理由相信我在macOS上使用了一个postgres用户。但是,我在我的catalina笔记本电脑上的brew安装版本中没有看到它: sudo -u postgres sudo: unknown user: postgres sudo: unable to initialize policy plugin 我是不是漏了一步?我能够查看该笔记本电脑上的多个数据库: aact2=# \l List of databases
postgres
用户。但是,我在我的catalina
笔记本电脑上的brew安装版本中没有看到它:
sudo -u postgres
sudo: unknown user: postgres
sudo: unable to initialize policy plugin
我是不是漏了一步?我能够查看该笔记本电脑上的多个数据库:
aact2=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
------------+-------+----------+-------------+-------------+-------------------
aact | steve | UTF8 | C | C |
aact1 | steve | UTF8 | C | C |
aact2 | steve | UTF8 | C | C |
aactold | steve | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
postgres | steve | UTF8 | C | C |
template0 | steve | UTF8 | C | C | =c/steve +
| | | | | steve=CTc/steve
template1 | steve | UTF8 | C | C | =c/steve +
| | | | | steve=CTc/steve
(10 rows)
我需要执行哪些步骤才能拥有可访问的postgres
数据库超级用户
更新以下是\du
aact2=# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------------------+-----------
bluej | | {}
steve | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
另一次更新@AdrianKlaver怀疑steve
用户是超级用户,显然他是对的
aact2=# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------------------+-----------
bluej | | {}
steve | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
我不相信steve是超级用户的原因是,
create role
由于权限错误而失败。作为一项单独的任务,我必须回去看看为什么那样做失败。这里有两个问题。第一,没有系统用户postgres。第二,Postgres集群是作为用户steve
创建的(initdb
),因此集群的superuser
是steve
,因为默认情况下initdb
使用运行它的系统用户的用户名。仅供参考,可通过以下操作在初始更改:
在任何情况下,只要您知道谁是
超级用户
,它实际上并不重要。模板1显示了什么?另外\du?@AdrianKlaver为了保密,我没有显示所有的数据库-但是现在已经包括了模板和template1
在那里:请参阅更新的OP。我还包括了\du
,所以看起来Postgres实例是作为超级用户安装的steve
。我猜没有postgres
系统用户。我不是Mac用户,但我确实找到了这些用于列出系统用户的命令:dscl。列出/用户并筛选出守护进程/进程帐户。list/Users | grep-v'.
我第一次尝试了它-当以steve
的身份登录时。由于权限问题,我无法创建新角色。但现在我看了看,这应该是可能的。请回答,我会奖励你的。
-U username
--username=username
Selects the user name of the database superuser. This defaults to the name of the effective user running initdb. It is really not important what the superuser's name is, but one might choose to keep the customary name postgres, even if the operating system user's name is different.