MySQL 8.4 Reference Manual Including MySQL NDB Cluster 8.4
SET DEFAULT ROLE {NONE | ALL |role
[,role
] ...} TOuser
[,user
] ...
For each user
named immediately after
the TO
keyword, this statement defines which
roles become active when the user connects to the server and
authenticates, or when the user executes the
SET ROLE
DEFAULT
statement during a session.
SET DEFAULT ROLE
is alternative
syntax for ALTER
USER ... DEFAULT ROLE
(see
Section 15.7.1.1, “ALTER USER Statement”). However,
ALTER USER
can set the default
for only a single user, whereas SET DEFAULT
ROLE
can set the default for multiple users. On the
other hand, you can specify CURRENT_USER
as
the user name for the ALTER USER
statement, whereas you cannot for SET
DEFAULT ROLE
.
SET DEFAULT ROLE
requires these
privileges:
Setting the default roles for another user requires the
global CREATE USER
privilege,
or the UPDATE
privilege for
the mysql.default_roles
system table.
Setting the default roles for yourself requires no special privileges, as long as the roles you want as the default have been granted to you.
Each role name uses the format described in Section 8.2.5, “Specifying Role Names”. For example:
SET DEFAULT ROLE 'admin', 'developer' TO 'joe'@'10.0.0.1';
The host name part of the role name, if omitted, defaults to
'%'
.
The clause following the DEFAULT ROLE
keywords permits these values:
NONE
: Set the default to
NONE
(no roles).
ALL
: Set the default to all roles granted
to the account.
: Set the
default to the named roles, which must exist and be granted
to the account at the time role
[,
role
] ...SET DEFAULT
ROLE
is executed.
SET DEFAULT ROLE
and
SET ROLE
DEFAULT
are different statements:
SET DEFAULT ROLE
defines
which account roles to activate by default within account
sessions.
SET ROLE
DEFAULT
sets the active roles within the current
session to the current account default roles.
For role usage examples, see Section 8.2.10, “Using Roles”.