Mudanças entre as edições de "Erro de Permissão ou Privilégio em Functions, Views e Procedures"

De Wiki Integrator do Brasil
Ir para: navegação, pesquisa
Linha 15: Linha 15:
 
create table teste (id int not null primary key auto_increment, data date);
 
create table teste (id int not null primary key auto_increment, data date);
  
2. A procedure de exemplo, onde o '''USUARIO''' é o seu usuário do cPanel:
+
2. A procedure de exemplo, onde o '''USUARIO''' é o seu usuário do cPanel. O comando deve ser executado no terminal do MySQL.
  
 
DELIMITER $$
 
DELIMITER $$
  
CREATE DEFINER=‘USUARIO’@‘localhost' PROCEDURE `inserir`(data date)
+
CREATE DEFINER='USUARIO'@'localhost' PROCEDURE `inserir`(data date)
 
:BEGIN
 
:BEGIN
 
::INSERT INTO teste VALUES (NULL,data);
 
::INSERT INTO teste VALUES (NULL,data);
Linha 25: Linha 25:
 
:END $$
 
:END $$
 
DELIMITER ;
 
DELIMITER ;
 +
 +
2.1 Se preferir usar o phpMyAdmin do cPanel, selecione o banco de dados na lateral direita. Depois clique em '''Rotinas'''. Em seguida, clique em '''Add routine'''.
 +
Na caixa de diálogo, preencha cada campo como a imagem informada a seguir.
 +
  
  
Linha 30: Linha 34:
  
 
call inserir('2012-12-12');
 
call inserir('2012-12-12');
 +
 +
 +
 +
  
 
[[Categoria:PROBLEMAS E ERROS]]
 
[[Categoria:PROBLEMAS E ERROS]]

Edição das 17h06min de 15 de janeiro de 2016

Problema no mysql

Um erro comum no MySQL para usuários inexperientes é a permissão de Views, Functions e Procedures.

O MySQL diferencia na criação o acesso dando a permissão adequada, cujo o usuário terá permissão de acesso.

Todo objeto criado remotamente - View, Functions e Procedures - que não estiverem com o DEFINER informado, serão gerados com o usuário em condição de acesso remoto somente.

Todo objeto criado localmente, pelo phpMyAdmin, por exemplo - View, Functions e Procedures - que não estiverem com o DEFINER informado, serão gerados com o usuário em condição de acesso local somente.

O Exemplo mostrado abaixo é para entender como se faz a permissão para acesso local de determinado usuário - que deve ser considerado ao realizar o seu teste, colocando o seu do cPanel.

1. A Tabela de exemplo:

create table teste (id int not null primary key auto_increment, data date);

2. A procedure de exemplo, onde o USUARIO é o seu usuário do cPanel. O comando deve ser executado no terminal do MySQL.

DELIMITER $$

CREATE DEFINER='USUARIO'@'localhost' PROCEDURE `inserir`(data date)

BEGIN
INSERT INTO teste VALUES (NULL,data);
END $$

DELIMITER ;

2.1 Se preferir usar o phpMyAdmin do cPanel, selecione o banco de dados na lateral direita. Depois clique em Rotinas. Em seguida, clique em Add routine. Na caixa de diálogo, preencha cada campo como a imagem informada a seguir.


3. Testando a procedure na hospedagem, seria assim:

call inserir('2012-12-12');