massa cria privilégios para procedimentos armazenados no mysql

1

É 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?

    
por dotplus 26.07.2012 / 18:01

2 respostas

1

grant execute on <dbname>.*

A palavra "procedimento" deve ser omitida.

    
por 26.07.2012 / 18:03
1

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:

  • Execute_priv para 'Y'
  • db para 'mydb'
por 26.07.2012 / 18:33