w3resource

Upgrading a PostgreSQL User to Superuser


How to upgrade a User to Superuser in PostgreSQL

In PostgreSQL, a superuser has unrestricted access to all database functions, including administrative tasks and user management. If you need to grant a specific user superuser privileges, you can do so with the ALTER USER command. However, only an existing superuser can promote another user to superuser status.


Syntax to upgrade a user to Superuser

The command to make an existing PostgreSQL user a superuser is:

ALTER USER username WITH SUPERUSER;

Explanation:

  • username: The name of the user you wish to upgrade.
  • WITH SUPERUSER: Grants the superuser role to the specified user.

Example Code:

Suppose you have a user named zkmd_meoh and want to upgrade this user to superuser status.

-- Grant superuser privileges to zkmd_meoh
ALTER USER zkmd_meoh WITH SUPERUSER;  -- Elevates zkmd_meoh to a superuser

Explanation:

  • ALTER USER zkmd_meoh: Targets the user zkmd_meoh for modification.
  • WITH SUPERUSER: Adds superuser privileges, giving the user full access to all database commands and functions.

Additional Tips and Cautions

  • Confirm Existing Superuser Access: Only a superuser can execute ALTER USER to grant superuser privileges. Run the command while logged in as an existing superuser, such as postgres.
  • Revoke Superuser Privileges: If you need to revoke superuser status, you can use:
  • ALTER USER username WITH NOSUPERUSER;
    

Example:

ALTER USER zkmd_meoh WITH NOSUPERUSER;

Use Caution: Superuser access is powerful and grants unrestricted access to all databases and settings. Assign superuser status sparingly to maintain security and control.


Checking User Privileges

To verify a user’s privileges, including whether they are a superuser, use this query:

SELECT usename, usesuper FROM pg_catalog.pg_user WHERE usename = 'username';

Example:

Following query will return true in the usesuper column if zkmd_meoh is a superuser.

-- Check if zkmd_meoh is a superuser
SELECT usename, usesuper FROM pg_catalog.pg_user WHERE usename = 'zkmd_meoh';

Important Notes:

  • Best Practice: Only upgrade a user to superuser if necessary, as this role grants extensive permissions that impact database security.
  • Revoking Superuser Privileges: Remember to revoke superuser privileges when they are no longer required.

All PostgreSQL Questions, Answers, and Code Snippets Collection.



Follow us on Facebook and Twitter for latest update.