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
 
(6 edições intermediárias de um usuário não apresentadas)
Linha 1: Linha 1:
 +
[[File:Banner-wiki-promocoes.gif|center| 700px||border|link=https://www.integrator.com.br/plano-hospedagem-promocionais|Planos promocionais|]]
 +
 +
 +
----
 +
 
; Problema no mysql
 
; Problema no mysql
  
Um erro comum no '''MySQL''' para usuários inexperientes é a permissão de '''Views''', '''Functions''' e '''Procedures'''.
+
Comum no '''MySQL''' para certos usuários, principalmente os que não estão acostumados a trabalhar com permissão, são os erros que ocorrem na importaçã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.  
+
O '''MySQL''' diferencia, na criação de uma function ou procedure, por exemplo,  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 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.  A condição remota no MySQL é indicada pela percentagem - '''%'''.
  
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.
+
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, definido como '''localhost'''.
  
 
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.  
 
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.  
Linha 15: Linha 20:
 
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. O comando deve ser executado no terminal do MySQL.
+
2. A procedure de exemplo, onde o '''USUARIO''' é o seu usuário do cPanel. O comando pode ser executado no terminal do MySQL (você pode acessar o terminal do MySQL iniciando pelo [[Acessando SSH dentro do cPanel|terminal SSH]]).
 
<pre>
 
<pre>
 
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);
  
:END $$
+
END $$
 
DELIMITER ;
 
DELIMITER ;
 
</pre>
 
</pre>
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'''.
+
2.1 Também pode fazer uso do SQL dentro do phpMyAdmin do cPanel. Porém, não há necessidade do DELIMITER.
 +
 
 +
2.2 Se preferir usar o phpMyAdmin do cPanel para criar procedures,  ou functions, 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.
 
Na caixa de diálogo, preencha cada campo como a imagem informada a seguir.
  
Linha 43: Linha 50:
 
[[Categoria:BANCO DE DADOS]]
 
[[Categoria:BANCO DE DADOS]]
 
[[Categoria:TUTORIAIS]]
 
[[Categoria:TUTORIAIS]]
 +
[[Categoria:MYSQL]]

Edição atual tal como às 15h54min de 8 de julho de 2023

Banner-wiki-promocoes.gif



Problema no mysql

Comum no MySQL para certos usuários, principalmente os que não estão acostumados a trabalhar com permissão, são os erros que ocorrem na importação de Views, Functions e Procedures.

O MySQL diferencia, na criação de uma function ou procedure, por exemplo, 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. A condição remota no MySQL é indicada pela percentagem - %.

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, definido como localhost.

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 pode ser executado no terminal do MySQL (você pode acessar o terminal do MySQL iniciando pelo terminal SSH).

DELIMITER $$

CREATE DEFINER='USUARIO'@'localhost' PROCEDURE `inserir`(data date)
BEGIN
  INSERT INTO teste VALUES (NULL,data);

END $$
DELIMITER ;

2.1 Também pode fazer uso do SQL dentro do phpMyAdmin do cPanel. Porém, não há necessidade do DELIMITER.

2.2 Se preferir usar o phpMyAdmin do cPanel para criar procedures, ou functions, 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.

2016-01-15 14-55-34.jpg


3. Testando a procedure na hospedagem, seria assim:

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