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;
    

For 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.



Become a Patron!

Follow us on Facebook and Twitter for latest update.

It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.

https://www.w3resource.com/PostgreSQL/snippets/upgrading-a-postgresql-user-to-superuser.php