This is a read-only copy of the MariaDB Knowledgebase generated on 2024-11-21. For the latest, interactive version please visit https://mariadb.com/kb/.

GRANT

Sintaxe

GRANT
    priv_type [(column_list)]
      [, priv_type [(column_list)]] ...
    ON [object_type] priv_level
    TO user [IDENTIFIED BY [PASSWORD] 'password']
        [, user [IDENTIFIED BY [PASSWORD] 'password']] ...
    [REQUIRE {NONE | ssl_option [[AND] ssl_option] ...}]
    [WITH with_option [with_option] ...]

object_type:
    TABLE
  | FUNCTION
  | PROCEDURE

priv_level:
    *
  | *.*
  | db_name.*
  | db_name.tbl_name
  | tbl_name
  | db_name.routine_name

with_option:
    GRANT OPTION
  | MAX_QUERIES_PER_HOUR count
  | MAX_UPDATES_PER_HOUR count
  | MAX_CONNECTIONS_PER_HOUR count
  | MAX_USER_CONNECTIONS count

ssl_option:
    SSL
  | X509
  | CIPHER 'cipher'
  | ISSUER 'issuer'
  | SUBJECT 'subject'

Descrição

A instrução GRANT pertite a você criar contas MariaDB e conceder privilégios as contas. Para usar GRANT, você deve ter o privilégio GRANT OPTION, e você deve ter os privilégios que está concedendo.

O argumento user e a cláusula IDENTIFIED BY são as mesmas usadas na instrução CREATE USER. Se a conta de usuário ainda não existe, será implicitamente criada. Você deve ter os privilégios necessários para a instrução CREATE USER para criar implicitamente um usuário com GRANT. Se a conta de usuário existir e você fornecer a cláusula IDENTIFIED BY, a senha do usuário será alterada. Você deve ter os privilégios necessários para a instrução SET PASSWORD para alterar uma senha de usuário com GRANT.

Use a instrução REVOKE para revogar privilégios concedidos com a instrução GRANT.

Use a instrução SHOW GRANTS para determinar que privilégios possui uma conta.

Níveis de Privilégios

Privilégios podem ser definidos globalmente, para um banco de dados, para uma tabela ou rotina, ou para colunas individuais numa tabela. Certos privilégios só podem ser definidos em certos níveis.

  • Privilégios Globais são concedidos usando *.* para priv_level. Privilégios globais incluem privilégios para administrar o banco de dados e genrenciar contas de usuário, assim como privilégios para todas as tabelas, funções, e procedimentos.
  • Privilégios do Banco de Dados são concedidos usando db_name.* para priv_level, ou apenas usando * para usar o banco de dados padrão. Os privilégios do banco de dados incluem privilégios para a criação de tabelas e funções, assim como privilégios para todas as tabelas, funções e procedimentos no banco de dados.
  • Privilégios de tabela são concedidos usando db_name.tbl_name para priv_level, ou apenas usando tbl_name para especificar uma tabela no banco de dados padrão. A palavra-chave TABLE é opcional. Os privilégios de tabela incluem a capacidade de selecionar e alterar dados na tabela. Certos privilégios de tabela podem ser concedidos para colunas individuais.
  • Privilégios de coluna são concedidos especificando uma tabela para priv_level e fornecendo uma lista de colunas após o tipo de privilégio. Eles permitem a você controlar exatamente quais colunas numa tabela podem os usuários selecionar e alterar.
  • Privilégios de função são concedidos usando FUNCTION db_name.routine_name para priv_level, ou apenas usando FUNCTION routine_name para especificar uma função no banco de dados padrão.
  • Privilégios de procedimento são concedidos usando PROCEDURE db_name.routine_name para priv_level, ou usando apenas PROCEDURE routine_name para especificar um procedimento no banco de dados padrão

O Privilégio USAGE

O privilégio USAGE não concede privilégios reais. A instrução SHOW GRANTS mostrará um privilégio global USAGE para um usuário recém-criado. Você pode usar USAGE com a instrução GRANT para alterar opções como GRANT OPTION e MAX_USER_CONNECTIONS sem ter que alterar nenhum privilégio de conta.

O privilégio ALL PRIVILEGES

O privilégio ALL PRIVILEGES concede todos os privilégios disponíveis. Conceder todos os privilégios só afeta o nível de privilégio dado. Por exemplo, conceder todos os privilégios para uma tabela não concede nenhum privilégio no banco de dados ou globalmente.

Usar ALL PRIVILEGES não concede o privilégio especial GRANT OPTION.

Você pode usar ALL em vez de ALL PRIVILEGES.

O privilégio GRANT OPTION

Use a cláusula WITH GRANT OPTION para dar aos usuários a capacidade de conceder privilégios a outros usuários no nível de privilégio dado. Os usuários com o privilégio GRANT OPTION podem conceder somente os privilégios que eles têm. Eles não podem conceder privilégios num nível mais elevado de privilégios do que onde eles têm o privilégio GRANT OPTION.

O privilégio GRANT OPTION não pode ser definido para colunas individuais.

Se você usar WITH GRANT OPTION ao especificar privilégios de coluna, o privilégio GRANT OPTION será concedido á tabela inteira.

Usar a cláusula WITH GRANT OPTION é equivalente a definir GRANT OPTION como um privilégio.

Privilégios Globais

A seguinte tabela lista os privilégios que podem ser concedidos globalmente. Você pode também conceder todos os privilégios do banco de dados, tabelas e funções globalmente. Quando são concedidos globalmente, estes privilégios aplicam para todos os bancos de dados, tabelas, ou funções, incluindo aquelas criadas posteriormente.

Para definir um privilégio global, use *.* para priv_level.

PrivilégioDescrição
CREATE USERCria um usuário usando a instrução CREATE USER, ou implicitamente criando um usuário com a instrução GRANT.
FILE
GRANT OPTIONConcede privilégios globais. Você só pode conceder privilégios que você tem.
PROCESS
RELOAD
REPLICATION CLIENT
REPLICATION SLAVE
SHOW DATABASESLista todos os bancos de dados usando a instrução SHOW DATABASES. Sem o privilégio SHOW DATABASES, você ainda pode emitir a instrução SHOW DATABASES, mas isto só ira listar os bancos de dados que contenham tabelas nas quais você tenha privilégios.
SHUTDOWNApaga o servidor usando o comando mysqladmin shutdown.
SUPER

Privilégios de Banco de Dados

A seguinte tabela lista os privilégios que podem ser concedidos ao nível do banco de dados. Você pode também conceder todos os privilégios de tabelas e funções ao nível do banco de dados. Os privilégios de tabelas e funções num banco de dados aplicam a todas as tabelas ou funções no banco, incluindo aqueles criados posteriormente.

Para definir um privilégio para um banco de dados, especifique o banco usando db_name.* para priv_level, ou apenas use * para especificar o banco de dados padrão.

PrivilégioDescrição
CREATECria um banco de dados usando a instrução CREATE DATABASE, quando o privilégio é concedido a um banco de dados. Você pode conceder o privilégio CREATE para bancos de dados que ainda não existem. Isto também irá conceder o privilégio CREATE para todas as tabelas no banco.
CREATE ROUTINE
CREATE TEMPORARY TABLESCria tabelas temporais com a instrução CREATE TEMPORARY TABLE.
DROPExclui um banco de dados usando a instrução DROP DATABASE, quando o privilégio é concedido a um banco de dados. Drop a database using the DROP DATABASE statement, when the privilege is granted for a database. Isto também irá conceder o privilégio DROP para todas as tabelas no banco.
EVENT
GRANT OPTIONConcede privilégios de banco de dados. Você só pode conceder privilégios que você tem.
LOCK TABLES

Privilégios de Tabela

PrivilégioDescrição
ALTERAltera a estrutura de uma tabela existente usando a instrução ALTER TABLE.
CREATECria uma tabela usando a instrução CREATE TABLE. Você pode conceder o privilégio CREATE em tabelas que ainda não existem.
CREATE VIEWCria uma visão usando a instrução CREATE_VIEW.
DELETERemove linhas de uma tabela usando a instrução DELETE.
DROPExclui uma tabela usando a instrução DROP TABLE ou uma visão usando a instrução DROP VIEW.
GRANT OPTIONConcede privilégios de tabela. Você só pode conceder privilégios que você tem.
INDEXCria um index numa tabela usando a instrução CREATE INDEX. Sem o privilégio INDEX, você ainda pode criar indexes ao criar uma tabela usando a instrução CREATE TABLE se você tiver o privilégio CREATE, e você pode criar indexes usando a instrução ALTER TABLE, se você tiver o privilégio ALTER.
INSERTAdiciona linhas à uma tabela usando a instrução INSERT. O privilégio INSERT também pode ser definido em colunas individuais ; veja Privilégios de coluna abaixo para mais detalhes.
REFERENCES
SELECTLê os dados de uma tabela usando a instrução SELECT. O privilégio SELECT também pode ser definido em colunas individuais; veja Privilégios de coluna abaixo para mais detalhes.
SHOW VIEWMostra a instrução CREATE VIEW para criar uma visão usando a instruçãoSHOW CREATE VIEW.
TRIGGER
UPDATEAtualiza as linhas existentes numa tabela usando a instrução UPDATE. As instruções UPDATE usualmente incluem uma cláusula WHERE para atualizar só certas linhas. Você deve ter privilégios SELECT na tabela ou nas colunas apropriadas para a cláusula WHERE. O privilégio UPDATE pode ser também definido em colunas individuais; veja Privilégios de coluna abaixo para mais detalhes.

Privilégios de coluna

Alguns privilégios de tabela podem ser definidos para colunas individuais numa tabela. Para usar privilégios de coluna, especifique a tabela explicitamente e forneça uma lista de nomes de coluna após o tipo de privilégio. Por exemplo, a seguinte instrução permitiria ao usuario lêr os nomes e as posições dos empregados, mas não alguma outra informação da mesma tabela, tal como os salários.

GRANT SELECT (name, position) on Employee to 'jeffrey'@'localhost';
PrivilégioDescrição
INSERT (column_list)Adiciona linhas especificando os valores em colunas usando a instrução INSERT. Se você só tiver privilégios INSERT a nível de coluna, você deve especificar as colunas que você está definindo na instrução INSERT. O resto das colunas será definido com seus valores padrão, ou NULL.
REFERENCES (column_list)
SELECT (column_list)Lê valores de colunas usando a instrução SELECT. Você não pode acessar ou consultar nenhuma coluna da qual você não tenha privilégios SELECT, incluindo as cláusulas WHERE, ON, GROUP BY, e ORDER BY.
UPDATE (column_list)Atualiza valores em colunas de linhas existentes usando a instrução UPDATE. As instruções UPDATE usualmente incluem uma cláusula WHERE para atualizar só certas colunas. Você deve ter privilégios SELECT na tabela ou nas colunas apropriadas para a cláusula WHERE.

Privilégios de função

PrivilégioDescrição
ALTER ROUTINEAltera as características de uma função armazenada usando a instrução ALTER FUNCTION.
EXECUTEUsa uma função armazenada. Você precisa de privilégios SELECT para qualquer tabela ou coluna acessada pela função.
GRANT OPTIONConcede privilégios de função. Você só pode conceder privilégios que você tem.

Privilégios de procedimento

PriviégioDescrição
ALTER ROUTINEaltera as características de um procedimento armazenado usando a instrução ALTER PROCEDURE.
EXECUTEExecuta um procedimento armazenado usando a instrução CALL. O privilégio de chamar um procedimento pode permitir a você executar ações que de outra forma você não poderia executar, tais como inserir linhas numa tabela.
GRANT OPTIONConcede privilégios de procedmiento. Você só pode conceder privilégios que você tem.
Content reproduced on this site is the property of its respective owners, and this content is not reviewed in advance by MariaDB. The views, information and opinions expressed by this content do not necessarily represent those of MariaDB or any other party.