Commit 7dda6987 authored by Sergei Golubchik's avatar Sergei Golubchik

rename columns in mysql.roles_mapping to be consistent with other privilege tables

parent b2f16628
...@@ -4,12 +4,12 @@ create user u1; ...@@ -4,12 +4,12 @@ create user u1;
set role r1; set role r1;
grant r1 to u1; grant r1 to u1;
select * from mysql.roles_mapping; select * from mysql.roles_mapping;
HostFk UserFk RoleFk Host User Role
% u1 r1 % u1 r1
localhost root r1 localhost root r1
drop user u1; drop user u1;
select * from mysql.roles_mapping; select * from mysql.roles_mapping;
HostFk UserFk RoleFk Host User Role
localhost root r1 localhost root r1
show grants; show grants;
Grants for root@localhost Grants for root@localhost
...@@ -19,7 +19,7 @@ GRANT PROXY ON ''@'%' TO 'root'@'localhost' WITH GRANT OPTION ...@@ -19,7 +19,7 @@ GRANT PROXY ON ''@'%' TO 'root'@'localhost' WITH GRANT OPTION
GRANT USAGE ON *.* TO 'r1' GRANT USAGE ON *.* TO 'r1'
drop role r1; drop role r1;
select * from mysql.roles_mapping; select * from mysql.roles_mapping;
HostFk UserFk RoleFk Host User Role
show grants; show grants;
Grants for root@localhost Grants for root@localhost
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION
......
...@@ -14,7 +14,7 @@ show grants for u2; ...@@ -14,7 +14,7 @@ show grants for u2;
Grants for u2@% Grants for u2@%
GRANT USAGE ON *.* TO 'u2'@'%' GRANT USAGE ON *.* TO 'u2'@'%'
select * from mysql.roles_mapping; select * from mysql.roles_mapping;
HostFk UserFk RoleFk Host User Role
% u1 r1 % u1 r1
revoke r1 from u1; revoke r1 from u1;
revoke r1 from u1; revoke r1 from u1;
...@@ -23,7 +23,7 @@ show grants for u1; ...@@ -23,7 +23,7 @@ show grants for u1;
Grants for u1@% Grants for u1@%
GRANT USAGE ON *.* TO 'u1'@'%' GRANT USAGE ON *.* TO 'u1'@'%'
select * from mysql.roles_mapping; select * from mysql.roles_mapping;
HostFk UserFk RoleFk Host User Role
grant r1 to u1; grant r1 to u1;
grant r1 to u1; grant r1 to u1;
ERROR HY000: Cannot grant role 'r1' to: 'u1'. ERROR HY000: Cannot grant role 'r1' to: 'u1'.
...@@ -32,23 +32,23 @@ Grants for u1@% ...@@ -32,23 +32,23 @@ Grants for u1@%
GRANT r1 TO 'u1'@'%' GRANT r1 TO 'u1'@'%'
GRANT USAGE ON *.* TO 'u1'@'%' GRANT USAGE ON *.* TO 'u1'@'%'
select * from mysql.roles_mapping; select * from mysql.roles_mapping;
HostFk UserFk RoleFk Host User Role
% u1 r1 % u1 r1
drop role r1; drop role r1;
show grants for u1; show grants for u1;
Grants for u1@% Grants for u1@%
GRANT USAGE ON *.* TO 'u1'@'%' GRANT USAGE ON *.* TO 'u1'@'%'
select * from mysql.roles_mapping; select * from mysql.roles_mapping;
HostFk UserFk RoleFk Host User Role
create role r1; create role r1;
grant r1 to u1; grant r1 to u1;
select * from mysql.roles_mapping; select * from mysql.roles_mapping;
HostFk UserFk RoleFk Host User Role
% u1 r1 % u1 r1
drop user u1; drop user u1;
show grants for u1; show grants for u1;
ERROR 42000: There is no such grant defined for user 'u1' on host '%' ERROR 42000: There is no such grant defined for user 'u1' on host '%'
select * from mysql.roles_mapping; select * from mysql.roles_mapping;
HostFk UserFk RoleFk Host User Role
drop role r1; drop role r1;
drop user u2; drop user u2;
create user test_user@localhost; create user test_user@localhost;
create role test_role1; create role test_role1;
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('localhost', insert into mysql.roles_mapping values ('localhost', 'test_user', 'test_role1');
'test_user',
'test_role1');
create role test_role2; create role test_role2;
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('', insert into mysql.roles_mapping values ('', 'test_role1', 'test_role2');
'test_role1',
'test_role2');
flush privileges; flush privileges;
use mysql; use mysql;
select * from roles_mapping; select * from roles_mapping;
HostFk UserFk RoleFk Host User Role
test_role1 test_role2 test_role1 test_role2
localhost test_user test_role1 localhost test_user test_role1
rename user 'test_user'@'localhost' to 'test_user_rm'@'newhost'; rename user 'test_user'@'localhost' to 'test_user_rm'@'newhost';
...@@ -20,7 +16,7 @@ test_role1 ...@@ -20,7 +16,7 @@ test_role1
test_role2 test_role2
test_user_rm newhost test_user_rm newhost
select * from roles_mapping; select * from roles_mapping;
HostFk UserFk RoleFk Host User Role
test_role1 test_role2 test_role1 test_role2
newhost test_user_rm test_role1 newhost test_user_rm test_role1
delete from mysql.roles_mapping; delete from mysql.roles_mapping;
......
create user 'test_user'@'localhost'; create user 'test_user'@'localhost';
create role test_role1; create role test_role1;
create role test_role2; create role test_role2;
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('localhost', insert into mysql.roles_mapping values ('localhost', 'test_user', 'test_role1');
'test_user', insert into mysql.roles_mapping values ('localhost', 'test_user', 'test_role2');
'test_role1'); insert into mysql.roles_mapping values ('', 'test_role1', 'test_role2');
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('localhost',
'test_user',
'test_role2');
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('',
'test_role1',
'test_role2');
select user, host from mysql.user where user not like 'root'; select user, host from mysql.user where user not like 'root';
user host user host
test_role1 test_role1
test_role2 test_role2
test_user localhost test_user localhost
select * from mysql.roles_mapping; select * from mysql.roles_mapping;
HostFk UserFk RoleFk Host User Role
test_role1 test_role2 test_role1 test_role2
localhost test_user test_role1 localhost test_user test_role1
localhost test_user test_role2 localhost test_user test_role2
...@@ -37,7 +31,7 @@ select current_user(), current_role(); ...@@ -37,7 +31,7 @@ select current_user(), current_role();
current_user() current_role() current_user() current_role()
test_user@localhost test_role1 test_user@localhost test_role1
select * from mysql.roles_mapping; select * from mysql.roles_mapping;
HostFk UserFk RoleFk Host User Role
test_role1 test_role2 test_role1 test_role2
localhost test_user test_role1 localhost test_user test_role1
localhost test_user test_role2 localhost test_user test_role2
...@@ -52,7 +46,7 @@ select current_user(), current_role(); ...@@ -52,7 +46,7 @@ select current_user(), current_role();
current_user() current_role() current_user() current_role()
test_user@localhost test_role2 test_user@localhost test_role2
select * from mysql.roles_mapping; select * from mysql.roles_mapping;
HostFk UserFk RoleFk Host User Role
test_role1 test_role2 test_role1 test_role2
localhost test_user test_role1 localhost test_user test_role1
localhost test_user test_role2 localhost test_user test_role2
...@@ -60,6 +54,6 @@ drop user 'test_user'@'localhost'; ...@@ -60,6 +54,6 @@ drop user 'test_user'@'localhost';
revoke select on mysql.* from test_role2; revoke select on mysql.* from test_role2;
delete from mysql.user where user='test_role1'; delete from mysql.user where user='test_role1';
delete from mysql.user where user='test_role2'; delete from mysql.user where user='test_role2';
delete from mysql.roles_mapping where RoleFk='test_role1'; delete from mysql.roles_mapping where Role='test_role1';
delete from mysql.roles_mapping where RoleFk='test_role2'; delete from mysql.roles_mapping where Role='test_role2';
flush privileges; flush privileges;
create user 'test_user'@'localhost'; create user 'test_user'@'localhost';
create role test_role1; create role test_role1;
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('localhost', insert into mysql.roles_mapping values ('localhost', 'test_user', 'test_role1');
'test_user',
'test_role1');
select user, host from mysql.user where user not like 'root'; select user, host from mysql.user where user not like 'root';
user host user host
test_role1 test_role1
test_user localhost test_user localhost
select * from mysql.roles_mapping; select * from mysql.roles_mapping;
HostFk UserFk RoleFk Host User Role
localhost test_user test_role1 localhost test_user test_role1
flush privileges; flush privileges;
grant select on mysql.* to test_role1; grant select on mysql.* to test_role1;
...@@ -24,14 +22,12 @@ select current_user(), current_role(); ...@@ -24,14 +22,12 @@ select current_user(), current_role();
current_user() current_role() current_user() current_role()
test_user@localhost test_role1 test_user@localhost test_role1
select * from mysql.roles_mapping; select * from mysql.roles_mapping;
HostFk UserFk RoleFk Host User Role
localhost test_user test_role1 localhost test_user test_role1
insert into mysql.user (user, host) values ('Dummy', 'Dummy'); insert into mysql.user (user, host) values ('Dummy', 'Dummy');
ERROR 42000: INSERT command denied to user 'test_user'@'localhost' for table 'user' ERROR 42000: INSERT command denied to user 'test_user'@'localhost' for table 'user'
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('localhost', insert into mysql.roles_mapping values ('localhost', 'test_user', 'test_role2');
'test_user', delete from mysql.roles_mapping where Role='test_role2';
'test_role2');
delete from mysql.roles_mapping where RoleFk='test_role2';
use mysql; use mysql;
set role none; set role none;
select current_user(), current_role(); select current_user(), current_role();
...@@ -43,15 +39,13 @@ select * from mysql.roles_mapping; ...@@ -43,15 +39,13 @@ select * from mysql.roles_mapping;
ERROR 42000: SELECT command denied to user 'test_user'@'localhost' for table 'roles_mapping' ERROR 42000: SELECT command denied to user 'test_user'@'localhost' for table 'roles_mapping'
insert into mysql.user (user, host) values ('Dummy', 'Dummy'); insert into mysql.user (user, host) values ('Dummy', 'Dummy');
ERROR 42000: INSERT command denied to user 'test_user'@'localhost' for table 'user' ERROR 42000: INSERT command denied to user 'test_user'@'localhost' for table 'user'
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('localhost', insert into mysql.roles_mapping values ('localhost', 'test_user', 'test_role2');
'test_user',
'test_role2');
ERROR 42000: INSERT command denied to user 'test_user'@'localhost' for table 'roles_mapping' ERROR 42000: INSERT command denied to user 'test_user'@'localhost' for table 'roles_mapping'
delete from mysql.roles_mapping where RoleFk='test_role2'; delete from mysql.roles_mapping where Role='test_role2';
ERROR 42000: DELETE command denied to user 'test_user'@'localhost' for table 'roles_mapping' ERROR 42000: DELETE command denied to user 'test_user'@'localhost' for table 'roles_mapping'
drop user 'test_user'@'localhost'; drop user 'test_user'@'localhost';
revoke select on mysql.* from test_role1; revoke select on mysql.* from test_role1;
revoke insert, delete on mysql.roles_mapping from test_role1; revoke insert, delete on mysql.roles_mapping from test_role1;
drop role test_role1; drop role test_role1;
delete from mysql.roles_mapping where RoleFk='test_role1'; delete from mysql.roles_mapping where Role='test_role1';
flush privileges; flush privileges;
...@@ -35,27 +35,13 @@ Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv D ...@@ -35,27 +35,13 @@ Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv D
select * from mysql.user where user='r_rld'; select * from mysql.user where user='r_rld';
Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections plugin authentication_string is_role Host User Password Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Reload_priv Shutdown_priv Process_priv File_priv Grant_priv References_priv Index_priv Alter_priv Show_db_priv Super_priv Create_tmp_table_priv Lock_tables_priv Execute_priv Repl_slave_priv Repl_client_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Create_user_priv Event_priv Trigger_priv Create_tablespace_priv ssl_type ssl_cipher x509_issuer x509_subject max_questions max_updates max_connections max_user_connections plugin authentication_string is_role
% r_rld N N N N N N Y N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0 Y % r_rld N N N N N N Y N N N N N N N N N N N N N N N N N N N N N N 0 0 0 0 Y
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('localhost', insert into mysql.roles_mapping values ('localhost', 'test_user', 'r_sel');
'test_user', insert into mysql.roles_mapping values ('localhost', 'test_user', 'r_ins');
'r_sel'); insert into mysql.roles_mapping values ('localhost', 'test_user', 'r_upd');
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('localhost', insert into mysql.roles_mapping values ('localhost', 'test_user', 'r_del');
'test_user', insert into mysql.roles_mapping values ('localhost', 'test_user', 'r_crt');
'r_ins'); insert into mysql.roles_mapping values ('localhost', 'test_user', 'r_drp');
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('localhost', insert into mysql.roles_mapping values ('localhost', 'test_user', 'r_rld');
'test_user',
'r_upd');
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('localhost',
'test_user',
'r_del');
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('localhost',
'test_user',
'r_crt');
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('localhost',
'test_user',
'r_drp');
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('localhost',
'test_user',
'r_rld');
flush privileges; flush privileges;
select * from mysql.roles_mapping; select * from mysql.roles_mapping;
ERROR 42000: SELECT command denied to user 'test_user'@'localhost' for table 'roles_mapping' ERROR 42000: SELECT command denied to user 'test_user'@'localhost' for table 'roles_mapping'
...@@ -88,7 +74,7 @@ GRANT r_rld TO 'test_user'@'localhost' ...@@ -88,7 +74,7 @@ GRANT r_rld TO 'test_user'@'localhost'
GRANT r_sel TO 'test_user'@'localhost' GRANT r_sel TO 'test_user'@'localhost'
GRANT r_upd TO 'test_user'@'localhost' GRANT r_upd TO 'test_user'@'localhost'
select * from mysql.roles_mapping; select * from mysql.roles_mapping;
HostFk UserFk RoleFk Host User Role
localhost test_user r_crt localhost test_user r_crt
localhost test_user r_del localhost test_user r_del
localhost test_user r_drp localhost test_user r_drp
...@@ -113,9 +99,7 @@ GRANT r_sel TO 'test_user'@'localhost' ...@@ -113,9 +99,7 @@ GRANT r_sel TO 'test_user'@'localhost'
GRANT r_upd TO 'test_user'@'localhost' GRANT r_upd TO 'test_user'@'localhost'
select * from mysql.roles_mapping; select * from mysql.roles_mapping;
ERROR 42000: SELECT command denied to user 'test_user'@'localhost' for table 'roles_mapping' ERROR 42000: SELECT command denied to user 'test_user'@'localhost' for table 'roles_mapping'
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('', insert into mysql.roles_mapping values ('', 'r_sel', 'r_rld');
'r_sel',
'r_rld');
flush privileges; flush privileges;
ERROR 42000: Access denied; you need (at least one of) the RELOAD privilege(s) for this operation ERROR 42000: Access denied; you need (at least one of) the RELOAD privilege(s) for this operation
set role r_rld; set role r_rld;
...@@ -138,21 +122,11 @@ set role r_ins; ...@@ -138,21 +122,11 @@ set role r_ins;
select current_user(), current_role(); select current_user(), current_role();
current_user() current_role() current_user() current_role()
test_user@localhost r_ins test_user@localhost r_ins
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('', insert into mysql.roles_mapping values ('', 'r_sel', 'r_upd');
'r_sel', insert into mysql.roles_mapping values ('', 'r_sel', 'r_del');
'r_upd'); insert into mysql.roles_mapping values ('', 'r_sel', 'r_crt');
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('', insert into mysql.roles_mapping values ('', 'r_sel', 'r_drp');
'r_sel', insert into mysql.roles_mapping values ('', 'r_del', 'r_ins');
'r_del');
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('',
'r_sel',
'r_crt');
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('',
'r_sel',
'r_drp');
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('',
'r_del',
'r_ins');
set role r_rld; set role r_rld;
select current_user(), current_role(); select current_user(), current_role();
current_user() current_role() current_user() current_role()
...@@ -162,7 +136,7 @@ set role r_sel; ...@@ -162,7 +136,7 @@ set role r_sel;
select current_user(), current_role(); select current_user(), current_role();
current_user() current_role() current_user() current_role()
test_user@localhost r_sel test_user@localhost r_sel
update mysql.roles_mapping set RoleFk='r_ins' where RoleFk='r_ins_wrong'; update mysql.roles_mapping set Role='r_ins' where Role='r_ins_wrong';
flush privileges; flush privileges;
set role r_sel; set role r_sel;
select current_user(), current_role(); select current_user(), current_role();
...@@ -173,7 +147,7 @@ insert into mysql.random_test_table values (1); ...@@ -173,7 +147,7 @@ insert into mysql.random_test_table values (1);
select * from mysql.random_test_table; select * from mysql.random_test_table;
id id
1 1
delete from mysql.roles_mapping where RoleFk='r_ins'; delete from mysql.roles_mapping where Role='r_ins';
flush privileges; flush privileges;
set role r_sel; set role r_sel;
select current_user(), current_role(); select current_user(), current_role();
...@@ -183,6 +157,6 @@ insert into mysql.random_test_table values (1); ...@@ -183,6 +157,6 @@ insert into mysql.random_test_table values (1);
ERROR 42000: INSERT command denied to user 'test_user'@'localhost' for table 'random_test_table' ERROR 42000: INSERT command denied to user 'test_user'@'localhost' for table 'random_test_table'
drop table mysql.random_test_table; drop table mysql.random_test_table;
delete from mysql.user where user like 'r\_%'; delete from mysql.user where user like 'r\_%';
delete from mysql.roles_mapping where RoleFk like 'r\_%'; delete from mysql.roles_mapping where Role like 'r\_%';
flush privileges; flush privileges;
drop user 'test_user'@'localhost'; drop user 'test_user'@'localhost';
create user 'test_user'@'localhost'; create user 'test_user'@'localhost';
create user 'test_role1'@''; create user 'test_role1'@'';
update mysql.user set is_role='Y' where user='test_role1'; update mysql.user set is_role='Y' where user='test_role1';
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('localhost', insert into mysql.roles_mapping values ('localhost', 'test_user', 'test_role1');
'test_user',
'test_role1');
create user 'test_role2'@''; create user 'test_role2'@'';
update mysql.user set is_role='Y' where user='test_role2'; update mysql.user set is_role='Y' where user='test_role2';
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('', insert into mysql.roles_mapping values ('', 'test_role1', 'test_role2');
'test_role1',
'test_role2');
flush privileges; flush privileges;
select user, host from mysql.user where user not like 'root'; select user, host from mysql.user where user not like 'root';
user host user host
test_role1 % test_role1 %
test_role2 % test_role2 %
test_user localhost test_user localhost
select * from mysql.roles_mapping where UserFk like 'test_user'; select * from mysql.roles_mapping where User like 'test_user';
HostFk UserFk RoleFk Host User Role
localhost test_user test_role1 localhost test_user test_role1
select * from mysql.roles_mapping where UserFk like 'test_role1'; select * from mysql.roles_mapping where User like 'test_role1';
HostFk UserFk RoleFk Host User Role
test_role1 test_role2 test_role1 test_role2
grant select on *.* to 'test_role2'@''; grant select on *.* to 'test_role2'@'';
select * from mysql.user where user like 'test_role1'; select * from mysql.user where user like 'test_role1';
...@@ -49,8 +45,8 @@ GRANT USAGE ON *.* TO 'test_role1' ...@@ -49,8 +45,8 @@ GRANT USAGE ON *.* TO 'test_role1'
GRANT USAGE ON *.* TO 'test_user'@'localhost' GRANT USAGE ON *.* TO 'test_user'@'localhost'
GRANT test_role1 TO 'test_user'@'localhost' GRANT test_role1 TO 'test_user'@'localhost'
GRANT test_role2 TO 'test_role1' GRANT test_role2 TO 'test_role1'
select * from mysql.roles_mapping where HostFk=''; select * from mysql.roles_mapping where Host='';
HostFk UserFk RoleFk Host User Role
test_role1 test_role2 test_role1 test_role2
show grants; show grants;
Grants for test_user@localhost Grants for test_user@localhost
...@@ -99,8 +95,8 @@ GRANT USAGE ON *.* TO 'test_role1' ...@@ -99,8 +95,8 @@ GRANT USAGE ON *.* TO 'test_role1'
GRANT USAGE ON *.* TO 'test_user'@'localhost' GRANT USAGE ON *.* TO 'test_user'@'localhost'
GRANT test_role1 TO 'test_user'@'localhost' GRANT test_role1 TO 'test_user'@'localhost'
GRANT test_role2 TO 'test_role1' GRANT test_role2 TO 'test_role1'
select * from mysql.roles_mapping where HostFk=''; select * from mysql.roles_mapping where Host='';
HostFk UserFk RoleFk Host User Role
test_role1 test_role2 test_role1 test_role2
show grants; show grants;
Grants for test_user@localhost Grants for test_user@localhost
......
...@@ -2,15 +2,9 @@ create user 'test_user'@'localhost'; ...@@ -2,15 +2,9 @@ create user 'test_user'@'localhost';
create role test_role1; create role test_role1;
create role test_role2; create role test_role2;
create role test_role3; create role test_role3;
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('localhost', insert into mysql.roles_mapping values ('localhost', 'test_user', 'test_role1');
'test_user', insert into mysql.roles_mapping values ('localhost', 'test_user', 'test_role3');
'test_role1'); insert into mysql.roles_mapping values ('', 'test_role1', 'test_role2');
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('localhost',
'test_user',
'test_role3');
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('',
'test_role1',
'test_role2');
select user, host from mysql.user where user not like 'root'; select user, host from mysql.user where user not like 'root';
user host user host
test_role1 test_role1
...@@ -18,7 +12,7 @@ test_role2 ...@@ -18,7 +12,7 @@ test_role2
test_role3 test_role3
test_user localhost test_user localhost
select * from mysql.roles_mapping; select * from mysql.roles_mapping;
HostFk UserFk RoleFk Host User Role
test_role1 test_role2 test_role1 test_role2
localhost test_user test_role1 localhost test_user test_role1
localhost test_user test_role3 localhost test_user test_role3
...@@ -101,7 +95,7 @@ revoke execute on function mysql.test_func from test_role2; ...@@ -101,7 +95,7 @@ revoke execute on function mysql.test_func from test_role2;
revoke execute on procedure mysql.test_proc from test_role2; revoke execute on procedure mysql.test_proc from test_role2;
revoke execute on mysql.* from test_role3; revoke execute on mysql.* from test_role3;
delete from mysql.user where user like'test_%'; delete from mysql.user where user like'test_%';
delete from mysql.roles_mapping where RoleFk like 'test%'; delete from mysql.roles_mapping where Role like 'test%';
drop function mysql.test_func; drop function mysql.test_func;
drop procedure mysql.test_proc; drop procedure mysql.test_proc;
Warnings: Warnings:
......
create user 'test_user'@'localhost'; create user 'test_user'@'localhost';
create user 'test_role1'@''; create user 'test_role1'@'';
update mysql.user set is_role='Y' where user='test_role1'; update mysql.user set is_role='Y' where user='test_role1';
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('localhost', insert into mysql.roles_mapping values ('localhost', 'test_user', 'test_role1');
'test_user',
'test_role1');
select user, host from mysql.user where user not like 'root'; select user, host from mysql.user where user not like 'root';
user host user host
test_role1 % test_role1 %
test_user localhost test_user localhost
select * from mysql.roles_mapping; select * from mysql.roles_mapping;
HostFk UserFk RoleFk Host User Role
localhost test_user test_role1 localhost test_user test_role1
grant select on *.* to 'test_role1'@''; grant select on *.* to 'test_role1'@'';
select * from mysql.user where user='test_role1'; select * from mysql.user where user='test_role1';
...@@ -35,7 +33,7 @@ GRANT SELECT ON *.* TO 'test_role1' ...@@ -35,7 +33,7 @@ GRANT SELECT ON *.* TO 'test_role1'
GRANT USAGE ON *.* TO 'test_user'@'localhost' GRANT USAGE ON *.* TO 'test_user'@'localhost'
GRANT test_role1 TO 'test_user'@'localhost' GRANT test_role1 TO 'test_user'@'localhost'
select * from mysql.roles_mapping; select * from mysql.roles_mapping;
HostFk UserFk RoleFk Host User Role
localhost test_user test_role1 localhost test_user test_role1
set role none; set role none;
select current_user(), current_role(); select current_user(), current_role();
...@@ -44,6 +42,6 @@ test_user@localhost NULL ...@@ -44,6 +42,6 @@ test_user@localhost NULL
select * from mysql.roles_mapping; select * from mysql.roles_mapping;
ERROR 42000: SELECT command denied to user 'test_user'@'localhost' for table 'roles_mapping' ERROR 42000: SELECT command denied to user 'test_user'@'localhost' for table 'roles_mapping'
delete from mysql.user where user='test_role1'; delete from mysql.user where user='test_role1';
delete from mysql.roles_mapping where RoleFk='test_role1'; delete from mysql.roles_mapping where Role='test_role1';
flush privileges; flush privileges;
drop user 'test_user'@'localhost'; drop user 'test_user'@'localhost';
create user 'test_user'@'localhost'; create user 'test_user'@'localhost';
create role test_role1; create role test_role1;
create role test_role2; create role test_role2;
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('localhost', insert into mysql.roles_mapping values ('localhost', 'test_user', 'test_role1');
'test_user', insert into mysql.roles_mapping values ('', 'test_role1', 'test_role2');
'test_role1');
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('',
'test_role1',
'test_role2');
select user, host from mysql.user where user not like 'root'; select user, host from mysql.user where user not like 'root';
user host user host
test_role1 test_role1
test_role2 test_role2
test_user localhost test_user localhost
select * from mysql.roles_mapping; select * from mysql.roles_mapping;
HostFk UserFk RoleFk Host User Role
test_role1 test_role2 test_role1 test_role2
localhost test_user test_role1 localhost test_user test_role1
grant select (RoleFk) on mysql.roles_mapping to test_role2; grant select (Role) on mysql.roles_mapping to test_role2;
flush privileges; flush privileges;
select * from mysql.roles_mapping; select * from mysql.roles_mapping;
ERROR 42000: SELECT command denied to user 'test_user'@'localhost' for table 'roles_mapping' ERROR 42000: SELECT command denied to user 'test_user'@'localhost' for table 'roles_mapping'
...@@ -33,21 +29,21 @@ current_user() current_role() ...@@ -33,21 +29,21 @@ current_user() current_role()
test_user@localhost test_role1 test_user@localhost test_role1
show grants; show grants;
Grants for test_user@localhost Grants for test_user@localhost
GRANT SELECT (RoleFk) ON `mysql`.`roles_mapping` TO 'test_role2' GRANT SELECT (Role) ON `mysql`.`roles_mapping` TO 'test_role2'
GRANT USAGE ON *.* TO 'test_role1' GRANT USAGE ON *.* TO 'test_role1'
GRANT USAGE ON *.* TO 'test_role2' GRANT USAGE ON *.* TO 'test_role2'
GRANT USAGE ON *.* TO 'test_user'@'localhost' GRANT USAGE ON *.* TO 'test_user'@'localhost'
GRANT test_role1 TO 'test_user'@'localhost' GRANT test_role1 TO 'test_user'@'localhost'
GRANT test_role2 TO 'test_role1' GRANT test_role2 TO 'test_role1'
select * from mysql.roles_mapping; select * from mysql.roles_mapping;
ERROR 42000: SELECT command denied to user 'test_user'@'localhost' for column 'HostFk' in table 'roles_mapping' ERROR 42000: SELECT command denied to user 'test_user'@'localhost' for column 'Host' in table 'roles_mapping'
select RoleFk from mysql.roles_mapping; select Role from mysql.roles_mapping;
RoleFk Role
test_role1 test_role1
test_role2 test_role2
show grants; show grants;
Grants for test_user@localhost Grants for test_user@localhost
GRANT SELECT (RoleFk) ON `mysql`.`roles_mapping` TO 'test_role2' GRANT SELECT (Role) ON `mysql`.`roles_mapping` TO 'test_role2'
GRANT USAGE ON *.* TO 'test_role1' GRANT USAGE ON *.* TO 'test_role1'
GRANT USAGE ON *.* TO 'test_role2' GRANT USAGE ON *.* TO 'test_role2'
GRANT USAGE ON *.* TO 'test_user'@'localhost' GRANT USAGE ON *.* TO 'test_user'@'localhost'
...@@ -58,7 +54,7 @@ set role none; ...@@ -58,7 +54,7 @@ set role none;
select current_user(), current_role(); select current_user(), current_role();
current_user() current_role() current_user() current_role()
test_user@localhost NULL test_user@localhost NULL
select RoleFk from mysql.roles_mapping; select Role from mysql.roles_mapping;
ERROR 42000: SELECT command denied to user 'test_user'@'localhost' for table 'roles_mapping' ERROR 42000: SELECT command denied to user 'test_user'@'localhost' for table 'roles_mapping'
drop user 'test_user'@'localhost'; drop user 'test_user'@'localhost';
select * from mysql.tables_priv; select * from mysql.tables_priv;
...@@ -66,5 +62,5 @@ Host Db User Table_name Grantor Timestamp Table_priv Column_priv ...@@ -66,5 +62,5 @@ Host Db User Table_name Grantor Timestamp Table_priv Column_priv
mysql test_role2 roles_mapping root@localhost 0000-00-00 00:00:00 Select mysql test_role2 roles_mapping root@localhost 0000-00-00 00:00:00 Select
revoke select on mysql.roles_mapping from test_role2; revoke select on mysql.roles_mapping from test_role2;
delete from mysql.user where user like'test_%'; delete from mysql.user where user like'test_%';
delete from mysql.roles_mapping where RoleFk like 'test%'; delete from mysql.roles_mapping where Role like 'test%';
flush privileges; flush privileges;
create user 'test_user'@'localhost'; create user 'test_user'@'localhost';
create role test_role1; create role test_role1;
create role test_role2; create role test_role2;
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('localhost', insert into mysql.roles_mapping values ('localhost', 'test_user', 'test_role1');
'test_user', insert into mysql.roles_mapping values ('', 'test_role1', 'test_role2');
'test_role1');
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('',
'test_role1',
'test_role2');
select user, host from mysql.user where user not like 'root'; select user, host from mysql.user where user not like 'root';
user host user host
test_role1 test_role1
test_role2 test_role2
test_user localhost test_user localhost
select * from mysql.roles_mapping; select * from mysql.roles_mapping;
HostFk UserFk RoleFk Host User Role
test_role1 test_role2 test_role1 test_role2
localhost test_user test_role1 localhost test_user test_role1
grant select on mysql.roles_mapping to test_role2; grant select on mysql.roles_mapping to test_role2;
...@@ -40,7 +36,7 @@ GRANT USAGE ON *.* TO 'test_user'@'localhost' ...@@ -40,7 +36,7 @@ GRANT USAGE ON *.* TO 'test_user'@'localhost'
GRANT test_role1 TO 'test_user'@'localhost' GRANT test_role1 TO 'test_user'@'localhost'
GRANT test_role2 TO 'test_role1' GRANT test_role2 TO 'test_role1'
select * from mysql.roles_mapping; select * from mysql.roles_mapping;
HostFk UserFk RoleFk Host User Role
test_role1 test_role2 test_role1 test_role2
localhost test_user test_role1 localhost test_user test_role1
show grants; show grants;
...@@ -64,5 +60,5 @@ Host Db User Table_name Grantor Timestamp Table_priv Column_priv ...@@ -64,5 +60,5 @@ Host Db User Table_name Grantor Timestamp Table_priv Column_priv
mysql test_role2 roles_mapping root@localhost 0000-00-00 00:00:00 Select mysql test_role2 roles_mapping root@localhost 0000-00-00 00:00:00 Select
revoke select on mysql.roles_mapping from test_role2; revoke select on mysql.roles_mapping from test_role2;
delete from mysql.user where user like'test_%'; delete from mysql.user where user like'test_%';
delete from mysql.roles_mapping where RoleFk like 'test%'; delete from mysql.roles_mapping where Role like 'test%';
flush privileges; flush privileges;
create user 'test_user'@'localhost'; create user 'test_user'@'localhost';
create role test_role1; create role test_role1;
create role test_role2; create role test_role2;
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('localhost', insert into mysql.roles_mapping values ('localhost', 'test_user', 'test_role1');
'test_user', insert into mysql.roles_mapping values ('localhost', 'test_user', 'test_role2');
'test_role1'); insert into mysql.roles_mapping values ('', 'test_role1', 'test_role2');
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('localhost',
'test_user',
'test_role2');
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('',
'test_role1',
'test_role2');
select user, host from mysql.user where user not like 'root'; select user, host from mysql.user where user not like 'root';
user host user host
test_role1 test_role1
test_role2 test_role2
test_user localhost test_user localhost
select * from mysql.roles_mapping; select * from mysql.roles_mapping;
HostFk UserFk RoleFk Host User Role
test_role1 test_role2 test_role1 test_role2
localhost test_user test_role1 localhost test_user test_role1
localhost test_user test_role2 localhost test_user test_role2
...@@ -145,6 +139,6 @@ drop user 'test_user'@'localhost'; ...@@ -145,6 +139,6 @@ drop user 'test_user'@'localhost';
revoke select on mysql.* from test_role2; revoke select on mysql.* from test_role2;
drop role test_role1; drop role test_role1;
drop role test_role2; drop role test_role2;
delete from mysql.roles_mapping where RoleFk='test_role1'; delete from mysql.roles_mapping where Role='test_role1';
delete from mysql.roles_mapping where RoleFk='test_role2'; delete from mysql.roles_mapping where Role='test_role2';
flush privileges; flush privileges;
...@@ -161,9 +161,9 @@ def mysql proxies_priv Proxied_user 4 NO char 16 48 NULL NULL NULL utf8 utf8_bi ...@@ -161,9 +161,9 @@ def mysql proxies_priv Proxied_user 4 NO char 16 48 NULL NULL NULL utf8 utf8_bi
def mysql proxies_priv Timestamp 7 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL 0 NULL NULL timestamp on update CURRENT_TIMESTAMP select,insert,update,references def mysql proxies_priv Timestamp 7 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL 0 NULL NULL timestamp on update CURRENT_TIMESTAMP select,insert,update,references
def mysql proxies_priv User 2 NO char 16 48 NULL NULL NULL utf8 utf8_bin char(16) PRI select,insert,update,references def mysql proxies_priv User 2 NO char 16 48 NULL NULL NULL utf8 utf8_bin char(16) PRI select,insert,update,references
def mysql proxies_priv With_grant 5 0 NO tinyint NULL NULL 3 0 NULL NULL NULL tinyint(1) select,insert,update,references def mysql proxies_priv With_grant 5 0 NO tinyint NULL NULL 3 0 NULL NULL NULL tinyint(1) select,insert,update,references
def mysql roles_mapping HostFk 1 NO char 60 60 NULL NULL NULL latin1 latin1_bin char(60) PRI select,insert,update,references def mysql roles_mapping Host 1 NO char 60 60 NULL NULL NULL latin1 latin1_bin char(60) PRI select,insert,update,references
def mysql roles_mapping RoleFk 3 NO char 16 16 NULL NULL NULL latin1 latin1_bin char(16) PRI select,insert,update,references def mysql roles_mapping Role 3 NO char 16 16 NULL NULL NULL latin1 latin1_bin char(16) PRI select,insert,update,references
def mysql roles_mapping UserFk 2 NO char 16 16 NULL NULL NULL latin1 latin1_bin char(16) PRI select,insert,update,references def mysql roles_mapping User 2 NO char 16 16 NULL NULL NULL latin1 latin1_bin char(16) PRI select,insert,update,references
def mysql servers Db 3 NO char 64 192 NULL NULL NULL utf8 utf8_general_ci char(64) select,insert,update,references def mysql servers Db 3 NO char 64 192 NULL NULL NULL utf8 utf8_general_ci char(64) select,insert,update,references
def mysql servers Host 2 NO char 64 192 NULL NULL NULL utf8 utf8_general_ci char(64) select,insert,update,references def mysql servers Host 2 NO char 64 192 NULL NULL NULL utf8 utf8_general_ci char(64) select,insert,update,references
def mysql servers Owner 9 NO char 64 192 NULL NULL NULL utf8 utf8_general_ci char(64) select,insert,update,references def mysql servers Owner 9 NO char 64 192 NULL NULL NULL utf8 utf8_general_ci char(64) select,insert,update,references
...@@ -484,9 +484,9 @@ NULL mysql procs_priv Timestamp timestamp NULL NULL NULL NULL timestamp ...@@ -484,9 +484,9 @@ NULL mysql procs_priv Timestamp timestamp NULL NULL NULL NULL timestamp
NULL mysql proxies_priv With_grant tinyint NULL NULL NULL NULL tinyint(1) NULL mysql proxies_priv With_grant tinyint NULL NULL NULL NULL tinyint(1)
3.0000 mysql proxies_priv Grantor char 77 231 utf8 utf8_bin char(77) 3.0000 mysql proxies_priv Grantor char 77 231 utf8 utf8_bin char(77)
NULL mysql proxies_priv Timestamp timestamp NULL NULL NULL NULL timestamp NULL mysql proxies_priv Timestamp timestamp NULL NULL NULL NULL timestamp
1.0000 mysql roles_mapping HostFk char 60 60 latin1 latin1_bin char(60) 1.0000 mysql roles_mapping Host char 60 60 latin1 latin1_bin char(60)
1.0000 mysql roles_mapping UserFk char 16 16 latin1 latin1_bin char(16) 1.0000 mysql roles_mapping User char 16 16 latin1 latin1_bin char(16)
1.0000 mysql roles_mapping RoleFk char 16 16 latin1 latin1_bin char(16) 1.0000 mysql roles_mapping Role char 16 16 latin1 latin1_bin char(16)
3.0000 mysql servers Server_name char 64 192 utf8 utf8_general_ci char(64) 3.0000 mysql servers Server_name char 64 192 utf8 utf8_general_ci char(64)
3.0000 mysql servers Host char 64 192 utf8 utf8_general_ci char(64) 3.0000 mysql servers Host char 64 192 utf8 utf8_general_ci char(64)
3.0000 mysql servers Db char 64 192 utf8 utf8_general_ci char(64) 3.0000 mysql servers Db char 64 192 utf8 utf8_general_ci char(64)
......
...@@ -119,9 +119,9 @@ def mysql PRIMARY def mysql proxies_priv Host ...@@ -119,9 +119,9 @@ def mysql PRIMARY def mysql proxies_priv Host
def mysql PRIMARY def mysql proxies_priv User def mysql PRIMARY def mysql proxies_priv User
def mysql PRIMARY def mysql proxies_priv Proxied_host def mysql PRIMARY def mysql proxies_priv Proxied_host
def mysql PRIMARY def mysql proxies_priv Proxied_user def mysql PRIMARY def mysql proxies_priv Proxied_user
def mysql HostFk def mysql roles_mapping HostFk def mysql Host def mysql roles_mapping Host
def mysql HostFk def mysql roles_mapping UserFk def mysql Host def mysql roles_mapping User
def mysql HostFk def mysql roles_mapping RoleFk def mysql Host def mysql roles_mapping Role
def mysql PRIMARY def mysql servers Server_name def mysql PRIMARY def mysql servers Server_name
def mysql PRIMARY def mysql table_stats db_name def mysql PRIMARY def mysql table_stats db_name
def mysql PRIMARY def mysql table_stats table_name def mysql PRIMARY def mysql table_stats table_name
......
...@@ -132,9 +132,9 @@ def mysql proxies_priv mysql PRIMARY ...@@ -132,9 +132,9 @@ def mysql proxies_priv mysql PRIMARY
def mysql proxies_priv mysql PRIMARY def mysql proxies_priv mysql PRIMARY
def mysql proxies_priv mysql PRIMARY def mysql proxies_priv mysql PRIMARY
def mysql proxies_priv mysql Grantor def mysql proxies_priv mysql Grantor
def mysql roles_mapping mysql HostFk def mysql roles_mapping mysql Host
def mysql roles_mapping mysql HostFk def mysql roles_mapping mysql Host
def mysql roles_mapping mysql HostFk def mysql roles_mapping mysql Host
def mysql servers mysql PRIMARY def mysql servers mysql PRIMARY
def mysql table_stats mysql PRIMARY def mysql table_stats mysql PRIMARY
def mysql table_stats mysql PRIMARY def mysql table_stats mysql PRIMARY
......
...@@ -54,9 +54,9 @@ def mysql proxies_priv 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE ...@@ -54,9 +54,9 @@ def mysql proxies_priv 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
def mysql proxies_priv 0 mysql PRIMARY 2 User A #CARD# NULL NULL BTREE def mysql proxies_priv 0 mysql PRIMARY 2 User A #CARD# NULL NULL BTREE
def mysql proxies_priv 0 mysql PRIMARY 3 Proxied_host A #CARD# NULL NULL BTREE def mysql proxies_priv 0 mysql PRIMARY 3 Proxied_host A #CARD# NULL NULL BTREE
def mysql proxies_priv 0 mysql PRIMARY 4 Proxied_user A #CARD# NULL NULL BTREE def mysql proxies_priv 0 mysql PRIMARY 4 Proxied_user A #CARD# NULL NULL BTREE
def mysql roles_mapping 0 mysql HostFk 1 HostFk A #CARD# NULL NULL BTREE def mysql roles_mapping 0 mysql Host 1 Host A #CARD# NULL NULL BTREE
def mysql roles_mapping 0 mysql HostFk 2 UserFk A #CARD# NULL NULL BTREE def mysql roles_mapping 0 mysql Host 2 User A #CARD# NULL NULL BTREE
def mysql roles_mapping 0 mysql HostFk 3 RoleFk A #CARD# NULL NULL BTREE def mysql roles_mapping 0 mysql Host 3 Role A #CARD# NULL NULL BTREE
def mysql servers 0 mysql PRIMARY 1 Server_name A #CARD# NULL NULL BTREE def mysql servers 0 mysql PRIMARY 1 Server_name A #CARD# NULL NULL BTREE
def mysql tables_priv 1 mysql Grantor 1 Grantor A #CARD# NULL NULL BTREE def mysql tables_priv 1 mysql Grantor 1 Grantor A #CARD# NULL NULL BTREE
def mysql tables_priv 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE def mysql tables_priv 0 mysql PRIMARY 1 Host A #CARD# NULL NULL BTREE
......
...@@ -77,7 +77,7 @@ def mysql PRIMARY mysql plugin ...@@ -77,7 +77,7 @@ def mysql PRIMARY mysql plugin
def mysql PRIMARY mysql proc def mysql PRIMARY mysql proc
def mysql PRIMARY mysql procs_priv def mysql PRIMARY mysql procs_priv
def mysql PRIMARY mysql proxies_priv def mysql PRIMARY mysql proxies_priv
def mysql HostFk mysql roles_mapping def mysql Host mysql roles_mapping
def mysql PRIMARY mysql servers def mysql PRIMARY mysql servers
def mysql PRIMARY mysql table_stats def mysql PRIMARY mysql table_stats
def mysql PRIMARY mysql tables_priv def mysql PRIMARY mysql tables_priv
......
...@@ -27,7 +27,7 @@ def mysql PRIMARY mysql plugin PRIMARY KEY ...@@ -27,7 +27,7 @@ def mysql PRIMARY mysql plugin PRIMARY KEY
def mysql PRIMARY mysql proc PRIMARY KEY def mysql PRIMARY mysql proc PRIMARY KEY
def mysql PRIMARY mysql procs_priv PRIMARY KEY def mysql PRIMARY mysql procs_priv PRIMARY KEY
def mysql PRIMARY mysql proxies_priv PRIMARY KEY def mysql PRIMARY mysql proxies_priv PRIMARY KEY
def mysql HostFk mysql roles_mapping UNIQUE def mysql Host mysql roles_mapping UNIQUE
def mysql PRIMARY mysql servers PRIMARY KEY def mysql PRIMARY mysql servers PRIMARY KEY
def mysql PRIMARY mysql tables_priv PRIMARY KEY def mysql PRIMARY mysql tables_priv PRIMARY KEY
def mysql PRIMARY mysql table_stats PRIMARY KEY def mysql PRIMARY mysql table_stats PRIMARY KEY
......
...@@ -2,13 +2,9 @@ ...@@ -2,13 +2,9 @@
#create a user with no privileges #create a user with no privileges
create user test_user@localhost; create user test_user@localhost;
create role test_role1; create role test_role1;
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('localhost', insert into mysql.roles_mapping values ('localhost', 'test_user', 'test_role1');
'test_user',
'test_role1');
create role test_role2; create role test_role2;
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('', insert into mysql.roles_mapping values ('', 'test_role1', 'test_role2');
'test_role1',
'test_role2');
flush privileges; flush privileges;
use mysql; use mysql;
......
...@@ -3,15 +3,9 @@ create user 'test_user'@'localhost'; ...@@ -3,15 +3,9 @@ create user 'test_user'@'localhost';
create role test_role1; create role test_role1;
create role test_role2; create role test_role2;
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('localhost', insert into mysql.roles_mapping values ('localhost', 'test_user', 'test_role1');
'test_user', insert into mysql.roles_mapping values ('localhost', 'test_user', 'test_role2');
'test_role1'); insert into mysql.roles_mapping values ('', 'test_role1', 'test_role2');
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('localhost',
'test_user',
'test_role2');
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('',
'test_role1',
'test_role2');
--sorted_result --sorted_result
select user, host from mysql.user where user not like 'root'; select user, host from mysql.user where user not like 'root';
--sorted_result --sorted_result
...@@ -48,6 +42,6 @@ drop user 'test_user'@'localhost'; ...@@ -48,6 +42,6 @@ drop user 'test_user'@'localhost';
revoke select on mysql.* from test_role2; revoke select on mysql.* from test_role2;
delete from mysql.user where user='test_role1'; delete from mysql.user where user='test_role1';
delete from mysql.user where user='test_role2'; delete from mysql.user where user='test_role2';
delete from mysql.roles_mapping where RoleFk='test_role1'; delete from mysql.roles_mapping where Role='test_role1';
delete from mysql.roles_mapping where RoleFk='test_role2'; delete from mysql.roles_mapping where Role='test_role2';
flush privileges; flush privileges;
...@@ -2,9 +2,7 @@ ...@@ -2,9 +2,7 @@
create user 'test_user'@'localhost'; create user 'test_user'@'localhost';
create role test_role1; create role test_role1;
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('localhost', insert into mysql.roles_mapping values ('localhost', 'test_user', 'test_role1');
'test_user',
'test_role1');
--sorted_result --sorted_result
select user, host from mysql.user where user not like 'root'; select user, host from mysql.user where user not like 'root';
--sorted_result --sorted_result
...@@ -27,10 +25,8 @@ select current_user(), current_role(); ...@@ -27,10 +25,8 @@ select current_user(), current_role();
select * from mysql.roles_mapping; select * from mysql.roles_mapping;
--error ER_TABLEACCESS_DENIED_ERROR --error ER_TABLEACCESS_DENIED_ERROR
insert into mysql.user (user, host) values ('Dummy', 'Dummy'); insert into mysql.user (user, host) values ('Dummy', 'Dummy');
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('localhost', insert into mysql.roles_mapping values ('localhost', 'test_user', 'test_role2');
'test_user', delete from mysql.roles_mapping where Role='test_role2';
'test_role2');
delete from mysql.roles_mapping where RoleFk='test_role2';
use mysql; use mysql;
...@@ -44,17 +40,15 @@ select * from mysql.roles_mapping; ...@@ -44,17 +40,15 @@ select * from mysql.roles_mapping;
--error ER_TABLEACCESS_DENIED_ERROR --error ER_TABLEACCESS_DENIED_ERROR
insert into mysql.user (user, host) values ('Dummy', 'Dummy'); insert into mysql.user (user, host) values ('Dummy', 'Dummy');
--error ER_TABLEACCESS_DENIED_ERROR --error ER_TABLEACCESS_DENIED_ERROR
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('localhost', insert into mysql.roles_mapping values ('localhost', 'test_user', 'test_role2');
'test_user',
'test_role2');
--error ER_TABLEACCESS_DENIED_ERROR --error ER_TABLEACCESS_DENIED_ERROR
delete from mysql.roles_mapping where RoleFk='test_role2'; delete from mysql.roles_mapping where Role='test_role2';
change_user 'root'; change_user 'root';
drop user 'test_user'@'localhost'; drop user 'test_user'@'localhost';
revoke select on mysql.* from test_role1; revoke select on mysql.* from test_role1;
revoke insert, delete on mysql.roles_mapping from test_role1; revoke insert, delete on mysql.roles_mapping from test_role1;
drop role test_role1; drop role test_role1;
delete from mysql.roles_mapping where RoleFk='test_role1'; delete from mysql.roles_mapping where Role='test_role1';
flush privileges; flush privileges;
...@@ -29,27 +29,13 @@ select * from mysql.user where user='r_rld'; ...@@ -29,27 +29,13 @@ select * from mysql.user where user='r_rld';
##################################### #####################################
#set up roles mapping #set up roles mapping
##################################### #####################################
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('localhost', insert into mysql.roles_mapping values ('localhost', 'test_user', 'r_sel');
'test_user', insert into mysql.roles_mapping values ('localhost', 'test_user', 'r_ins');
'r_sel'); insert into mysql.roles_mapping values ('localhost', 'test_user', 'r_upd');
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('localhost', insert into mysql.roles_mapping values ('localhost', 'test_user', 'r_del');
'test_user', insert into mysql.roles_mapping values ('localhost', 'test_user', 'r_crt');
'r_ins'); insert into mysql.roles_mapping values ('localhost', 'test_user', 'r_drp');
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('localhost', insert into mysql.roles_mapping values ('localhost', 'test_user', 'r_rld');
'test_user',
'r_upd');
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('localhost',
'test_user',
'r_del');
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('localhost',
'test_user',
'r_crt');
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('localhost',
'test_user',
'r_drp');
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('localhost',
'test_user',
'r_rld');
flush privileges; flush privileges;
change_user 'test_user'; change_user 'test_user';
...@@ -73,9 +59,7 @@ select current_user(), current_role(); ...@@ -73,9 +59,7 @@ select current_user(), current_role();
show grants; show grants;
--error ER_TABLEACCESS_DENIED_ERROR --error ER_TABLEACCESS_DENIED_ERROR
select * from mysql.roles_mapping; select * from mysql.roles_mapping;
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('', insert into mysql.roles_mapping values ('', 'r_sel', 'r_rld');
'r_sel',
'r_rld');
--error ER_SPECIFIC_ACCESS_DENIED_ERROR --error ER_SPECIFIC_ACCESS_DENIED_ERROR
flush privileges; flush privileges;
set role r_rld; set role r_rld;
...@@ -91,27 +75,17 @@ flush privileges; ...@@ -91,27 +75,17 @@ flush privileges;
set role r_ins; set role r_ins;
select current_user(), current_role(); select current_user(), current_role();
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('', insert into mysql.roles_mapping values ('', 'r_sel', 'r_upd');
'r_sel', insert into mysql.roles_mapping values ('', 'r_sel', 'r_del');
'r_upd'); insert into mysql.roles_mapping values ('', 'r_sel', 'r_crt');
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('', insert into mysql.roles_mapping values ('', 'r_sel', 'r_drp');
'r_sel', insert into mysql.roles_mapping values ('', 'r_del', 'r_ins');
'r_del');
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('',
'r_sel',
'r_crt');
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('',
'r_sel',
'r_drp');
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('',
'r_del',
'r_ins');
set role r_rld; set role r_rld;
select current_user(), current_role(); select current_user(), current_role();
flush privileges; flush privileges;
set role r_sel; set role r_sel;
select current_user(), current_role(); select current_user(), current_role();
update mysql.roles_mapping set RoleFk='r_ins' where RoleFk='r_ins_wrong'; update mysql.roles_mapping set Role='r_ins' where Role='r_ins_wrong';
flush privileges; flush privileges;
set role r_sel; set role r_sel;
select current_user(), current_role(); select current_user(), current_role();
...@@ -120,7 +94,7 @@ create table mysql.random_test_table (id INT); ...@@ -120,7 +94,7 @@ create table mysql.random_test_table (id INT);
insert into mysql.random_test_table values (1); insert into mysql.random_test_table values (1);
--sorted_result --sorted_result
select * from mysql.random_test_table; select * from mysql.random_test_table;
delete from mysql.roles_mapping where RoleFk='r_ins'; delete from mysql.roles_mapping where Role='r_ins';
flush privileges; flush privileges;
set role r_sel; set role r_sel;
select current_user(), current_role(); select current_user(), current_role();
...@@ -130,6 +104,6 @@ drop table mysql.random_test_table; ...@@ -130,6 +104,6 @@ drop table mysql.random_test_table;
change_user 'root'; change_user 'root';
delete from mysql.user where user like 'r\_%'; delete from mysql.user where user like 'r\_%';
delete from mysql.roles_mapping where RoleFk like 'r\_%'; delete from mysql.roles_mapping where Role like 'r\_%';
flush privileges; flush privileges;
drop user 'test_user'@'localhost'; drop user 'test_user'@'localhost';
...@@ -4,23 +4,19 @@ create user 'test_user'@'localhost'; ...@@ -4,23 +4,19 @@ create user 'test_user'@'localhost';
create user 'test_role1'@''; create user 'test_role1'@'';
#manualy create role #manualy create role
update mysql.user set is_role='Y' where user='test_role1'; update mysql.user set is_role='Y' where user='test_role1';
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('localhost', insert into mysql.roles_mapping values ('localhost', 'test_user', 'test_role1');
'test_user',
'test_role1');
create user 'test_role2'@''; create user 'test_role2'@'';
#manualy create role #manualy create role
update mysql.user set is_role='Y' where user='test_role2'; update mysql.user set is_role='Y' where user='test_role2';
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('', insert into mysql.roles_mapping values ('', 'test_role1', 'test_role2');
'test_role1',
'test_role2');
flush privileges; flush privileges;
--sorted_result --sorted_result
select user, host from mysql.user where user not like 'root'; select user, host from mysql.user where user not like 'root';
--sorted_result --sorted_result
select * from mysql.roles_mapping where UserFk like 'test_user'; select * from mysql.roles_mapping where User like 'test_user';
--sorted_result --sorted_result
select * from mysql.roles_mapping where UserFk like 'test_role1'; select * from mysql.roles_mapping where User like 'test_role1';
grant select on *.* to 'test_role2'@''; grant select on *.* to 'test_role2'@'';
--sorted_result --sorted_result
select * from mysql.user where user like 'test_role1'; select * from mysql.user where user like 'test_role1';
...@@ -40,7 +36,7 @@ set role test_role1; ...@@ -40,7 +36,7 @@ set role test_role1;
select current_user(), current_role(); select current_user(), current_role();
--sorted_result --sorted_result
show grants; show grants;
select * from mysql.roles_mapping where HostFk=''; select * from mysql.roles_mapping where Host='';
--sorted_result --sorted_result
show grants; show grants;
...@@ -69,7 +65,7 @@ select current_user(), current_role(); ...@@ -69,7 +65,7 @@ select current_user(), current_role();
--sorted_result --sorted_result
show grants; show grants;
--sorted_result --sorted_result
select * from mysql.roles_mapping where HostFk=''; select * from mysql.roles_mapping where Host='';
--sorted_result --sorted_result
show grants; show grants;
......
...@@ -3,16 +3,10 @@ create role test_role1; ...@@ -3,16 +3,10 @@ create role test_role1;
create role test_role2; create role test_role2;
create role test_role3; create role test_role3;
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('localhost', insert into mysql.roles_mapping values ('localhost', 'test_user', 'test_role1');
'test_user', insert into mysql.roles_mapping values ('localhost', 'test_user', 'test_role3');
'test_role1');
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('localhost', insert into mysql.roles_mapping values ('', 'test_role1', 'test_role2');
'test_user',
'test_role3');
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('',
'test_role1',
'test_role2');
--sorted_result --sorted_result
select user, host from mysql.user where user not like 'root'; select user, host from mysql.user where user not like 'root';
--sorted_result --sorted_result
...@@ -82,7 +76,7 @@ revoke execute on function mysql.test_func from test_role2; ...@@ -82,7 +76,7 @@ revoke execute on function mysql.test_func from test_role2;
revoke execute on procedure mysql.test_proc from test_role2; revoke execute on procedure mysql.test_proc from test_role2;
revoke execute on mysql.* from test_role3; revoke execute on mysql.* from test_role3;
delete from mysql.user where user like'test_%'; delete from mysql.user where user like'test_%';
delete from mysql.roles_mapping where RoleFk like 'test%'; delete from mysql.roles_mapping where Role like 'test%';
drop function mysql.test_func; drop function mysql.test_func;
drop procedure mysql.test_proc; drop procedure mysql.test_proc;
flush privileges; flush privileges;
...@@ -4,9 +4,7 @@ create user 'test_user'@'localhost'; ...@@ -4,9 +4,7 @@ create user 'test_user'@'localhost';
create user 'test_role1'@''; create user 'test_role1'@'';
#manualy create role #manualy create role
update mysql.user set is_role='Y' where user='test_role1'; update mysql.user set is_role='Y' where user='test_role1';
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('localhost', insert into mysql.roles_mapping values ('localhost', 'test_user', 'test_role1');
'test_user',
'test_role1');
--sorted_result --sorted_result
select user, host from mysql.user where user not like 'root'; select user, host from mysql.user where user not like 'root';
--sorted_result --sorted_result
...@@ -38,6 +36,6 @@ select * from mysql.roles_mapping; ...@@ -38,6 +36,6 @@ select * from mysql.roles_mapping;
change_user 'root'; change_user 'root';
delete from mysql.user where user='test_role1'; delete from mysql.user where user='test_role1';
delete from mysql.roles_mapping where RoleFk='test_role1'; delete from mysql.roles_mapping where Role='test_role1';
flush privileges; flush privileges;
drop user 'test_user'@'localhost'; drop user 'test_user'@'localhost';
...@@ -2,18 +2,14 @@ create user 'test_user'@'localhost'; ...@@ -2,18 +2,14 @@ create user 'test_user'@'localhost';
create role test_role1; create role test_role1;
create role test_role2; create role test_role2;
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('localhost', insert into mysql.roles_mapping values ('localhost', 'test_user', 'test_role1');
'test_user', insert into mysql.roles_mapping values ('', 'test_role1', 'test_role2');
'test_role1');
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('',
'test_role1',
'test_role2');
--sorted_result --sorted_result
select user, host from mysql.user where user not like 'root'; select user, host from mysql.user where user not like 'root';
--sorted_result --sorted_result
select * from mysql.roles_mapping; select * from mysql.roles_mapping;
grant select (RoleFk) on mysql.roles_mapping to test_role2; grant select (Role) on mysql.roles_mapping to test_role2;
flush privileges; flush privileges;
...@@ -36,7 +32,7 @@ show grants; ...@@ -36,7 +32,7 @@ show grants;
select * from mysql.roles_mapping; select * from mysql.roles_mapping;
--sorted_result --sorted_result
select RoleFk from mysql.roles_mapping; select Role from mysql.roles_mapping;
--sorted_result --sorted_result
show grants; show grants;
...@@ -48,13 +44,13 @@ select current_user(), current_role(); ...@@ -48,13 +44,13 @@ select current_user(), current_role();
--sorted_result --sorted_result
--error ER_TABLEACCESS_DENIED_ERROR --error ER_TABLEACCESS_DENIED_ERROR
select RoleFk from mysql.roles_mapping; select Role from mysql.roles_mapping;
change_user 'root'; change_user 'root';
drop user 'test_user'@'localhost'; drop user 'test_user'@'localhost';
select * from mysql.tables_priv; select * from mysql.tables_priv;
revoke select on mysql.roles_mapping from test_role2; revoke select on mysql.roles_mapping from test_role2;
delete from mysql.user where user like'test_%'; delete from mysql.user where user like'test_%';
delete from mysql.roles_mapping where RoleFk like 'test%'; delete from mysql.roles_mapping where Role like 'test%';
flush privileges; flush privileges;
...@@ -2,12 +2,8 @@ create user 'test_user'@'localhost'; ...@@ -2,12 +2,8 @@ create user 'test_user'@'localhost';
create role test_role1; create role test_role1;
create role test_role2; create role test_role2;
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('localhost', insert into mysql.roles_mapping values ('localhost', 'test_user', 'test_role1');
'test_user', insert into mysql.roles_mapping values ('', 'test_role1', 'test_role2');
'test_role1');
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('',
'test_role1',
'test_role2');
--sorted_result --sorted_result
select user, host from mysql.user where user not like 'root'; select user, host from mysql.user where user not like 'root';
--sorted_result --sorted_result
...@@ -52,6 +48,6 @@ drop user 'test_user'@'localhost'; ...@@ -52,6 +48,6 @@ drop user 'test_user'@'localhost';
select * from mysql.tables_priv; select * from mysql.tables_priv;
revoke select on mysql.roles_mapping from test_role2; revoke select on mysql.roles_mapping from test_role2;
delete from mysql.user where user like'test_%'; delete from mysql.user where user like'test_%';
delete from mysql.roles_mapping where RoleFk like 'test%'; delete from mysql.roles_mapping where Role like 'test%';
flush privileges; flush privileges;
...@@ -3,15 +3,9 @@ create user 'test_user'@'localhost'; ...@@ -3,15 +3,9 @@ create user 'test_user'@'localhost';
create role test_role1; create role test_role1;
create role test_role2; create role test_role2;
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('localhost', insert into mysql.roles_mapping values ('localhost', 'test_user', 'test_role1');
'test_user', insert into mysql.roles_mapping values ('localhost', 'test_user', 'test_role2');
'test_role1'); insert into mysql.roles_mapping values ('', 'test_role1', 'test_role2');
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('localhost',
'test_user',
'test_role2');
insert into mysql.roles_mapping (HostFk, UserFk, RoleFk) values ('',
'test_role1',
'test_role2');
--sorted_result --sorted_result
select user, host from mysql.user where user not like 'root'; select user, host from mysql.user where user not like 'root';
--sorted_result --sorted_result
...@@ -90,6 +84,6 @@ drop user 'test_user'@'localhost'; ...@@ -90,6 +84,6 @@ drop user 'test_user'@'localhost';
revoke select on mysql.* from test_role2; revoke select on mysql.* from test_role2;
drop role test_role1; drop role test_role1;
drop role test_role2; drop role test_role2;
delete from mysql.roles_mapping where RoleFk='test_role1'; delete from mysql.roles_mapping where Role='test_role1';
delete from mysql.roles_mapping where RoleFk='test_role2'; delete from mysql.roles_mapping where Role='test_role2';
flush privileges; flush privileges;
...@@ -41,7 +41,7 @@ CREATE TABLE IF NOT EXISTS user ( Host char(60) binary DEFAULT '' NOT NULL, Us ...@@ -41,7 +41,7 @@ CREATE TABLE IF NOT EXISTS user ( Host char(60) binary DEFAULT '' NOT NULL, Us
-- Remember for later if user table already existed -- Remember for later if user table already existed
set @had_user_table= @@warning_count != 0; set @had_user_table= @@warning_count != 0;
CREATE TABLE IF NOT EXISTS roles_mapping (HostFk char(60) binary DEFAULT '' NOT NULL, UserFk char(16) binary DEFAULT '' NOT NULL, RoleFk char(16) binary DEFAULT '' NOT NULL, unique index (HostFk, UserFk, RoleFk)); CREATE TABLE IF NOT EXISTS roles_mapping (Host char(60) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL, Role char(16) binary DEFAULT '' NOT NULL, unique index (Host, User, Role));
CREATE TABLE IF NOT EXISTS func ( name char(64) binary DEFAULT '' NOT NULL, ret tinyint(1) DEFAULT '0' NOT NULL, dl char(128) DEFAULT '' NOT NULL, type enum ('function','aggregate') COLLATE utf8_general_ci NOT NULL, PRIMARY KEY (name) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='User defined functions'; CREATE TABLE IF NOT EXISTS func ( name char(64) binary DEFAULT '' NOT NULL, ret tinyint(1) DEFAULT '0' NOT NULL, dl char(128) DEFAULT '' NOT NULL, type enum ('function','aggregate') COLLATE utf8_general_ci NOT NULL, PRIMARY KEY (name) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='User defined functions';
......
...@@ -8072,10 +8072,10 @@ static int handle_roles_mappings_table(TABLE *table, bool drop, ...@@ -8072,10 +8072,10 @@ static int handle_roles_mappings_table(TABLE *table, bool drop,
LEX_USER *user_from, LEX_USER *user_to) LEX_USER *user_from, LEX_USER *user_to)
{ {
/* /*
All entries (HostFK, UserFk) that match user_from will be renamed, All entries (Host, User) that match user_from will be renamed,
as well as all RoleFk entries that match if user_from.host.str == "" as well as all Role entries that match if user_from.host.str == ""
Otherwise, only matching (HostFk, UserFk) will be renamed. Otherwise, only matching (Host, User) will be renamed.
*/ */
DBUG_ENTER("handle_roles_mappings_table"); DBUG_ENTER("handle_roles_mappings_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