Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal, estou postando um manual completo de controle de usuários no MySQL.
Espero que gostem e qualquer dúvida pergunte!
A principal funcao é autenticar o usuário que conecta no host e associar a
ele privilegios na base de dados tal como: SELECT, INSERT, UPDATE e DELETE.
O MySQL envolve dois estágio quando você conecta no servidor:
- Estágio 1 = Servidor verifica se você tem permissão para conectar.
permissãao para executar select, usar o comando drop, etc...
****
Para mostrar os usuários cadastrados no MySQL:
SELECT Host, User FROM mysql.user;
Para mostrar os privilégios associados a determinado usuário:
show grants for 'root'@'localhost';
****Alterar o password de determinado usuário:
****
set password for 'root'@'localhost'=password('novopassword');
Criar novo usuário:
CREATE USER user [IDENTIFIED BY [PASSWORD] 'password']
[, user [IDENTIFIED BY [PASSWORD] 'password']] ...
Exemplo:
create user joao;- este comando cria o usuario joao, sem senha.
create user joao identified by 'joao';- este comando cria o usuario joao, com senha joao.
OBS.: este usuario é criado sem nenhum privilégio. Ou seja,
não pode fazer nada! Pode apenas executar comandos do tipo:
Select 2+2;
Privilégios ao usuário:
GRANT priv_type [(column_list)] [, priv_type [(column_list)]] ...
ON [object_type] {tbl_name | | . | db_name.}
TO user [IDENTIFIED BY [PASSWORD] 'password']
[, user [IDENTIFIED BY [PASSWORD] 'password']] ...
[REQUIRE
NONE |
[{SSL| X509}]
[CIPHER 'cipher' [AND]]
[ISSUER 'issuer' [AND]]
[SUBJECT 'subject']]
[WITH with_option [with_option] ...]
object_type =
TABLE
| FUNCTION
| PROCEDURE
with_option =
GRANT OPTION
| MAX_QUERIES_PER_HOUR count
| MAX_UPDATES_PER_HOUR count
| MAX_CONNECTIONS_PER_HOUR count
| MAX_USER_CONNECTIONS count
priv_type pode ser:
ALL [PRIVILEGES] Grants all privileges at specified access level except GRANT OPTION
ALTER Enables use of ALTER TABLE
ALTER ROUTINE Enables stored routines to be altered or dropped
CREATE Enables use of CREATE TABLE
CREATE ROUTINE Enables creation of stored routines
CREATE TEMPORARY TABLES Enables use of CREATE TEMPORARY TABLE
CREATE USER Enables use of CREATE USER, DROP USER, RENAME USER, and REVOKE ALL PRIVILEGES.
CREATE VIEW Enables use of CREATE VIEW
DELETE Enables use of DELETE
DROP Enables use of DROP TABLE
EVENT Enables creation of events for the event scheduler
EXECUTE Enables the user to run stored routines
FILE Enables use of SELECT ... INTO OUTFILE and LOAD DATA INFILE
INDEX Enables use of CREATE INDEX and DROP INDEX
INSERT Enables use of INSERT
LOCK TABLES Enables use of LOCK TABLES on tables for which you have the SELECT privilege
PROCESS Enables the user to see all processes with SHOW PROCESSLIST
RELOAD Enables use of FLUSH
REPLICATION CLIENT Enables the user to ask where slave or master servers are
REPLICATION SLAVE Needed for replication slaves (to read binary log events from the master)
SELECT Enables use of SELECT
SHOW DATABASES SHOW DATABASES shows all databases
SHOW VIEW Enables use of SHOW CREATE VIEW
SHUTDOWN Enables use of mysqladmin shutdown
SUPER Enables use of CHANGE MASTER, KILL, PURGE MASTER LOGS, and SET GLOBAL statements, the mysqladmin debug command; allows you to connect (once) even if max_connections is reached
TRIGGER Enables the user to create or drop triggers
UPDATE Enables use of UPDATE
USAGE Synonym for “no privileges”
GRANT OPTION Enables privileges to be granted
Para utilizar o comando GRANT, você deve ter o privilégio GRANT OPTION e
também deve ter o privilégio do que você está dando permissão.
Exemplo: se estou dando permissão para o usuario 'joao' utilizar o comando
DROP, eu tenho que ter a permissão de utilizar o comando DROP.
Privilégios podem ser dados a vários níveis:
Os privilégios são aplicados a todas as base de dados em um dado servidor.
são armazenados na tabela mysql.user.
GRANT ALL ON . e REVOKE ALL ON . dão e revogam somente privilégios globais.
Os privilégios são aplicados a todos objetos em um dado banco de dados.
são armazenados na tabela mysql.db e mysql.host. GRANT ALL ON nomeBanco.*
e REVOKE ALL ON nomeBanco.* dao e revogam somente privilégios de banco de
dados.
Os privilégios são aplicados a todas as colunas em uma dada tabela.
são armazenados na tabela mysql.tables_priv. GRANT ALL ON nomeBanco.nomeTabela
e REVOKE ALL ON nomeBanco.nomeTabela dão e revogam somente privilégios
de tabela.
Os privilégios são aplicados a colunas em uma data tabela.
são armazenados na tabela mysql.columns_priv. Quando utilizar REVOKE, você
deve especificar as mesmas colunas que você deu privilégios.
Exemplo:
GRANT SELECT (col1), INSERT (col1,col2) ON mydb.mytbl TO 'usuario'@'host';
Os privilégios CREATE ROUTINE, ALTER ROUTINE, EXECUTE e GRANT sao aplicados
em rotinas armazenadas (funcoes e procedimentos). eles podem ser dados
no nivel global ou de banco de dados.
A clausula "object_type" deve ser especificada como TABLE, FUNCTION ou
PROCEDURE.
GRANT CREATE ROUTINE ON mydb.* TO 'someuser'@'somehost';
GRANT EXECUTE ON PROCEDURE mydb.myproc TO 'someuser'@'somehost';
Para as estruturas GRANT e REVOKE, "priv_type" pode ser especificado como:
****
Exemplo de GRANT:
****
Dar permissão para o usuário selecionar apenas itens da base de dados X;
GRANT select ON X.* TO usuario;
Dar permissão para o usuário selecionar apenas itens da tabela Y do banco X;
GRANT select ON X.Y TO usuario;
COMANDO PARA REMOVER UM USUÁRIO
DROP USER user [, user] ...
COMANDO PARA REMOVER PRIVILÉGIOS
REVOKE priv_type [(column_list)] [, priv_type [(column_list)]] ...
ON [object_type] {tbl_name | | . | db_name.}
FROM user [, user] ...
REVOKE ALL PRIVILEGES, GRANT OPTION FROM user [, user] ...
Para verificar qual usuário está logado:
SELECT USER();
Funções e rotinas retirados do manual oficial.
Carregando comentários...