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?
asked Jul 17, 2015 at 10:02
1 Answer 1
Try granting EXECUTE
permissions on user devel
.
GRANT EXECUTE ON PROCEDURE test1.yourprocedure TO 'devel'@'%'
answered Jul 17, 2015 at 21:26
-
Is there way to grant execute to all procedures?
mysql> GRANT EXECUTE ON PROCEDURE test1.`%` TO 'devel'@'%'; ERROR 1305 (42000): FUNCTION or PROCEDURE % does not exist
ckorzhik– ckorzhik2015年07月17日 21:31:12 +00:00Commented Jul 17, 2015 at 21:31 -
SELECT CONCAT('GRANT EXECUTE ON PROCEDURE ',ROUTINE_SCHEMA,'.',ROUTINE_NAME," TO 'devel'@'%';") AS QUERIES FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA='test';
Copy the rows and execute them.oNare– oNare2015年07月17日 21:36:26 +00:00Commented Jul 17, 2015 at 21:36 -
1Thanks! But is there way to do it just once? It seems to me that new procedures will not have appropriate privileges.ckorzhik– ckorzhik2015年07月17日 21:44:45 +00:00Commented Jul 17, 2015 at 21:44
lang-sql
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
.