Olá pessoal,
estou com um problemão.
Estou desenvolvendo um site. Ocorre que o banco de dados 'contém stored procedures' que funcionaram bem no localhost, mas não no provedor. No localhost o user era o 'root@localhost' e tinha todos os privilégios. No provedor uso um MySQL compartilhado, de modo que o usuário criado não tem todos privilégios. Estou há mais de mês tentando resolver, sem sucesso. O suporte do provedor não conseguiu ajudar. Só disse que era falha de programação. A procedure é:
DELIMITER $$
CREATE DEFINER=`rute`@`%` PROCEDURE `Autenticacao`(
IN pLOGIN VARCHAR(20),
IN pPASS VARCHAR(15),
OUT pSAID INT
)
BEGIN
SELECT COUNT(*) INTO pSAID
FROM mit.Usuario
WHERE Login = pLOGIN
AND Senha = pPASS;
END $$
sendo que a tabela usuario contém os valores corretos. Quando faço o login, é chamada a procedure `Autenticacao`, mas dá o erro abaixo:
Server Error in '/' Application.
ERRO Nro.:Unable to retrieve stored procedure metadata for routine '{0}'. Either grant SELECT privilege to mysql.proc for this user or use "use procedure bodies=false" with your connection string.
Já pesquisei e fiz alterações na 'procedure' e na 'connection string'.
Alguém pode ajudar?
Agradeço antecipadamente.
Unable To Retrieve Stored Procedure
Started By jcbasilio, 28/01/2012, 23:52
4 replies to this topic
#1
Posted 28/01/2012, 23:52
#2
Posted 30/01/2012, 08:24
Esse rute@% é o usuário que o sistema usa?
#3
Posted 30/01/2012, 11:14
Esse rute@% é o usuário que o sistema usa?
Olá Leo,
grato pela atenção.
Sim, rute é o usuário do DB. Como é um banco compartilhado, o usuário root não está disponível (ou um usuário interferiria nos dados dos outros). É política do provedor. O usuário rute tem todos os privilégios no meu banco conforme consulta abaixo (USAGE em todos bancos, ALL em meu banco, mit).
SHOW GRANTS FOR `rute`@`%`
Grants for rute@%
GRANT USAGE ON *.* TO 'rute'@'%' IDENTIFIED BY PAS...
GRANT ALL PRIVILEGES ON `mit`.* TO 'rute'@'%'
Apesar de ter todos privilégios não consigo, aparentemente, recuperar a PROCEDURE. Não sei o que fazer
Agradeço o auxílio. Se tiver alguma outra pergunta, não hesite!
Abs.
#4
Posted 30/01/2012, 11:48
Até onde eu sei, rodar stored procedures só requer permissão de EXECUTE. Veja:
http://dev.mysql.com...privileges.html
http://dev.mysql.com...privileges.html
#5
Posted 18/02/2012, 09:13
É política do provedor. O usuário rute tem todos os privilégios no meu banco conforme consulta abaixo .
1 user(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)