grant execute on <dbname>.*
A palavra "procedimento" deve ser omitida.
É possível conceder um privilégio a um usuário de forma que ele possa executar todos os procs armazenados no servidor (ou até mesmo em um único db nesse servidor). Olhando para a documentação de sintaxe de concessão (5.5), ele diz que eu tenho que grant execute on procedure <dbname>.<procname> to ....
para cada proc armazenado. Existe uma maneira de fazer isso menos clusily manipulando o próprio banco de dados mysql?
grant execute on <dbname>.*
A palavra "procedimento" deve ser omitida.
Para qualquer privilégio de usuário definido no banco de dados mydb
, execute:
UPDATE mysql.db SET execute_priv='Y' WHERE db = 'mydb';
FLUSH PRIVILEGES;
Primeiro, veja se algum usuário está definido em mysql.db
com
SELECT COUNT(1) FROM mysql.db;
Se nenhum dos usuários já tiver privilégios no nível do banco de dados, dê a eles . Se você quiser conceder a todos os usuários a capacidade de executar procedimentos armazenados no banco de dados mydb
, execute este
INSERT INTO mysql.db (Host,db,user,Select_priv,Insert_priv,Update_priv
Delete_priv,Create_priv,Drop_priv,Grant_priv,
References_priv,Index_priv,Alter_priv,Create_tmp_table_priv
Lock_tables_priv,Create_view_priv,Show_view_priv,Create_routine_priv
Alter_routine_priv,Execute_priv,Event_priv,Trigger_priv
SELECT Host,'mydb',user,Select_priv,Insert_priv,Update_priv
Delete_priv,Create_priv,Drop_priv,Grant_priv,
References_priv,Index_priv,Alter_priv,Create_tmp_table_priv
Lock_tables_priv,Create_view_priv,Show_view_priv,Create_routine_priv
Alter_routine_priv,'Y',Event_priv,Trigger_priv
FROM mysql.user;
FLUSH PRIVILEGES;
Repare que eu defini:
Tags permissions mysql