不幸的是,我已经从PostgreSQL中的postgres用户中删除了超级用户权限。目前我在PostgreSQL中没有任何超级用户。我想做超级用户。那我该怎么做呢?每次我试图向超级用户发布postgres。我正面临这个问题。
Error : must be superuser to alter superusers.
提前致谢,
答案 0 :(得分:8)
(假设您在Ubuntu机器上具有root访问权限)
要以超级用户身份输入psql,您需要:
sudo -u postgres psql
正如此SO帖子here
中所建议的那样如果没有名为postgres的用户,您需要首先在系统上创建它:
sudo adduser newuser
否则,如果您遇到密码未被接受或根本未创建的问题,您可以关注(Ubuntu 14.04相关)说明here或有关用户帐户的更多信息,请here
答案 1 :(得分:2)
您将不得不停止数据库系统并启动独立后端,它始终无条件地以超级用户身份运行。
您可以将此后端用于您希望授予超级用户权限的用户ALTER
。然后关闭独立后端并正常启动数据库。
在进入单用户模式之前完全停止数据库服务器非常重要。如果有postmaster,PostgreSQL单用户模式将拒绝启动,但要确保您应该确保系统上没有运行PostgreSQL进程。 Under (almost) no circumstances should you ever delete postmaster.pid
- 如果仍有任何PostgreSQL进程访问该数据目录,那么这几乎可以保证导致数据库损坏。
究竟如何启动一个独立的后端取决于你的操作系统/发行版以及你如何安装PostgreSQL。您尚未提供此信息,因此我只能指出the manual for the postgres
back-end executable。
先备份。
在单用户模式下,会话用户将设置为ID为1的用户,并向该用户授予隐式超级用户权限。该用户实际上不必存在,因此单用户模式可用于手动从某些类型的系统目录中意外损坏中恢复。
请参阅单用户模式选项部分,并在底部看 Usage 。您需要使用postgres
,作为拥有数据库文件的unix用户运行--single
后端,并使用datadir的路径。在典型的Linux PostgreSQL安装中,这可能类似于:
sudo systemctl stop postgresql-9.3.service
sudo -u postgres /usr/pgsql-9.3/bin/postgres --single -D /var/lib/pgsql/9.3/data
您的datadir和postgres
可执行文件位置可能完全不同。以上是使用http://yum.postgresql.org/的PGDG PostgreSQL包运行的Fedora系统。
答案 2 :(得分:2)
在Craig Ringer的答案中,如果您不小心将唯一的PostgreSQL用户降级,以下是MacOS和Brew的过程:
Axiom excluded_middle : forall P : Prop, P \/ ~P.
brew services stop postgresql
/usr/local/Cellar/postgresql/10.4/bin/postgres --single -D /usr/local/var/postgres
或您需要修复的任何特权backend> ALTER USER "yourname" with superuser;
CTRL-D
答案 3 :(得分:0)
对我有帮助:
sudo -u gleb psql postgres
gleb是我的Mac系统用户
答案 4 :(得分:0)
假设您的系统用户是“ec2-user”
所以试试这个以超级用户身份输入
psql -U ec2-user postgres
这将使用 postgres db 将您输入为 ec2-user 作为超级用户
现在,将 postgres 用户角色更改为超级用户
ALTER USER postgres WITH SUPERUSER;
从上面的控制台退出,现在您可以使用 postgres 用户作为超级用户打开 psql
psql -U postgres
注意:我在 PostgreSQL 12.5 上对此进行了测试