O PolarDB-X gerencia contas e permissões da mesma forma que o MySQL 5.7. O sistema oferece suporte aos comandos GRANT, REVOKE, SHOW GRANTS, CREATE USER, DROP USER e SET PASSWORD. Você pode conceder permissões nos níveis de banco de dados e de tabela. Não há suporte para permissões nos níveis global e de coluna.
Criar uma conta
CREATE USER [IF NOT EXISTS] user IDENTIFIED BY 'password';
O parâmetro user usa o formato 'username'@'host'. Duas contas são diferentes se compartilharem o mesmo nome de usuário, mas tiverem nomes de host distintos.
Requisitos para nome de usuário:
De 4 a 20 caracteres, começando com uma letra
Diferencia maiúsculas de minúsculas; pode conter letras e dígitos
Requisitos para nome de host:
Representa um ou mais endereços IP
Aceita os curingas
_(corresponde a um caractere) e%(corresponde a zero ou mais caracteres)Nomes de host com curingas devem estar entre aspas simples, por exemplo:
lily@'30.9.%.%'edavid@'%'Se duas contas corresponderem ao mesmo usuário de login, a conta com o prefixo mais longo (o bloco CIDR mais específico antes do curinga) terá precedência. Por exemplo, se existirem
david@'30.9.12_.234'edavid@'30.9.1%.234', o login a partir de30.9.127.234usarádavid@'30.9.12_.234'Após a ativação da Virtual Private Cloud (VPC), os endereços IP dos hosts mudam. Defina o nome de host como
%para corresponder a todos os endereços IP e evitar configurações de permissão obsoletas
Requisitos para senha:
De 6 a 20 caracteres
Pode conter letras, dígitos e os seguintes caracteres especiais:
@#$%^&+=
Examples:
CREATE USER 'user1'@'127.0.0.1' IDENTIFIED BY '123456';
CREATE USER IF NOT EXISTS 'user2'@'%' IDENTIFIED BY '123456';
Alterar a senha de uma conta
SET PASSWORD FOR user = PASSWORD('auth_string');
Example:
SET PASSWORD FOR 'user1'@'127.0.0.1' = PASSWORD('654321');
Não é possível alterar senhas de contas privilegiadas usando instruções SQL.
Excluir uma conta
DROP USER user;
Example:
DROP USER 'user2'@'%';
Não é possível excluir contas privilegiadas usando instruções SQL.
Conceder permissões a uma conta
GRANT privileges ON database.table TO user;
O PolarDB-X oferece suporte a oito permissões no nível de tabela: CREATE, DROP, ALTER, INDEX, INSERT, DELETE, UPDATE e SELECT. Todas as concessões operam no nível de banco de dados ou de tabela. Não há suporte para concessões nos níveis global e de coluna.
Para verificar as permissões necessárias para operações SQL específicas, consulte Permissões necessárias para operações SQL.
Example:
GRANT SELECT, UPDATE ON `db1`.* TO 'user1'@'127.0.0.1';
Não é possível conceder permissões a contas privilegiadas usando instruções SQL.
Visualizar as permissões de uma conta
SHOW GRANTS [FOR user];
Examples:
SHOW GRANTS FOR 'user1'@'127.0.0.1'; -- show grants for a specific user
+------------------------------------------------------+
| GRANTS FOR 'USER1'@'127.0.0.1' |
+------------------------------------------------------+
| GRANT USAGE ON *.* TO 'user1'@'127.0.0.1' |
| GRANT SELECT, UPDATE ON db1.* TO 'user1'@'127.0.0.1' |
+------------------------------------------------------+
SHOW GRANTS FOR current_user(); -- show grants for the currently logged-in user
+------------------------------------------------------+
| GRANTS FOR 'USER1'@'127.0.0.1' |
+------------------------------------------------------+
| GRANT USAGE ON *.* TO 'user1'@'127.0.0.1' |
| GRANT SELECT, UPDATE ON db1.* TO 'user1'@'127.0.0.1' |
+------------------------------------------------------+
Revogar as permissões de uma conta
REVOKE privileges ON database.table FROM user;
Example:
REVOKE UPDATE ON db1.* FROM 'user1'@'127.0.0.1';
Após revogar a permissão UPDATE, as concessões restantes da conta são:
SHOW GRANTS FOR 'user1'@'127.0.0.1';
+----------------------------------------------+
| GRANTS FOR 'USER1'@'127.0.0.1' |
+----------------------------------------------+
| GRANT USAGE ON *.* TO 'user1'@'127.0.0.1' |
| GRANT SELECT ON db1.* TO 'user1'@'127.0.0.1' |
+----------------------------------------------+
Não é possível revogar permissões de contas privilegiadas usando instruções SQL.
Permissões necessárias para operações SQL
A tabela a seguir lista as permissões necessárias para executar instruções SQL específicas.
|
Instrução SQL |
Permissão necessária |
|
|
DROP (nível de tabela) |
|
|
INSERT e DELETE (nível de tabela) |
|
|
INDEX (nível de tabela) |
|
|
INDEX (nível de tabela) |
|
|
CREATE (nível de banco de dados) |
|
|
DROP (nível de banco de dados) |
|
|
ALTER (nível de banco de dados) |
|
|
INSERT e UPDATE (nível de tabela) |