CREATE USER
Sintaxe
CREATE [OR REPLACE] USER [IF NOT EXISTS] user_specification [,user_specification] ... [REQUIRE {NONE | tls_option [[AND] tls_option] ...}] [WITH resource_option [resource_option] ...] user_specification: username [authentication_option] authentication_option: IDENTIFIED BY 'authentication_string' | IDENTIFIED BY PASSWORD 'hash_string' | IDENTIFIED {VIA|WITH} authentication_plugin | IDENTIFIED {VIA|WITH} authentication_plugin BY 'authentication_string' | IDENTIFIED {VIA|WITH} authentication_plugin {USING|AS} 'hash_string' tls_option: SSL | X509 | CIPHER 'cipher' | ISSUER 'issuer' | SUBJECT 'subject' resource_option: MAX_QUERIES_PER_HOUR count | MAX_UPDATE_PER_HOUR count | MAX_CONNECTIONS_PER_HOUR count | MAX_USER_CONNECTIONS count
Descrição
A instrução CREATE USER
cria novas contas MariaDB. Para usá-lo, você deve ter o privilegio global CREATE USER
ou então o privilegio INSERT
para o banco de dados mysql. Por cada conta, CREATE USER
cria uma nova fila na tabela mysql.user a qual não tem privilegios.
Veja Nomes de conta abaixo, para mais detalhes em como os nomes de conta são especificados.
Se uma das contas de usuário especificadas já existe, resultará em ERROR 1396 (HY000)
. Se ocorrer um erro, CREATE USER
ainda irá criar as contas que não resultem num erro.
Pode ser dada uma senha à conta com a cláusula opcional IDENTIFIED BY
. Para especificar a senha em texto simples, omita a palavra-chave PASSWORD
. Para especificar a senha como o valor
em hash como foi retornado pela função PASSWORD
incluia a palavra-chave PASSWORD
.
Se você não especificar uma senha com a cláusula IDENTIFIED BY
, o usuário poderá se conectar sem precisar de uma senha. Uma senha em branco não é um curinga que possa corresponder alguma senha. O usuário deve se conectar sem fornecer uma senha, se a senha não estiver definida.
Nomes de conta
O nomes de conta têm tanto o nome de usuário quanto o nome do host, e são especificados como 'user_name'@'host_name'
.
Se o nome do host não for fornecido, asume-se que é '%'
.
Quando você se conecta à um servidor MariaDB, seu nome de usuário e host devem corresponder uma única conta.
Os nomes de host podem conter os caracteres curinga %
e _
. Eles são comparados pela cláusula LIKE
. Se você precisa usar um caractere curinga literalmente (por exemplo, fazer com que um nome de dominio coincida com um underscore) prefixe o caractere com um backslash. Veja LIKE
para mais informações sobre o escape de caracteres curinga.
As correspondências de nome de host são case-insensitive (não distingue maiúsculas de minúsculas). Os nomes de host podem corresponder tanto nomes de domínio quanto endereços IP. Use 'localhost'
como o nome do host para permitir somente conexões do cliente local.
Você pode usar uma máscara de rede para cobrir um intervalo de endereços IP usando 'base_ip/netmask'
como o nome do host. Um usuário com o endereço IP ip_addr terá permissão para se conectar se a seguinte condição for verdadeira:
ip_addr & netmask = base_ip
Você somente pode usar máscaras de rede que especifiquem um multiplo de 8 bits do endereço a corresponder. Isso significa que somente as seguintes máscaras são permitidas:
255.0.0.0 255.255.0.0 255.255.255.0 255.255.255.255
Usar 255.255.255.255
é igual a não usar nenhuma máscara de rede.
O nome de usuário e nome do host podem estar sem aspas, citados como strings usando aspas duplas ou aspas simples, ou citados como identificadores usando aspas invertidas. Se você citar, você deve citar separadamente o nome de usuário e o nome do host como 'user_name'@'host_name'
.
Nomes de usuário devem corresponder exatamente, incluindo maiúsculas e minúsculas. Você pode usar o string vazio para permitir um usuário sem nome.
Se for possível para mais de uma conta coincidir quando um usuário se conecta. MariaDB seleciona a primeira conta que coincidiu, após classificar de acordo com os seguintes critérios:
- Contas com um nome de host exato são ordenadas antes das contas que usam um wildcard no hostname. Nomes de host que usem uma máscara de rede são considerados serem exatos para classificação.
- Contas com um wildcard no hostname são ordenados de acordo à posição do primeiro caractere curinga. Aqueles com um caractere curinga mais além, no hostname, se ordenam antes daqueles que tem o caracter curinga no começo do hostname.
- Contas com um nome usuário não-vazio se ordenam antes das contas com nome de usuário vazio.
A seguinte tabela mostra um exemplo de lista de contas ordenadas por esses critérios:
+---------+-------------+ | User | Host | +---------+-------------+ | jeffrey | 192.168.0.3 | | | 192.168.0.% | | jeffrey | 192.168.% | | | 192.168.% | +---------+-------------+
Uma vez conectado, você só tem os privilégios concedidos à conta que corespondeu, e não à todas as contas que puderam ter correspondido. Por exemplo, considere os seguintes comandos:
CREATE USER 'jeffrey'@'192.168.0.3'; CREATE USER 'jeffrey'@'%'; GRANT SELECT ON test.t1 to 'jeffrey'@'192.168.0.3'; GRANT SELECT ON test.t2 to 'jeffrey'@'%';
Se você se conectar como jeffrey desde 192.168.0.3
, você terá o privilégio SELECT
na tabela test.t1
, mas não na tabela test.t2
. Se você se conectar como jeffrey desde algum outro endereço IP, você terá o privilégio SELECT
na tabela test.t2
, mas não na tabela test.t1
.