SET ROLE
This page documents the preview version (v2.23). Preview includes features under active development and is for development and testing only. For production, use the stable version (v2024.1). To learn more, see Versioning.
Synopsis
Use the SET ROLE
statement to set the current user of the current session to be the specified user.
Syntax
set_role ::= SET [ SESSION | LOCAL ] ROLE { role_name | NONE }
reset_role ::= RESET ROLE
Semantics
The specified role_name
must be a role that the current session user is a member of. Superusers can set to any role.
Once the role is set to role_name
, any further SQL commands will use the privileges available to that role.
To reset the role back to current user, RESET ROLE
or SET ROLE NONE
can be used.
Examples
- Change to new role John.
yugabyte=# select session_user, current_user;
session_user | current_user
--------------+--------------
yugabyte | yugabyte
(1 row)
yugabyte=# set role john;
SET
yugabyte=# select session_user, current_user;
session_user | current_user
--------------+--------------
yugabyte | john
(1 row)
- Changing to new role assumes the privileges available to that role.
yugabyte=# select session_user, current_user;
session_user | current_user
--------------+--------------
yugabyte | yugabyte
(1 row)
yugabyte=# create database db1;
CREATE DATABASE
yugabyte=# set role john;
SET
yugabyte=# select session_user, current_user;
session_user | current_user
--------------+--------------
yugabyte | john
(1 row)
yugabyte=# create database db2;
ERROR: permission denied to create database