I have GRANT ALL PRIVILEGES ON `test1`.* TO 'admin'@'%'
, GRANT ALL PRIVILEGES ON `test1`.* TO 'devel'@'%'
(from SHOW GRANTS FOR some_user
) and I have created simple procedure as admin
in test1
.
And here is what I see:
as admin
mysql> select current_user(); +----------------+ | current_user() | +----------------+ | admin@% | +----------------+ 1 row in set (0,03 sec) mysql> SELECT ROUTINE_DEFINITION FROM information_schema.ROUTINES WHERE SPECIFIC_NAME='test' AND ROUTINE_SCHEMA='test1'; +--------------------+ | ROUTINE_DEFINITION | +--------------------+ | begin end | +--------------------+ 1 row in set (0,04 sec) mysql> call test(); Query OK, 0 rows affected (0,03 sec)
as devel
:
mysql> select current_user(); +----------------+ | current_user() | +----------------+ | devel@% | +----------------+ 1 row in set (0,03 sec) mysql> SELECT ROUTINE_DEFINITION FROM information_schema.ROUTINES WHERE SPECIFIC_NAME='test' AND ROUTINE_SCHEMA='test1'; +--------------------+ | ROUTINE_DEFINITION | +--------------------+ | NULL | +--------------------+ 1 row in set (0,03 sec) mysql> call test(); Query OK, 0 rows affected (0,03 sec)
How can I allow multiple users to see code of procedure or function?
EXECUTE
permissions on userdevel
. (GRANT EXECUTE ON PROCEDURE test1.yourprocedure TO 'devel'@'%'
.EXECUTE
is required to execute stored routines ( dev.mysql.com/doc/refman/5.6/en/… ). I tried to run commands from above, and I still getNULL
asdevel
.'admin'@'%'
then I did theSELECTs
. Everything was like you have in your question, but I ran:GRANT EXECUTE ON PROCEDURE test1.yourprocedure TO 'devel'@'%'
and I was able toSELECT
it oninformation_schema
.