【问题标题】:postgres: upgrade a user to be a superuser?postgres:将用户升级为超级用户?
【发布时间】:2012-06-01 05:08:26
【问题描述】:

在 postgres 中,如何将现有用户更改为超级用户?由于各种原因,我不想删除现有用户。

# alter user myuser ...?

【问题讨论】:

    标签: sql postgresql


    【解决方案1】:
    ALTER USER myuser WITH SUPERUSER;
    

    您可以在Documentation阅读更多内容

    【讨论】:

    • 相反的操作是ALTER USER myuser WITH NOSUPERUSER
    • 我如何检测 myuser 当前是否是超级用户?
    • SELECT rolname, rolsuper FROM pg_roles; 到 @masterweily
    • 我得到:错误:必须是超级用户才能更改超级用户
    • @masterweily 您可以使用\du 列出所有用户/角色。
    【解决方案2】:

    扩展上述内容并快速参考:

    • 使用户成为超级用户:ALTER USER username WITH SUPERUSER;
    • 让用户不再是超级用户:ALTER USER username WITH NOSUPERUSER;
    • 只允许用户创建数据库:ALTER USER username CREATEDB;

    您还可以使用CREATEROLECREATEUSER 来授予用户权限,而无需将其设为超级用户。

    Documentation

    【讨论】:

    • CREATE ROLE dba WITH SUPERUSER; GRANT dba TO username; 用户 username 只能按需使用 SET ROLE dba; 成为超级用户。在日志文件中仍然记录在username 下的命令。
    【解决方案3】:

    $su - postgres
    $psql
    $ \du; 用于查看 db 上的用户
    选择您希望成为超级用户的用户,然后:
    $ALTER USER "user" with superuser;

    【讨论】:

    • 在这种情况下,您必须将用户名放在逗号内,例如ALTER USER "user" WITH SUPERUSER;
    • @Carlos.V 因为user是保留字,是的。
    【解决方案4】:

    有时升级到超级用户可能不是一个好的选择。 因此,除了超级用户之外,您还可以使用许多其他选项。 打开终端并输入以下内容:

    $ sudo su - postgres
    [sudo] password for user: (type your password here)
    $ psql
    postgres@user:~$ psql
    psql (10.5 (Ubuntu 10.5-1.pgdg18.04+1))
    Type "help" for help.
    
    postgres=# ALTER USER my_user WITH option
    

    同时列出选项列表

    SUPERUSER | NOSUPERUSER | CREATEDB | NOCREATEDB  | CREATEROLE | NOCREATEROLE |
    CREATEUSER | NOCREATEUSER | INHERIT | NOINHERIT | LOGIN | NOLOGIN | REPLICATION|
    NOREPLICATION | BYPASSRLS | NOBYPASSRLS | CONNECTION LIMIT connlimit | 
    [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password' | VALID UNTIL 'timestamp'
    

    所以在命令行中它看起来像

    postgres=# ALTER USER my_user WITH  LOGIN
    

    或使用加密密码。

    postgres=# ALTER USER my_user  WITH ENCRYPTED PASSWORD '5d41402abc4b2a76b9719d911017c592';
    

    或在特定时间后撤销权限。

    postgres=# ALTER USER my_user  WITH VALID UNTIL '2019-12-29 19:09:00';
    

    【讨论】:

      【解决方案5】:

      运行此命令

      alter user myuser with superuser;
      

      如果您想查看用户的权限,请运行以下命令

      \du
      

      【讨论】:

        【解决方案6】:

        您可以创建SUPERUSER 或推广USER,所以适合您的情况

        $ sudo -u postgres psql -c "ALTER USER myuser WITH SUPERUSER;"
        

        或回滚

        $ sudo -u postgres psql -c "ALTER USER myuser WITH NOSUPERUSER;"
        

        为防止在您设置密码时记录命令,请在其前面插入一个空格,但请检查您的系统是否支持此选项。

        $  sudo -u postgres psql -c "CREATE USER my_user WITH PASSWORD 'my_pass';"
        $  sudo -u postgres psql -c "CREATE USER my_user WITH SUPERUSER PASSWORD 'my_pass';"
        

        【讨论】:

          【解决方案7】:
          alter user username superuser;
          

          【讨论】:

            【解决方案8】:

            如果您因为使用 Amazon Redshift 而达到此目标,则无法分配 SUPERUSER

            ALTER USER <username> SUPERUSER;
            

            改为分配CREATEUSER

            ALTER USER <username> CREATEUSER;
            

            显然,SUPERUSER 在 Amazon Redshift 集群中不是可用的用户分配。我对此感到非常困惑。

            https://docs.aws.amazon.com/redshift/latest/dg/r_superusers.html

            截图显示:

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2016-12-18
              • 1970-01-01
              • 1970-01-01
              • 2019-01-26
              • 2022-01-25
              相关资源
              最近更新 更多