关于postgresql 8.4:错误:必须是超级用户才能更改超级用户

ERROR: must be superuser to alter superusers

不幸的是,我已经从PostgreSQL中的postgres用户中删除了超级用户权限。 目前我在PostgreSQL中没有任何超级用户。 我想做超级用户。 那我该怎么做呢? 每次我试图向超级用户发布postgres。 我正面临这个问题。

1
Error : must be superuser to alter superusers.

提前致谢,


(假设您在Ubuntu机器上具有root访问权限)

要以超级用户身份输入psql,您需要:

1
sudo -u postgres psql

正如这篇SO帖子所示

如果没有名为postgres的用户,您需要首先在系统上创建它,具有:

1
sudo adduser newuser

否则,如果您遇到密码未被接受或根本没有创建的问题,您可以在此处关注(Ubuntu 14.04相关)说明或有关用户帐户的更多信息,请点击此处


除了Craig Ringer的回答之外,如果你不小心降级了你唯一的PostgreSQL用户,这里是MacOS和Brew的程序:

  • <5233>
  • 等待几秒钟和/或检查活动监视器以确保"postgres"不再运行。
  • /usr/local/Cellar/postgresql/10.4/bin/postgres --single -D /usr/local/var/postgres
  • backend> ALTER USER"yourname" with superuser;或您需要修复的任何权限
  • CTRL-D
  • brew services start postgresql

  • 您将不得不停止数据库系统并启动独立的后端,后端始终无条件地以超级用户身份运行。

    您可以将此后端用于ALTER您希望授予超级用户权限的用户。然后关闭独立后端并正常启动数据库。

    在进入单用户模式之前完全停止数据库服务器非常重要。如果有postmaster,PostgreSQL单用户模式将拒绝启动,但要确保您应该确保系统上没有运行PostgreSQL进程。在(几乎)任何情况下你都不应该删除postmaster.pid - 如果仍然有任何PostgreSQL进程访问该数据目录,那么几乎可以保证导致数据库损坏。

    究竟如何启动一个独立的后端取决于你的操作系统/发行版以及你如何安装PostgreSQL。您没有包含此信息,因此我只能在手册中指出postgres后端可执行文件。

    先做备份。

    In the single-user mode, the session user will be set to the user with ID 1, and implicit superuser powers are granted to this user. This user does not actually have to exist, so the single-user mode can be used to manually recover from certain kinds of accidental damage to the system catalogs.

    请参阅单用户模式的选项部分,以及底部的用法部分。您将要使用--single作为拥有数据库文件的unix用户运行postgres后端,并使用datadir的路径。在典型的Linux PostgreSQL安装上,这可能是这样的:

    1
    2
    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系统。


    对我有帮助:

    1
    sudo -u gleb psql postgres

    gleb是我的mac系统用户