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?
EXECUTEpermissions on userdevel. (GRANT EXECUTE ON PROCEDURE test1.yourprocedure TO 'devel'@'%'.EXECUTEis required to execute stored routines ( dev.mysql.com/doc/refman/5.6/en/… ). I tried to run commands from above, and I still getNULLasdevel.'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 toSELECTit oninformation_schema.