Commit 4c69a6ff authored by Vicențiu Ciorbaru's avatar Vicențiu Ciorbaru

MDEV-6918 Create a way to see a user's default role.

Added an extra column to i_s_applicable_roles, named IS_DEFAULT.
The column displays which role is the default role for the user
querying the table.
parent bceb0b0b
......@@ -17,6 +17,7 @@ def information_schema ALL_PLUGINS PLUGIN_TYPE 4 NO varchar 80 240 NULL NULL NU
def information_schema ALL_PLUGINS PLUGIN_TYPE_VERSION 5 NO varchar 20 60 NULL NULL NULL utf8 utf8_general_ci varchar(20) select
def information_schema ALL_PLUGINS PLUGIN_VERSION 2 NO varchar 20 60 NULL NULL NULL utf8 utf8_general_ci varchar(20) select
def information_schema APPLICABLE_ROLES GRANTEE 1 NO varchar 190 570 NULL NULL NULL utf8 utf8_general_ci varchar(190) select
def information_schema APPLICABLE_ROLES IS_DEFAULT 4 NULL YES varchar 3 9 NULL NULL NULL utf8 utf8_general_ci varchar(3) select
def information_schema APPLICABLE_ROLES IS_GRANTABLE 3 NO varchar 3 9 NULL NULL NULL utf8 utf8_general_ci varchar(3) select
def information_schema APPLICABLE_ROLES ROLE_NAME 2 NO varchar 128 384 NULL NULL NULL utf8 utf8_general_ci varchar(128) select
def information_schema CHARACTER_SETS CHARACTER_SET_NAME 1 NO varchar 32 96 NULL NULL NULL utf8 utf8_general_ci varchar(32) select
......@@ -543,6 +544,7 @@ COL_CML TABLE_SCHEMA TABLE_NAME COLUMN_NAME DATA_TYPE CHARACTER_MAXIMUM_LENGTH C
3.0000 information_schema APPLICABLE_ROLES GRANTEE varchar 190 570 utf8 utf8_general_ci varchar(190)
3.0000 information_schema APPLICABLE_ROLES ROLE_NAME varchar 128 384 utf8 utf8_general_ci varchar(128)
3.0000 information_schema APPLICABLE_ROLES IS_GRANTABLE varchar 3 9 utf8 utf8_general_ci varchar(3)
3.0000 information_schema APPLICABLE_ROLES IS_DEFAULT varchar 3 9 utf8 utf8_general_ci varchar(3)
3.0000 information_schema CHARACTER_SETS CHARACTER_SET_NAME varchar 32 96 utf8 utf8_general_ci varchar(32)
3.0000 information_schema CHARACTER_SETS DEFAULT_COLLATE_NAME varchar 32 96 utf8 utf8_general_ci varchar(32)
3.0000 information_schema CHARACTER_SETS DESCRIPTION varchar 60 180 utf8 utf8_general_ci varchar(60)
......
......@@ -17,6 +17,7 @@ def information_schema ALL_PLUGINS PLUGIN_TYPE 4 NO varchar 80 240 NULL NULL NU
def information_schema ALL_PLUGINS PLUGIN_TYPE_VERSION 5 NO varchar 20 60 NULL NULL NULL utf8 utf8_general_ci varchar(20)
def information_schema ALL_PLUGINS PLUGIN_VERSION 2 NO varchar 20 60 NULL NULL NULL utf8 utf8_general_ci varchar(20)
def information_schema APPLICABLE_ROLES GRANTEE 1 NO varchar 190 570 NULL NULL NULL utf8 utf8_general_ci varchar(190)
def information_schema APPLICABLE_ROLES IS_DEFAULT 4 NULL YES varchar 3 9 NULL NULL NULL utf8 utf8_general_ci varchar(3)
def information_schema APPLICABLE_ROLES IS_GRANTABLE 3 NO varchar 3 9 NULL NULL NULL utf8 utf8_general_ci varchar(3)
def information_schema APPLICABLE_ROLES ROLE_NAME 2 NO varchar 128 384 NULL NULL NULL utf8 utf8_general_ci varchar(128)
def information_schema CHARACTER_SETS CHARACTER_SET_NAME 1 NO varchar 32 96 NULL NULL NULL utf8 utf8_general_ci varchar(32)
......@@ -197,6 +198,20 @@ def information_schema KEY_COLUMN_USAGE REFERENCED_TABLE_SCHEMA 10 NULL YES varc
def information_schema KEY_COLUMN_USAGE TABLE_CATALOG 4 NO varchar 512 1536 NULL NULL NULL utf8 utf8_general_ci varchar(512)
def information_schema KEY_COLUMN_USAGE TABLE_NAME 6 NO varchar 64 192 NULL NULL NULL utf8 utf8_general_ci varchar(64)
def information_schema KEY_COLUMN_USAGE TABLE_SCHEMA 5 NO varchar 64 192 NULL NULL NULL utf8 utf8_general_ci varchar(64)
def information_schema LOCALES DECIMAL_POINT 6 NO varchar 2 6 NULL NULL NULL utf8 utf8_general_ci varchar(2)
def information_schema LOCALES DESCRIPTION 3 NO varchar 255 765 NULL NULL NULL utf8 utf8_general_ci varchar(255)
def information_schema LOCALES ERROR_MESSAGE_LANGUAGE 8 NO varchar 64 192 NULL NULL NULL utf8 utf8_general_ci varchar(64)
def information_schema LOCALES ID 1 0 NO bigint NULL NULL 19 0 NULL NULL NULL bigint(4)
def information_schema LOCALES MAX_DAY_NAME_LENGTH 5 0 NO bigint NULL NULL 19 0 NULL NULL NULL bigint(4)
def information_schema LOCALES MAX_MONTH_NAME_LENGTH 4 0 NO bigint NULL NULL 19 0 NULL NULL NULL bigint(4)
def information_schema LOCALES NAME 2 NO varchar 255 765 NULL NULL NULL utf8 utf8_general_ci varchar(255)
def information_schema LOCALES THOUSAND_SEP 7 NO varchar 2 6 NULL NULL NULL utf8 utf8_general_ci varchar(2)
def information_schema METADATA_LOCK_INFO LOCK_DURATION 3 NULL YES varchar 30 90 NULL NULL NULL utf8 utf8_general_ci varchar(30)
def information_schema METADATA_LOCK_INFO LOCK_MODE 2 NULL YES varchar 24 72 NULL NULL NULL utf8 utf8_general_ci varchar(24)
def information_schema METADATA_LOCK_INFO LOCK_TYPE 4 NULL YES varchar 30 90 NULL NULL NULL utf8 utf8_general_ci varchar(30)
def information_schema METADATA_LOCK_INFO TABLE_NAME 6 NULL YES varchar 64 192 NULL NULL NULL utf8 utf8_general_ci varchar(64)
def information_schema METADATA_LOCK_INFO TABLE_SCHEMA 5 NULL YES varchar 64 192 NULL NULL NULL utf8 utf8_general_ci varchar(64)
def information_schema METADATA_LOCK_INFO THREAD_ID 1 0 NO bigint NULL NULL 20 0 NULL NULL NULL bigint(20) unsigned
def information_schema PARAMETERS CHARACTER_MAXIMUM_LENGTH 8 NULL YES int NULL NULL 10 0 NULL NULL NULL int(21)
def information_schema PARAMETERS CHARACTER_OCTET_LENGTH 9 NULL YES int NULL NULL 10 0 NULL NULL NULL int(21)
def information_schema PARAMETERS CHARACTER_SET_NAME 13 NULL YES varchar 64 192 NULL NULL NULL utf8 utf8_general_ci varchar(64)
......@@ -266,6 +281,14 @@ def information_schema PROCESSLIST STATE 7 NULL YES varchar 64 192 NULL NULL NUL
def information_schema PROCESSLIST TIME 6 0 NO int NULL NULL 10 0 NULL NULL NULL int(7)
def information_schema PROCESSLIST TIME_MS 9 0.000 NO decimal NULL NULL 22 3 NULL NULL NULL decimal(22,3)
def information_schema PROCESSLIST USER 2 NO varchar 128 384 NULL NULL NULL utf8 utf8_general_ci varchar(128)
def information_schema QUERY_CACHE_INFO RESULT_BLOCKS_COUNT 3 0 NO int NULL NULL 10 0 NULL NULL NULL int(11)
def information_schema QUERY_CACHE_INFO RESULT_BLOCKS_SIZE 4 0 NO bigint NULL NULL 19 0 NULL NULL NULL bigint(11)
def information_schema QUERY_CACHE_INFO RESULT_BLOCKS_SIZE_USED 5 0 NO bigint NULL NULL 19 0 NULL NULL NULL bigint(11)
def information_schema QUERY_CACHE_INFO STATEMENT_SCHEMA 1 NO varchar 192 576 NULL NULL NULL utf8 utf8_general_ci varchar(192)
def information_schema QUERY_CACHE_INFO STATEMENT_TEXT 2 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8 utf8_general_ci longtext
def information_schema QUERY_RESPONSE_TIME COUNT 2 0 NO int NULL NULL 10 0 NULL NULL NULL int(11) unsigned
def information_schema QUERY_RESPONSE_TIME TIME 1 NO varchar 14 42 NULL NULL NULL utf8 utf8_general_ci varchar(14)
def information_schema QUERY_RESPONSE_TIME TOTAL 3 NO varchar 14 42 NULL NULL NULL utf8 utf8_general_ci varchar(14)
def information_schema REFERENTIAL_CONSTRAINTS CONSTRAINT_CATALOG 1 NO varchar 512 1536 NULL NULL NULL utf8 utf8_general_ci varchar(512)
def information_schema REFERENTIAL_CONSTRAINTS CONSTRAINT_NAME 3 NO varchar 64 192 NULL NULL NULL utf8 utf8_general_ci varchar(64)
def information_schema REFERENTIAL_CONSTRAINTS CONSTRAINT_SCHEMA 2 NO varchar 64 192 NULL NULL NULL utf8 utf8_general_ci varchar(64)
......@@ -543,6 +566,7 @@ COL_CML TABLE_SCHEMA TABLE_NAME COLUMN_NAME DATA_TYPE CHARACTER_MAXIMUM_LENGTH C
3.0000 information_schema APPLICABLE_ROLES GRANTEE varchar 190 570 utf8 utf8_general_ci varchar(190)
3.0000 information_schema APPLICABLE_ROLES ROLE_NAME varchar 128 384 utf8 utf8_general_ci varchar(128)
3.0000 information_schema APPLICABLE_ROLES IS_GRANTABLE varchar 3 9 utf8 utf8_general_ci varchar(3)
3.0000 information_schema APPLICABLE_ROLES IS_DEFAULT varchar 3 9 utf8 utf8_general_ci varchar(3)
3.0000 information_schema CHARACTER_SETS CHARACTER_SET_NAME varchar 32 96 utf8 utf8_general_ci varchar(32)
3.0000 information_schema CHARACTER_SETS DEFAULT_COLLATE_NAME varchar 32 96 utf8 utf8_general_ci varchar(32)
3.0000 information_schema CHARACTER_SETS DESCRIPTION varchar 60 180 utf8 utf8_general_ci varchar(60)
......@@ -721,6 +745,20 @@ NULL information_schema KEY_COLUMN_USAGE POSITION_IN_UNIQUE_CONSTRAINT bigint NU
3.0000 information_schema KEY_COLUMN_USAGE REFERENCED_TABLE_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
3.0000 information_schema KEY_COLUMN_USAGE REFERENCED_TABLE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
3.0000 information_schema KEY_COLUMN_USAGE REFERENCED_COLUMN_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
NULL information_schema LOCALES ID bigint NULL NULL NULL NULL bigint(4)
3.0000 information_schema LOCALES NAME varchar 255 765 utf8 utf8_general_ci varchar(255)
3.0000 information_schema LOCALES DESCRIPTION varchar 255 765 utf8 utf8_general_ci varchar(255)
NULL information_schema LOCALES MAX_MONTH_NAME_LENGTH bigint NULL NULL NULL NULL bigint(4)
NULL information_schema LOCALES MAX_DAY_NAME_LENGTH bigint NULL NULL NULL NULL bigint(4)
3.0000 information_schema LOCALES DECIMAL_POINT varchar 2 6 utf8 utf8_general_ci varchar(2)
3.0000 information_schema LOCALES THOUSAND_SEP varchar 2 6 utf8 utf8_general_ci varchar(2)
3.0000 information_schema LOCALES ERROR_MESSAGE_LANGUAGE varchar 64 192 utf8 utf8_general_ci varchar(64)
NULL information_schema METADATA_LOCK_INFO THREAD_ID bigint NULL NULL NULL NULL bigint(20) unsigned
3.0000 information_schema METADATA_LOCK_INFO LOCK_MODE varchar 24 72 utf8 utf8_general_ci varchar(24)
3.0000 information_schema METADATA_LOCK_INFO LOCK_DURATION varchar 30 90 utf8 utf8_general_ci varchar(30)
3.0000 information_schema METADATA_LOCK_INFO LOCK_TYPE varchar 30 90 utf8 utf8_general_ci varchar(30)
3.0000 information_schema METADATA_LOCK_INFO TABLE_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
3.0000 information_schema METADATA_LOCK_INFO TABLE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
3.0000 information_schema PARAMETERS SPECIFIC_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512)
3.0000 information_schema PARAMETERS SPECIFIC_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
3.0000 information_schema PARAMETERS SPECIFIC_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
......@@ -790,6 +828,14 @@ NULL information_schema PROCESSLIST PROGRESS decimal NULL NULL NULL NULL decimal
NULL information_schema PROCESSLIST MEMORY_USED int NULL NULL NULL NULL int(7)
NULL information_schema PROCESSLIST EXAMINED_ROWS int NULL NULL NULL NULL int(7)
NULL information_schema PROCESSLIST QUERY_ID bigint NULL NULL NULL NULL bigint(4)
3.0000 information_schema QUERY_CACHE_INFO STATEMENT_SCHEMA varchar 192 576 utf8 utf8_general_ci varchar(192)
1.0000 information_schema QUERY_CACHE_INFO STATEMENT_TEXT longtext 4294967295 4294967295 utf8 utf8_general_ci longtext
NULL information_schema QUERY_CACHE_INFO RESULT_BLOCKS_COUNT int NULL NULL NULL NULL int(11)
NULL information_schema QUERY_CACHE_INFO RESULT_BLOCKS_SIZE bigint NULL NULL NULL NULL bigint(11)
NULL information_schema QUERY_CACHE_INFO RESULT_BLOCKS_SIZE_USED bigint NULL NULL NULL NULL bigint(11)
3.0000 information_schema QUERY_RESPONSE_TIME TIME varchar 14 42 utf8 utf8_general_ci varchar(14)
NULL information_schema QUERY_RESPONSE_TIME COUNT int NULL NULL NULL NULL int(11) unsigned
3.0000 information_schema QUERY_RESPONSE_TIME TOTAL varchar 14 42 utf8 utf8_general_ci varchar(14)
3.0000 information_schema REFERENTIAL_CONSTRAINTS CONSTRAINT_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512)
3.0000 information_schema REFERENTIAL_CONSTRAINTS CONSTRAINT_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
3.0000 information_schema REFERENTIAL_CONSTRAINTS CONSTRAINT_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
......
......@@ -428,6 +428,52 @@ user_comment
Separator -----------------------------------------------------
TABLE_CATALOG def
TABLE_SCHEMA information_schema
TABLE_NAME LOCALES
TABLE_TYPE SYSTEM VIEW
ENGINE MEMORY
VERSION 10
ROW_FORMAT Fixed
TABLE_ROWS #TBLR#
AVG_ROW_LENGTH #ARL#
DATA_LENGTH #DL#
MAX_DATA_LENGTH #MDL#
INDEX_LENGTH #IL#
DATA_FREE #DF#
AUTO_INCREMENT NULL
CREATE_TIME #CRT#
UPDATE_TIME #UT#
CHECK_TIME #CT#
TABLE_COLLATION utf8_general_ci
CHECKSUM NULL
CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
TABLE_CATALOG def
TABLE_SCHEMA information_schema
TABLE_NAME METADATA_LOCK_INFO
TABLE_TYPE SYSTEM VIEW
ENGINE MEMORY
VERSION 10
ROW_FORMAT Fixed
TABLE_ROWS #TBLR#
AVG_ROW_LENGTH #ARL#
DATA_LENGTH #DL#
MAX_DATA_LENGTH #MDL#
INDEX_LENGTH #IL#
DATA_FREE #DF#
AUTO_INCREMENT NULL
CREATE_TIME #CRT#
UPDATE_TIME #UT#
CHECK_TIME #CT#
TABLE_COLLATION utf8_general_ci
CHECKSUM NULL
CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
TABLE_CATALOG def
TABLE_SCHEMA information_schema
TABLE_NAME PARAMETERS
TABLE_TYPE SYSTEM VIEW
ENGINE MYISAM_OR_MARIA
......@@ -520,6 +566,52 @@ user_comment
Separator -----------------------------------------------------
TABLE_CATALOG def
TABLE_SCHEMA information_schema
TABLE_NAME QUERY_CACHE_INFO
TABLE_TYPE SYSTEM VIEW
ENGINE MYISAM_OR_MARIA
VERSION 10
ROW_FORMAT DYNAMIC_OR_PAGE
TABLE_ROWS #TBLR#
AVG_ROW_LENGTH #ARL#
DATA_LENGTH #DL#
MAX_DATA_LENGTH #MDL#
INDEX_LENGTH #IL#
DATA_FREE #DF#
AUTO_INCREMENT NULL
CREATE_TIME #CRT#
UPDATE_TIME #UT#
CHECK_TIME #CT#
TABLE_COLLATION utf8_general_ci
CHECKSUM NULL
CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
TABLE_CATALOG def
TABLE_SCHEMA information_schema
TABLE_NAME QUERY_RESPONSE_TIME
TABLE_TYPE SYSTEM VIEW
ENGINE MEMORY
VERSION 10
ROW_FORMAT Fixed
TABLE_ROWS #TBLR#
AVG_ROW_LENGTH #ARL#
DATA_LENGTH #DL#
MAX_DATA_LENGTH #MDL#
INDEX_LENGTH #IL#
DATA_FREE #DF#
AUTO_INCREMENT NULL
CREATE_TIME #CRT#
UPDATE_TIME #UT#
CHECK_TIME #CT#
TABLE_COLLATION utf8_general_ci
CHECKSUM NULL
CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
TABLE_CATALOG def
TABLE_SCHEMA information_schema
TABLE_NAME REFERENTIAL_CONSTRAINTS
TABLE_TYPE SYSTEM VIEW
ENGINE MEMORY
......@@ -1364,6 +1456,52 @@ user_comment
Separator -----------------------------------------------------
TABLE_CATALOG def
TABLE_SCHEMA information_schema
TABLE_NAME LOCALES
TABLE_TYPE SYSTEM VIEW
ENGINE MEMORY
VERSION 10
ROW_FORMAT Fixed
TABLE_ROWS #TBLR#
AVG_ROW_LENGTH #ARL#
DATA_LENGTH #DL#
MAX_DATA_LENGTH #MDL#
INDEX_LENGTH #IL#
DATA_FREE #DF#
AUTO_INCREMENT NULL
CREATE_TIME #CRT#
UPDATE_TIME #UT#
CHECK_TIME #CT#
TABLE_COLLATION utf8_general_ci
CHECKSUM NULL
CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
TABLE_CATALOG def
TABLE_SCHEMA information_schema
TABLE_NAME METADATA_LOCK_INFO
TABLE_TYPE SYSTEM VIEW
ENGINE MEMORY
VERSION 10
ROW_FORMAT Fixed
TABLE_ROWS #TBLR#
AVG_ROW_LENGTH #ARL#
DATA_LENGTH #DL#
MAX_DATA_LENGTH #MDL#
INDEX_LENGTH #IL#
DATA_FREE #DF#
AUTO_INCREMENT NULL
CREATE_TIME #CRT#
UPDATE_TIME #UT#
CHECK_TIME #CT#
TABLE_COLLATION utf8_general_ci
CHECKSUM NULL
CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
TABLE_CATALOG def
TABLE_SCHEMA information_schema
TABLE_NAME PARAMETERS
TABLE_TYPE SYSTEM VIEW
ENGINE MYISAM_OR_MARIA
......@@ -1456,6 +1594,52 @@ user_comment
Separator -----------------------------------------------------
TABLE_CATALOG def
TABLE_SCHEMA information_schema
TABLE_NAME QUERY_CACHE_INFO
TABLE_TYPE SYSTEM VIEW
ENGINE MYISAM_OR_MARIA
VERSION 10
ROW_FORMAT DYNAMIC_OR_PAGE
TABLE_ROWS #TBLR#
AVG_ROW_LENGTH #ARL#
DATA_LENGTH #DL#
MAX_DATA_LENGTH #MDL#
INDEX_LENGTH #IL#
DATA_FREE #DF#
AUTO_INCREMENT NULL
CREATE_TIME #CRT#
UPDATE_TIME #UT#
CHECK_TIME #CT#
TABLE_COLLATION utf8_general_ci
CHECKSUM NULL
CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
TABLE_CATALOG def
TABLE_SCHEMA information_schema
TABLE_NAME QUERY_RESPONSE_TIME
TABLE_TYPE SYSTEM VIEW
ENGINE MEMORY
VERSION 10
ROW_FORMAT Fixed
TABLE_ROWS #TBLR#
AVG_ROW_LENGTH #ARL#
DATA_LENGTH #DL#
MAX_DATA_LENGTH #MDL#
INDEX_LENGTH #IL#
DATA_FREE #DF#
AUTO_INCREMENT NULL
CREATE_TIME #CRT#
UPDATE_TIME #UT#
CHECK_TIME #CT#
TABLE_COLLATION utf8_general_ci
CHECKSUM NULL
CREATE_OPTIONS #CO#
TABLE_COMMENT #TC#
user_comment
Separator -----------------------------------------------------
TABLE_CATALOG def
TABLE_SCHEMA information_schema
TABLE_NAME REFERENTIAL_CONSTRAINTS
TABLE_TYPE SYSTEM VIEW
ENGINE MEMORY
......
......@@ -72,13 +72,13 @@ show grants for role4;
Grants for role4
GRANT USAGE ON *.* TO 'role4'
select * from information_schema.applicable_roles;
GRANTEE ROLE_NAME IS_GRANTABLE
role1 role2 NO
role1 role3 YES
role3 role4 YES
root@localhost role1 YES
root@localhost role2 YES
root@localhost role4 YES
GRANTEE ROLE_NAME IS_GRANTABLE IS_DEFAULT
role1 role2 NO NULL
role1 role3 YES NULL
role3 role4 YES NULL
root@localhost role1 YES NO
root@localhost role2 YES NO
root@localhost role4 YES NO
grant role2 to role1 with admin option;
revoke role1 from foo@localhost;
revoke admin option for role4 from role3;
......@@ -131,13 +131,13 @@ show grants for role4;
Grants for role4
GRANT USAGE ON *.* TO 'role4'
select * from information_schema.applicable_roles;
GRANTEE ROLE_NAME IS_GRANTABLE
role1 role2 YES
role1 role3 YES
role3 role4 NO
root@localhost role1 NO
root@localhost role2 YES
root@localhost role4 YES
GRANTEE ROLE_NAME IS_GRANTABLE IS_DEFAULT
role1 role2 YES NULL
role1 role3 YES NULL
role3 role4 NO NULL
root@localhost role1 NO NO
root@localhost role2 YES NO
root@localhost role4 YES NO
grant role1 to role4;
ERROR 28000: Access denied for user 'root'@'localhost'
grant role1 to role4 with admin option;
......
grant create user on *.* to foo@localhost;
drop user foo@localhost;
select * from information_schema.applicable_roles;
GRANTEE ROLE_NAME IS_GRANTABLE
GRANTEE ROLE_NAME IS_GRANTABLE IS_DEFAULT
show grants;
ERROR 42000: There is no such grant defined for user 'foo' on host 'localhost'
select current_user();
......
create user foo;
create role role1;
create role role2;
create role role3;
grant role1 to foo;
grant role2 to role1;
grant role3 to foo;
connect foo, localhost, foo;
select * from information_schema.applicable_roles;
GRANTEE ROLE_NAME IS_GRANTABLE IS_DEFAULT
foo@% role1 NO NO
foo@% role3 NO NO
role1 role2 NO NULL
set default role role3;
select * from information_schema.applicable_roles;
GRANTEE ROLE_NAME IS_GRANTABLE IS_DEFAULT
foo@% role1 NO NO
foo@% role3 NO YES
role1 role2 NO NULL
set default role role1;
select * from information_schema.applicable_roles;
GRANTEE ROLE_NAME IS_GRANTABLE IS_DEFAULT
foo@% role1 NO YES
foo@% role3 NO NO
role1 role2 NO NULL
disconnect foo;
connection default;
select * from information_schema.applicable_roles;
GRANTEE ROLE_NAME IS_GRANTABLE IS_DEFAULT
role1 role2 NO NULL
root@localhost role1 YES NO
root@localhost role2 YES NO
root@localhost role3 YES NO
set default role none for foo;
connect foo, localhost, foo;
select * from information_schema.applicable_roles;
GRANTEE ROLE_NAME IS_GRANTABLE IS_DEFAULT
foo@% role1 NO NO
foo@% role3 NO NO
role1 role2 NO NULL
disconnect foo;
connection default;
select * from information_schema.applicable_roles;
GRANTEE ROLE_NAME IS_GRANTABLE IS_DEFAULT
role1 role2 NO NULL
root@localhost role1 YES NO
root@localhost role2 YES NO
root@localhost role3 YES NO
set default role role1;
select * from information_schema.applicable_roles;
GRANTEE ROLE_NAME IS_GRANTABLE IS_DEFAULT
role1 role2 NO NULL
root@localhost role1 YES YES
root@localhost role2 YES NO
root@localhost role3 YES NO
set default role role2;
select * from information_schema.applicable_roles;
GRANTEE ROLE_NAME IS_GRANTABLE IS_DEFAULT
role1 role2 NO NULL
root@localhost role1 YES NO
root@localhost role2 YES YES
root@localhost role3 YES NO
set default role role3;
select * from information_schema.applicable_roles;
GRANTEE ROLE_NAME IS_GRANTABLE IS_DEFAULT
role1 role2 NO NULL
root@localhost role1 YES NO
root@localhost role2 YES NO
root@localhost role3 YES YES
set default role none;
select * from information_schema.applicable_roles;
GRANTEE ROLE_NAME IS_GRANTABLE IS_DEFAULT
role1 role2 NO NULL
root@localhost role1 YES NO
root@localhost role2 YES NO
root@localhost role3 YES NO
drop role role3;
drop role role2;
drop role role1;
drop user foo;
--enable_connect_log
create user foo;
create role role1;
create role role2;
create role role3;
grant role1 to foo;
grant role2 to role1;
grant role3 to foo;
connect (foo, localhost, foo);
--sorted_result
select * from information_schema.applicable_roles;
set default role role3;
--sorted_result
select * from information_schema.applicable_roles;
set default role role1;
--sorted_result
select * from information_schema.applicable_roles;
disconnect foo;
connection default;
--sorted_result
select * from information_schema.applicable_roles;
set default role none for foo;
connect (foo, localhost, foo);
--sorted_result
select * from information_schema.applicable_roles;
disconnect foo;
connection default;
--sorted_result
select * from information_schema.applicable_roles;
set default role role1;
--sorted_result
select * from information_schema.applicable_roles;
set default role role2;
--sorted_result
select * from information_schema.applicable_roles;
set default role role3;
--sorted_result
select * from information_schema.applicable_roles;
set default role none;
--sorted_result
select * from information_schema.applicable_roles;
drop role role3;
drop role role2;
drop role role1;
drop user foo;
......@@ -28,18 +28,18 @@ Grants for foo@localhost
GRANT USAGE ON *.* TO 'foo'@'localhost'
GRANT role10 TO 'foo'@'localhost'
select * from information_schema.applicable_roles;
GRANTEE ROLE_NAME IS_GRANTABLE
foo@localhost role10 NO
role10 role9 NO
role2 role1 NO
role4 role2 NO
role5 role2 NO
role5 role3 NO
role6 role4 NO
role6 role5 NO
role7 role5 NO
role9 role6 NO
role9 role7 NO
GRANTEE ROLE_NAME IS_GRANTABLE IS_DEFAULT
foo@localhost role10 NO NO
role10 role9 NO NULL
role2 role1 NO NULL
role4 role2 NO NULL
role5 role2 NO NULL
role5 role3 NO NULL
role6 role4 NO NULL
role6 role5 NO NULL
role7 role5 NO NULL
role9 role6 NO NULL
role9 role7 NO NULL
show status like 'debug%';
Variable_name Value
grant select on *.* to role1;
......
......@@ -32,18 +32,18 @@ Grants for foo@localhost
GRANT USAGE ON *.* TO 'foo'@'localhost'
GRANT role10 TO 'foo'@'localhost'
select * from information_schema.applicable_roles;
GRANTEE ROLE_NAME IS_GRANTABLE
foo@localhost role10 NO
role10 role9 NO
role2 role1 NO
role4 role2 NO
role5 role2 NO
role5 role3 NO
role6 role4 NO
role6 role5 NO
role7 role5 NO
role9 role6 NO
role9 role7 NO
GRANTEE ROLE_NAME IS_GRANTABLE IS_DEFAULT
foo@localhost role10 NO NO
role10 role9 NO NULL
role2 role1 NO NULL
role4 role2 NO NULL
role5 role2 NO NULL
role5 role3 NO NULL
role6 role4 NO NULL
role6 role5 NO NULL
role7 role5 NO NULL
role9 role6 NO NULL
role9 role7 NO NULL
show status like 'debug%';
Variable_name Value
Debug_role_merges_global 11
......
......@@ -23,15 +23,15 @@ user host
grant select on mysql.* to test_role2;
flush privileges;
select * from information_schema.applicable_roles;
GRANTEE ROLE_NAME IS_GRANTABLE
root@localhost test_role1 YES
root@localhost test_role2 YES
test_role1 test_role2 NO
GRANTEE ROLE_NAME IS_GRANTABLE IS_DEFAULT
root@localhost test_role1 YES NO
root@localhost test_role2 YES NO
test_role1 test_role2 NO NULL
select * from information_schema.applicable_roles;
GRANTEE ROLE_NAME IS_GRANTABLE
test_role1 test_role2 NO
test_user@localhost test_role1 NO
test_user@localhost test_role2 NO
GRANTEE ROLE_NAME IS_GRANTABLE IS_DEFAULT
test_role1 test_role2 NO NULL
test_user@localhost test_role1 NO NO
test_user@localhost test_role2 NO NO
show grants;
Grants for test_user@localhost
GRANT USAGE ON *.* TO 'test_user'@'localhost'
......
......@@ -10322,7 +10322,7 @@ struct APPLICABLE_ROLES_DATA
TABLE *table;
const LEX_STRING host;
const LEX_STRING user_and_host;
ACL_USER_BASE *user;
ACL_USER *user;
};
static int
......@@ -10349,6 +10349,17 @@ applicable_roles_insert(ACL_USER_BASE *grantee, ACL_ROLE *role, void *ptr)
else
table->field[2]->store(STRING_WITH_LEN("NO"), cs);
/* Default role is only valid when looking at a role granted to a user. */
if (!is_role)
{
if (data->user->default_rolename.length &&
!strcmp(data->user->default_rolename.str, role->user.str))
table->field[3]->store(STRING_WITH_LEN("YES"), cs);
else
table->field[3]->store(STRING_WITH_LEN("NO"), cs);
table->field[3]->set_notnull();
}
if (schema_table_store_record(table->in_use, table))
return -1;
return 0;
......
......@@ -8220,6 +8220,7 @@ ST_FIELD_INFO applicable_roles_fields_info[]=
{"GRANTEE", USERNAME_WITH_HOST_CHAR_LENGTH, MYSQL_TYPE_STRING, 0, 0, 0, SKIP_OPEN_TABLE},
{"ROLE_NAME", USERNAME_CHAR_LENGTH, MYSQL_TYPE_STRING, 0, 0, 0, SKIP_OPEN_TABLE},
{"IS_GRANTABLE", 3, MYSQL_TYPE_STRING, 0, 0, 0, SKIP_OPEN_TABLE},
{"IS_DEFAULT", 3, MYSQL_TYPE_STRING, 0, MY_I_S_MAYBE_NULL, 0, SKIP_OPEN_TABLE},
{0, 0, MYSQL_TYPE_STRING, 0, 0, 0, SKIP_OPEN_TABLE}
};
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment