mirror of
https://github.com/MariaDB/server.git
synced 2025-01-15 19:42:28 +01:00
81 lines
1.8 KiB
Text
81 lines
1.8 KiB
Text
source include/not_embedded.inc;
|
|
|
|
create user 'test_user'@'localhost';
|
|
create role test_role1;
|
|
create role test_role2;
|
|
create role test_role3;
|
|
|
|
grant test_role1 to test_user@localhost;
|
|
grant test_role3 to test_user@localhost;
|
|
grant test_role2 to test_role1;
|
|
|
|
--sorted_result
|
|
select user, host from mysql.user where user not like 'root';
|
|
--sorted_result
|
|
select * from mysql.roles_mapping;
|
|
|
|
create function mysql.test_func (s CHAR(20))
|
|
returns CHAR(50) DETERMINISTIC
|
|
return concat('Test string: ',s);
|
|
|
|
|
|
delimiter |;
|
|
create procedure mysql.test_proc (OUT param1 INT)
|
|
begin
|
|
select COUNT(*) into param1 from mysql.roles_mapping;
|
|
end|
|
|
delimiter ;|
|
|
|
|
grant execute on function mysql.test_func to test_role2;
|
|
grant execute on procedure mysql.test_proc to test_role2;
|
|
|
|
grant execute on mysql.* to test_role3;
|
|
|
|
change_user 'test_user';
|
|
--sorted_result
|
|
show grants;
|
|
|
|
--error ER_DBACCESS_DENIED_ERROR
|
|
use mysql;
|
|
select current_user(), current_role();
|
|
set role test_role1;
|
|
select current_user(), current_role();
|
|
use mysql;
|
|
|
|
call test_proc(@a);
|
|
SELECT @a;
|
|
|
|
SELECT test_func('AABBCCDD');
|
|
|
|
--sorted_result
|
|
show grants;
|
|
set role none;
|
|
select current_user(), current_role();
|
|
--sorted_result
|
|
show grants;
|
|
|
|
--error ER_PROCACCESS_DENIED_ERROR
|
|
call test_proc(@a);
|
|
|
|
--error ER_PROCACCESS_DENIED_ERROR
|
|
SELECT test_func('AABBCCDD');
|
|
|
|
set role test_role3;
|
|
select current_user(), current_role();
|
|
--sorted_result
|
|
show grants;
|
|
call test_proc(@a);
|
|
SELECT @a;
|
|
|
|
SELECT test_func('AABBCCDD');
|
|
|
|
change_user 'root';
|
|
drop user 'test_user'@'localhost';
|
|
revoke execute on function mysql.test_func from test_role2;
|
|
revoke execute on procedure mysql.test_proc from test_role2;
|
|
revoke execute on mysql.* from test_role3;
|
|
delete from mysql.user where user like'test_%';
|
|
delete from mysql.roles_mapping where Role like 'test%';
|
|
drop function mysql.test_func;
|
|
drop procedure mysql.test_proc;
|
|
flush privileges;
|