1
resposta

Duvida sobre DEFINER

Quando a gente cria uma procedure, normalmente colocamos o DEFINER que suponho que seja o dono da procedure, se eu nao definir qualquer usuario consegue chamar a minha procedure ? e quando eu defino somente eu consigo chamar ela ?

1 resposta

Boa tarde, Davi! Tudo bem com você?

Seu pensamento está correto. Quando criamos uma procedure com o DEFINER, estamos especificando qual usuário será o "dono" dela.

Se não definirmos o DEFINER, O MySQL vai assumir que o DEFINER é o usuário que está criando a procedure no momento. Por exemplo, se estivermos logado como user1 e criarmos uma procedure sem especificar o DEFINER, o MySQL vai considerar user1 como o DEFINER.

A permissão para executar a procedure depende dos privilégios que foram concedidos aos usuários. Mesmo que você não defina um DEFINER, outros usuários só poderão executar a procedure se tiverem a permissão EXECUTE para ela. Você pode conceder permissão a outros usuários usando o comando GRANT:

GRANT EXECUTE ON PROCEDURE alo_mundo TO 'user1'@'localhost';

Lembrando que para criar uma PROCEDURE não é obrigatório usar um DEFINER.

Uma curiosidade é que você pode verificar todos os usuários e hosts do banco usando o seguinte comando:

SELECT user,host FROM mysql.user;

Espero ter ajudado. Conte com o apoio do Fórum na sua jornada. Fico à disposição. Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado