Você está na página 1de 111

Fundamentos de Programação

PhP + MySqL

Introdução ao PhP
& MySqL
Pré-Requisito :Banco de
Dados, C ou
Equivalente

Eng.Eloy Tavares, M.Sc

Cabo Verde - 2015.2


O PhP(Hypertext Preprocessor)
 Concebida por Rasmus Lerdorf em outono 1994;
 Linguagem interpretada Open Source;
 Inicialmente desenvolvido para aplicações presentes e
atuantes no lado do servidor;
 Hoje é capaz de gerar página/conteúdo dinâmico na web.

 Para funcionar, o php precisa estar rodando em um servidor


de aplicação WEB como p.ex. o apache/WampServer.

 Os arquivos podem ser editados em notepad e salvos com a


extensão .php
O PhP(Hypertext Preprocessor)
 Os arquivos devem ser salvos em diretório / caminho :
C:/wamp/www/php_testeEloy
 php_testeEloy : Pasta que recebe arquivos de um projeto
Testando as Páginas Web
 Após iniciar o WampServer, com Click Direito acessar a
aba Localhost (127.0.0.1) conforme a figura que se segue:
Sintaxe básico do PHP
 Os scripts PhP devem ser “encapsulados” aos
tags HTML ou invocados a partir dos
method/action de um formulário HTML

 Para começar, precisamos abrir e fechar a tag


do php, conforme segue:


Imprimindo dados em PHP e
Comentários
 Usa-se o “echo”, e os argumentos string seguem
entre aspas (“”) com exceções de variáveis e
finaliza-se com “;”

 // A linha toda será um comentário


 /* */ Tudo que estiver delimitado por estes
caracteres serão entendido como comentário;
Imprimindo dados em PHP com
Formatação
Imprimindo dados em PHP e
Formatação de string (HTML)
Tipos de Dados
 O PhP, dispensa a declaração de tipo de dados inteiro (p. ex:
int Idade;).
 Ele verifica o tipo de dados dinamicamente durante tempo de
execução.
 Uma variável pode assumir e armazenar valores de diferentes
tipo.
 O PHP, verifica sempre o conteúdo decidindo qual o tipo da
variável naquele instante.

 O Caracter (dólar) $ é usado para definirmos uma variável e a


precede e sempre finalizado com o caracter ; (ponto e virgula)
– Ex.: $XPTO; (Variável XPTO, ainda não se sabe o tipo)
Tipos de Dados Bases
 Inteiro $Eloy = 1; $Eloy = -7;
$Eloy = 0234 Base octal –
simbolizado pelo 0 – decimal 156)
$Eloy = 0x34 Base Hexadecimal
representado pelo 0x – decimal 52

 Ponto Flutuante
– $media = 16.90;
$milhoes = 22e6; vinte e dois milhões(22.000.000)
Variáveis do tipo String (Duas
Formas)
 Usando aspas dupla (“”) qualquer variável ou caracter escape
será substituído antes de ser atribuído.

 Usando aspas simples (‘ ’) o valor de variável será exatamente o


texto contido entre aspas.
Representação Aspas

 Contagem de string

 Contagem de string
Operador concatenação
Só existe um único operador exclusivo para strings – ponto “.”
Operador concatenação
Algumas funções para tratamento
de strings em PHP
 strtouppper :Converter um texto para letras
maiúsculas.
Algumas funções para tratamento
de strings em PHP

 strtolower: converte as letras de um texto para letras


minúsculas.
 ucfirst: converte a primeira letra de um texto para
maiúsculo ou caixa alta é o contrário de lcfirst;
 ucwords : Converte a primeira letra de cada palavra
de um texto para maiúscula.
 ltrim: retira os espaços em branco localizados no lado
esquerdo de um texto, é o contrário de rtrim;
Algumas funções para tratamento
de strings em PHP

 trim: retira os espaços encontrados em ambos os


lados de um texto, no lado direito e esquerdo
 strlen: retorna um inteiro que indica o tamanho de
um texto
 strrev: reverte uma string, ou texto, deixando ele
ao contrário.
 Etc, etc
Operador - Atribuição
Operadores relacionais
Operadores Lógicos
Operador - Aritméticos
Presidência de Operadores em
PHP
Estruturas condicionais no PHP
If-Else
IF/ELSE-IF/ELSE & Operador
Lógico
Estruturas condicionais no PHP
switch/case

OBS:
No switch/case,
a condição
“default” ocorre se
nenhum dos “cases”
for verdadeiro;

“Break” para e
exibe o resultado
quando o “case” for
verdadeiro (...);
Estruturas Repetitivas
Laços / Ciclos / Loops/ em PHP
Estrutura de repetição - WHILE
Estrutura de repetição –
DO...WHILE
Estrutura de repetição - ARRAY
Estrutura de repetição – ARRAY
Arrays - Acessando índices
Arrays Associativo
Estrutura de repetição Matriz com
combinação de Array
Estrutura de repetição Matriz
Associativa com combinação de
Array
Estrutura de repetição - FOREACH

 O FOREACH é uma simplificação do operador FOR para


se trabalhar em coleções de dados, (vetores e matrizes).

 Permite acessar cada elemento individualmente iterando


sobre toda a coleção e sem a necessidade de
informação de índices.

 É possível executar um grupo de comandos para


cada elemento de um Array.
FOREACH – DUAS FORMAS
 No primeiro loop, caso 1), será varrido uma matriz dada por MeuArray.
 Cada iteração, o valor do elemento atual é atribuído a $valor e o ponteiro
interno da matriz é incrementado de um - loop a loop acessando o próximo
elemento).
 No caso 2) será atribuída a chave do elemento atual á variável $chave a
cada iteração. $chave conterá a chave do elemento (0, 1, 2,N) e $valor
conterá o valor do elemento do Array a ser acessado a cada iteração
Estrutura de repetição - FOREACH

 Segue o exemplo uso de FOR e o equivalente


em usando o foreach
Manipulação de Matriz /Foreach()
Caso queiramos inicializar o array diretamente usando associações,
devemos usar seta larga para vincular um valor a uma chave.
INTRODUÇÃO AO
PhP + MySqL

FUNÇÕES EM PhP

Eng.Eloy Tavares, M.Sc

Cabo Verde - 2015.2


FUNÇÕES EM PHP -
- DEFINIÇÕES E UTILIZAÇÃO

 Funções são usadas para criar pequenos trechos de códigos


separados. Esses trechos de códigos podem gerar um
resultado (o que chamamos de funções com retorno) ou
apenas executar uma rotina (funções sem retorno).

 Sua principal vantagem é condensar um trecho do código e


torná-lo utilizável em vários pontos diferentes.

 Toda função deve ter um nome e possuir um delimitador de


parâmetro que são identificados com parêntese
FUNÇÕES EM PHP -
- DEFINIÇÕES E UTILIZAÇÃO

 A declaração de funções no PHP – Dá-se usando a


expressão function seguida do nome da função e de sua
lista de argumentos;

 O corpo da função é delimitado por chaves “{ }”;

 O corpo da função manipula todo o conjunto de


instruções a ser executado quando a função for
invocada.

DEFINIÇÃO DE FUNÇÕES EM PhP
Funções com Retorno

 Funções com retorno são criadas da mesma forma das funções sem
retorno. Sua diferença principal é que esta função devolve um
resultado para o código usando a palavra chave return.
Função com parâmetro e com
retorno

 Funções podem receber dados para processá-los.

 A inserção de dados na função é dada por meio dos


parâmetros ou argumentos da função.

 Uma função pode ter quantos parâmetros forem


necessários desde que cada um seja separado por
vírgula e não tenha a mesma denominação.
Função com parâmetro e com
retorno
INVOCANDO UMA FUNÇÃO SEM
RETORNO
INTRODUÇÃO AO
PhP + MySqL

SGBD – MySQL;

SERVIDOR WEB –
APACHE/WAMPSERVER.

Eng.Eloy Tavares, M.Sc

Cabo Verde - 2015.2


Obter Dados de Formulário

 Dentre os aspectos mais importantes de linguagens de


programação web dinâmicas como PHP, é a possibilidade de
obter dados de formulários HTML.

 Existem duas formas principais de obter dados de um


formulário que irão depender da forma como o formulário é
submetido.

 Os valores dos formulários são armazenados e acessados


por variáveis de coleção: $_GET e $_POST;


METODOS $_GET
 Formulários enviados pelo método get, passam o valor de suas
variáveis pela URL dinâmica ou parâmetros de URL.
 Esses valores são acessados pela variável de coleção $_GET.

 Os nomes das variáveis servem de chave para a coleção.

 Se, por exemplo, tivermos uma URL da seguinte maneira.


http://forum.boadica.net/viewtopic.php?w=11&x=15
 Nós teremos duas variáveis: w = 11 e x = 15.
 Usamos assim o nome das variáveis para acessar esses valores: As
METODOS $_POST

 Formulários enviados pelo método post, passam


suas variáveis codificadas e de forma transparente
aos usuário, apenas o servidor e o browser
conhecem tais informações.
Obter o valor das variáveis em
formulários HTML

 Para obter o valor das variáveis usando os nomes


dos elementos do formulário como campos input,
textarea, etc. Considerando o formulário anterior,
deve-se usar os nomes dos atributos NAME como
chave do nosso método $_POST
METODOS $_REQUEST
 $_REQUEST é uma variável de uso genérico que não faz diferença se
o valor passado pelo formulário foi pelo método post /get.
 $_REQUEST verifica todas as entradas em uma ordem específica
determinada pela variável variables_order no arquivo de
configuração php.ini.
 Geralmente, a busca pelo valor de uma chave é feita: Variáveis de
URL (get) - Variáveis de formulário (post) - Variáveis de Cookies -
Variáveis de Sessão (W=CV)
EXEMPLO DE APLICAÇÃ PHP
COM BASE DE DADOS (BD)
 Instalar o WampServer e iniciá-lo;
 No C:\wamp\www, criar Diretório que hospeda o BD e demais
arquivos php, dentre outros necessário. p.ex.: php_testeEloy;
RESULTADO DO SCRIP ANTERIOR
CRIAR BD – ARMAZENA DADOS

 http://localhost/phpmyadmin
CRIAÇÃO / ARRANJOS DADOS EM
TABELA DE BANCO DE DADOS
INSERÇÃO DE DADOS EM BD MySQL /PHP
EXEMPLO: I/O DADOS E MENSAGENS
ATUALIZAÇÃO DE DADOS EM BD
ATUALIZAÇÃO DE DADOS EM BD
ATUALIZAÇÃO DE DADOS EM BD
CODIGO FONTE
APAGANDO DADOS EM MySQL/PHP
CODIGO FONTE
PESQUISANDO DADOS EM BASE
DADOS MySQL/PhP
PESQUISANDO DADOS EM BASE
DADOS MySQL/PhP
PESQUISANDO DADOS EM BASE
DADOS MySQL/PhP
PESQUISANDO DADOS EM BASE
DADOS MySQL/PhP
Etc...

INTRODUÇÃO A
GERENCIAMENTO
DE SGBD

Eng.Eloy Tavares, M.Sc

Cabo Verde - 2015.2


PORQUE ADMINISTRAR OS SGBD
PORQUE ADMINISTRAR OS SGBD
INTRFACES DE SGBD
ADMINISTRAÇÃO DOSISTEMA GESTOR DE BASE DADOS

 Tarefas administrativas
comuns

Eng.Eloy Tavares, M.Sc

Cabo Verde - 2015.2


PhpMyAdmin
Ferramenta que fornece uma interface gráfica para
administração do servidor MySQL

 Configuração do servidor e base de dados


 Gestão (criar, modificar, apagar) base de dados, tabelas, campos,
relações, índices, etc.
 consultas SQL e, por exemplo (Query)
 Definir utilizadores e atribuir permissões

 Realizar backup
 Criar gráficos (PDF) do esquema de base de dados
 Exportação para vários formatos (documentos de texto, planilhas)

71
PhpMyAdmin
PhpMyAdmin

 Configuração

 Arquivo config.inc.php (no diretório raiz phpMyAdmin)


 Mas o mais recomendado através da interface web em phpMyAdmin

 http://www.dominio.com/phpMyAdmin/setup

 Usando a senha de root do MySQL, que também se aplica ao mesmo

utilizador no phpMyAdmin

73
PhpMyAdmin
 PhpMyAdmin Página inicial
PhpMyAdmin

 Utilizadores de MYSQL

 Convém criar um novo utilizador para cada website


o Cada website terá suas próprias bases de dados
o O utilizador raiz só deve ser utilizado para administração

 Entrar em phpMyAdmin como root


o Em princípio sem senha, mas temos que colocar, para asegurança

7
PhpMyAdmin
 Utilizadores de MYSQL
 Em seguida, crie um novo utilizador
o por exemplo, para site de exemplo abaixo: Loja
o Utilizador Tab> Adicionar utilizador
o Na janela que aparece para indicar
o Nome de utilizador: Loja
o host (local se estivermos desenvolvendo com XAMPP em nosso PC)
o Senha: Loja
o Criar uma base de dados para o novo usuário
o Marque a caixa same name and grant all privileges Create database
with
o Não ative privilégios globais
 Sair de sessão do root
 Entrar com o novo usuário
o Podemos trabalhar com uma nova base de dados
CRIAR USUARIOS COM SENHAS
PhpMyAdmin
Criação de base de dados com o phpMyAdmin

 Como root: Criar base de dados


na guia base de dados
 Especifique um nome para a
base de dados
o A opção de "General settings"
indica o conjunto de regras de
comparação e
o texto de gerenciamento do
banco de dados, que
dependem da língua;

P.ex.: utf8_general_ci é válido para


muitas línguas e não é sensível para
minúscula e maiúscula
PhpMyAdmin

Gestão de base dados com o phpMyAdmin

 Ao selecionar a base de dados criado aparecem as operações das quais ela se sujeita
 Permissões pode ser adicionado de modo que os outros utilizadores podem usar aBD
 Em Estrutura, podemos criar tabelas que definem o esquema BD
PhpMyAdmin
 Exemplo simples de BD :dba

Clientes Pedidos Produtos


Nif* numero* id*
nome data nome
morada cliente preco
telefone produto descricao
quantidade

 * Chave Primária (objetos nesta coluna são únicos e não nulo). Ele será indexado.
 Pode-se também definir índices para melhorar a eficiência de busca
 Chaves estrangeira (foreign keys) identificam uma coluna (ou grupo de colunas) de
uma tabela que relaciona-se com uma outra coluna na outra tabela.
 Garantem a integridade de BD: Não é possível criar um encomenda de um cliente ou
de um produto que não existe.
80
PhpMyAdmin
Criação da tabela Cliente
PhpMyAdmin

Criação da tabela Produtos

82
PhpMyAdmin
Criação da tabela Pedidos
PhpMyAdmin
Definir relações entre as tabelas
 Usando guia Designer de ver graficamente as tabelas (mysql-workbench-
community-6.3.9-winx64)
 Para adcionar uma relação selecione opção create relation
• Selecione a chave primária da tabela clientes: nif
• Selecione a chave estrangeira na tabela Pedidos: cliente
 Aparece uma janela para selecionar e preservar a integridade das
referências, as seguintes operações:
• APAGAR:selecione Restringir
• UPDATE:selecione CASCATA

84
PhpMyAdmin

Introduzir dados nas tabelas

 Selecione a tabela
• Selecione a guia Inserir
• Introduzir dados para os campos correspondentes em Valor
 Também se pode entrar através do programa PHP que recupera as
informações de um utilizador tenha introduzido em um formulário de
uma página web

 Na guia Browser se pode ver os registros de base de dados e e modificá-


los

8
5
PhpMyAdmin

Backup restauro de base de dados


 Export
 Opções (selecione Custom en Export Method)
 Que tipo de Backup?
• Servidor completa
• Um BD inteiro
• Uma tabela
• Estrutura ou dados, ou ambos
• Compressão: nenhum, zipado, compactado, bzipped
• Format
 SQL,CSV,Word, Latex, Excel, OpenDoc, PDF,XML, JSON,etc.
 O processo inverso é possívelimportação
ADMINISTRAÇÃO DOSISTEMA GESTOR DE BASE DADOS

AdministraçãodeUsuários
&
Privilégios na BD

Eng.Eloy Tavares, M.Sc

Cabo Verde - 2015.2


Administração de Usuários e Privilégios naBD

 Todo agrupamento de BD possui um conjunto de usuários de base de


dados.

 Estes usuários são distintos dos usuários gerenciados pelo sistema


operacional onde o servidor executa. Os usuários possuem objetos de
base de dados (por exemplo, tabelas), e podem conceder privilégios nestes
objetos para outros usuários controlando, assim, quem pode aceder qual
objeto.

 Iremos ver como criar e fazer gestão de usuários, e introduz o sistema de


privilégios, baseados no MySQL, mas que conceitualmente é muito similar
em outros BDs.
Administração de Usuários e Privilégios naBD

 Criando um Usuário
 Para criar um usuário deve ser utilizado o comando:

 CREATE USER ' eloy'@'localhost' IDENTIFIED BY '123456';

 eloy - nome de usuário no servidor local


 Identified by (senha) - 123456

 Para criar usuário sem senha CREATE USER ' eloy'@'localhost'


Administração de Usuários e Privilégios naBD

Alterar senha de um Usuário

 Mesmo que você defina ou não uma senha ao criar um


usuário, podemos alterar a senha dele posteriormente,
através do comando SET PASSWORD, seguindo o
exemplo a seguir: SET
PASSWORD FOR eloy = PASSWORD ('abc123');

9
0
Administração de Usuários e Privilégios naBD

 Eliminar um Usuário
 Para remover um usuário existente deve ser utilizado o comando DROP USER:

 DROPUSER ‘eloy'@'localhost';

 Ao excluir um usuário, todos os seus privilégios também serão excluídos.

Administração doSGDB
91
Administração de Usuários e Privilégios naBD

 Privilégios

 O sistema de privilégios do MySQL garante que todos usuários


possam fazer exatamente as operações que lhe é permitido.

 Quando conetamos a um servidor MySQL, nossa identidade é


determinada pela maquina donde conetamos e o nome de usuário
que especificamos.

 O sistema concede privilégios de acordo com sua identidade e com o


que desejarmos fazer.
Administração de Usuários e Privilégios naBD
 Privilégios

Privilégio Descrição

ALL[PRIVILEGES] Todosos privilégios exceto GRANT OPTION

ALTER Permite executar ALTER TABLE

CREATE Permite executar CREATE TABLE

CREATETEMPORARY Permite executar CREATE TEMPORARY TABLE


TABLES
Permite executar DELETE
DELETE
DROP Permite executar DROP TABLE

EXECUTE Executar funções ou procedimentos armazenados 9


3
Administração de Usuários e Privilégios naBD
 Privilégios
Privilégio Descrição
Permite executar SELECT … INTO OUTFILE e
FILE
LOAD DATA IN FILE
INDEX Permite executar CREATE INDEX e DROP
INDEX
INSERT Permite executar INSERT
Permite executar LOCK T ABLE S em
LOCK TABLES
tabelas
que você tenha o privilégio SELECT
PROCESS Permite executar SHOW FULL PROCESS
LIST
Permite ao usuário obter a localização do
REPLICATION Master ou Slave
CLIENT 9
RELOAD Permite executar FLUSH 4
Administração de Usuários e Privilégios naBD
 Privilégios
Privilégio Descrição
Necessário para a replicação Slave (leitura dos eventos do
REPLICATION SLAVE
log binário
do Master)
SELECT Permite executar SELECT
SHOW DATABASES exibe todos os base de dados
SHUTDOWN Permite executar mysqladmin shutdown
Permite executar CHANGE MASTER, KILL , PURGE
SUPER MASTER LOGS e SET
GLOBAL. Permite conectar-se ao servidor uma vez, mesmo
que o
max_connections tenha sido atingido
UPDATE Permite executar UPDATE
USAGE Sinônimo para “no privileges”
GRANT OPTION Permite dar privilégios a outros usuários
INSERT Permite executar INSERT

USAGE
conta do usuário.
9
Não altera privilégios; usado para tarefas administrativas na
5
Administração de Usuários e Privilégios
naBD

9
6
Administração de Usuários e Privilégios
naBD
 Privilégios - Nível Global

 Privilégios globais aplicam para todos base de dados em


um determinado servidor.
 Estes privilégios são armazenados na tabela mysql.user.
GRANT ALL ON *.* e REVOKE ALL ON *.* concederão e
revogarão apenas privilégios globais.

9
7
Administração de Usuários e Privilégios
naBD
 Privilégios - Nível de base de dados

 Privilégios de base de dados aplicam-se a todas as


tabelas em uma determinada base de dados. Estes
privilégios são armazenados nas tabelas mysql.db e
mysql.host. GRANT ALL ON db.* e REVOKE ALL ON db.*
concederão e revogarão apenas privilégios de base de
dados.

9
8
Administração de Usuários e Privilégios
naBD
 Privilégios - Nível das tabelas

 Privilégios de tabelas aplicam-se a todas as colunas em uma


determinada tabela.
 Estes privilégios são armazenados na tabela mysql.tables_priv.
GRANT ALL ON db.table e REVOKE ALL ON db.table
concederão e revogarão apenas privilégios de tabelas.

9
9
Administração de Usuários e Privilégios
naBD

 Privilégios - Nível das colunas

 Nível das colunas – Privilégios de colunas aplicam-se a uma


única coluna em uma determinada tabela. Estes privilégios são
armazenados na tabela mysql.columns_priv.

1
0
0
Administração de Usuários e Privilégios
naBD
 Armazenando informações sobre privilégios

Privilégio Descrição
Armazena nomes e senhas de todos os usuários
do servidor. Também armazena os privilégios
user globais que são aplicados a todos os base de
dados do servidor.

db Armazena privilégios de uma base de dados

tables_priv Armazena privilégios das tabelas

columns_priv Armazena privilégios de colunas


1
0
1
ADMINISTRAÇÃO DOSISTEMA GESTOR DE BASE
DADOS
 Usando a declaração GRANTpara atribuir privilégios
 Revogando privilégios coma declaração REVOKE

Administração do
SGDB
3
Usando a declaração GRANT para atribuir
privilégios

 Criar um usuário de nome pedro, sem privilégios:


Criar usuário sem GRANT USAGE ON *.* TO pedro@localhost
privilégios IDENTIFIED BY '1234';

Para SHOW GRANTS FOR


verificar: pedro@localhost;

1
0
3
Usando a declaração GRANT para atribuir privilégios
 Criar um usuário com privilégios globais:

Criar um usuário GRANT ALL ON *.* TO sandro IDENTIFIED


com BY '1234‘ WITH GRANT
privilégios globais OPTION

Para SHOW GRANTS FOR sandro;


verificar:

1
0
4
Usando a declaração GRANT para atribuir privilégios

Dar privilégios específicos para execução de


comandos DML em todas as tabelas do BD dba ao
usuário pedro:
privilégios GRANT SELECT, INSERT, UPDATE, DELETE ON
específicos dba.* TO
pedro@localhost;

Para SHOW GRANTS FOR


verificar: pedro@localhost;

1
0
5
Usando a declaração GRANT para atribuir
privilégios
 Dar todos os privilégios do DB dba à
usuária pedro:

todos os GRANT ALL ON dba.*TO


privilégios pedro@localhost;

Para SHOW GRANTS FOR


verificar: pedro@localhost;

1
0
6
Usando a declaração GRANT para atribuir privilégios
 Criar um usuário de nome joana, semprivilégios:

Criar usuário GRANT USAGE ON *.* TO joana@localhost


sem IDENTIFIED BY '1234';
privilégios

Para SHOW GRANTS FOR


verificar: joana@localhost;

 Garantir o privilégio de consultar nomes e preço e alterar somente


descrição(coluna descricao) da tabela produtos de BD dba ao usuário joana:
GRANT SELECT (nome, preco), UPDATE
privilégio de
(descricao)ON
consultar:
dba.produtosTO joana@localhost;
privilégio de show grants for joana@localhost;
consultar: 107
Revogando privilégios com a
declaração REVOKE
Podemos revogar (retirar) privilégios dos
usuários usando a declaração REVOKE.

Sintaxe: REVOKE lista_privilégios


ON objeto
FROM usuário1,
usuário2, ...;

108 Administração do SGDB


Revogando privilégios com a declaração
REVOKE
Vamos revogar o privilégio de exclusão de
dados na base de dados dba à usuária pedro:
REVOKE DELETE
revogar o ON dba.*
privilégio FROM pedro@localhost;

Para SHOW GRANTS FOR


verificar: pedro@localhost;
1
0
9
Revogando privilégios com a declaração
REVOKE
Retirando o privilégio de atualização da coluna nome
em BD dba, na tabela de produtos, do usuário sandro:

revogar o REVOKE UPDATE (nome)


privilégio de ON dba FROM sandro@localhost;
atualização

Para SHOW GRANTS FOR


verificar: sandro@localhost;
1
1
0
Revogando privilégios com a declaração
REVOKE
Remover todos os privilégios em todas
as BD dos usuários sandro:
REVOKE ALL, GRANT OPTION
revogar todos os FROM sandro@localhost;
privilégios

Para SHOW GRANTS FOR


verificar: sandro@localhost;

111

Você também pode gostar