1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
|
include/master-slave.inc
[connection master]
DROP PROCEDURE IF EXISTS test.p1;
DROP PROCEDURE IF EXISTS test.p2;
DROP PROCEDURE IF EXISTS test.p3;
grant usage on *.* to user1@localhost;
flush privileges;
SELECT CURRENT_USER();
CURRENT_USER()
root@localhost
SELECT USER();
USER()
root@localhost
CREATE PROCEDURE test.p1 () SQL SECURITY INVOKER SELECT CURRENT_USER(), USER();
CREATE PROCEDURE test.p2 () SQL SECURITY DEFINER CALL test.p1();
CREATE PROCEDURE test.p3 () SQL SECURITY INVOKER CALL test.p1();
GRANT EXECUTE ON PROCEDURE p1 TO user1@localhost;
GRANT EXECUTE ON PROCEDURE p2 TO user1@localhost;
GRANT EXECUTE ON PROCEDURE p3 TO user1@localhost;
<******** Master user1 p3 & p2 calls *******>
----------------------------------------------
SELECT CURRENT_USER();
CURRENT_USER()
user1@localhost
SELECT USER();
USER()
user1@localhost
CALL test.p3();
CURRENT_USER() USER()
user1@localhost user1@localhost
CALL test.p2();
CURRENT_USER() USER()
root@localhost user1@localhost
<******** Slave user1 p3 & p2 calls *******>
---------------------------------------------
SELECT CURRENT_USER();
CURRENT_USER()
user1@localhost
SELECT USER();
USER()
user1@localhost
CALL test.p3();
CURRENT_USER() USER()
user1@localhost user1@localhost
CALL test.p2();
CURRENT_USER() USER()
root@localhost user1@localhost
DROP PROCEDURE IF EXISTS test.p1;
DROP PROCEDURE IF EXISTS test.p3;
DROP PROCEDURE IF EXISTS test.p2;
DROP TABLE IF EXISTS test.t1;
DROP TABLE IF EXISTS test.t2;
DROP USER user1@localhost;
include/rpl_end.inc
|