O sistema de contas e permissões do PolarDB-X é compatível com MySQL e aceita instruções como GRANT, REVOKE, SHOW GRANTS, CREATE USER, DROP USER e SET PASSWORD.
Contas
Account Permissions
Uma conta é identificada pela combinação de nome de usuário e nome de host no formato username@'host'. Contas com o mesmo nome de usuário, mas hosts diferentes, são distintas. Por exemplo, lily@30.9.73.96 e lily@30.9.73.100 são duas contas separadas e podem ter senhas e permissões diferentes.
Após a criação de um banco de dados no console do PolarDB-X, o sistema cria automaticamente duas contas de sistema para esse banco: uma conta de administrador e uma conta somente leitura. Não é possível excluir essas contas integradas nem modificar suas permissões.
O nome da conta de administrador é igual ao nome do banco de dados. Por exemplo, se o banco de dados se chama
easydb, a conta de administrador também se chamaeasydb.O nome da conta somente leitura corresponde ao nome do banco de dados seguido pelo sufixo
_RO. Por exemplo, se o banco de dados se chamaeasydb, a conta somente leitura se chamaeasydb_RO.
Por exemplo, se houver dois bancos de dados, dreamdb e andordb, o banco de dados dreamdb terá uma conta de administrador chamada dreamdb e uma conta somente leitura chamada dreamdb_RO. O banco de dados andordb terá uma conta de administrador chamada andordb e uma conta somente leitura chamada andordb_RO.
As contas criadas com a instrução
CREATE USER
no
PolarDB-X
existem apenas dentro do
PolarDB-X
. Elas não têm relação com o ApsaraDB RDS e não são sincronizadas com as instâncias de backend do ApsaraDB RDS.
Regras de conta
A conta de administrador possui todas as permissões.
Somente uma conta de administrador pode criar outras contas e conceder permissões.
A conta de administrador está vinculada a um banco de dados específico e não tem permissões sobre outros bancos. Durante a conexão, a conta acessa apenas o banco de dados associado e não pode conceder permissões para outros bancos. Por exemplo, a conta de administrador
easydbconecta-se apenas ao banco de dadoseasydbe só pode conceder permissões nesse banco ou em suas tabelas para outra conta.A conta somente leitura possui apenas a permissão SELECT.
Convenções de nomenclatura
Os nomes de usuário diferenciam maiúsculas de minúsculas.
Devem conter de 4 a 20 caracteres.
Precisam começar com uma letra.
Podem incluir letras maiúsculas, minúsculas e dígitos.
Regras de senha
Devem conter de 6 a 20 caracteres.
Podem incluir letras maiúsculas, minúsculas, dígitos e os seguintes caracteres especiais: @#$%^&+=.
Regras de correspondência de host
O host deve ser um endereço IP. É possível usar os curingas
_e%. O curinga_corresponde a um único caractere, enquanto o curinga%corresponde a zero ou mais caracteres. Um host que contenha curinga deve estar entre aspas simples ('), por exemplo,lily@'30.9.%.%'oudavid@'%'.Se uma tentativa de login corresponder a duas contas, a conta com o prefixo de endereço IP correspondente mais longo terá prioridade. O prefixo é a parte do endereço IP anterior a qualquer curinga. Por exemplo, se o sistema tiver duas contas,
david@'30.9.12_.xxx'edavid@'30.9.1%.234', uma tentativa de login do usuáriodavida partir do host30.9.127.xxxusará a contadavid@'30.9.12_.xxx'.-
Quando a VPC está ativada, o endereço IP do host muda.
ImportantePara evitar que as configurações de conta e permissão se tornem inválidas, defina o HOST como '%' para corresponder a qualquer endereço IP.
Permissões
Níveis de permissão
Nível de banco de dados (Suportado)
Nível de tabela (Suportado)
Nível global (Ainda não suportado)
Nível de coluna (Ainda não suportado)
Nível de subprograma (Ainda não suportado)
Permissões suportadas
O PolarDB-X oferece suporte a oito permissões básicas no nível de tabela: CREATE, DROP, ALTER, INDEX, INSERT, DELETE, UPDATE e SELECT.
A instrução TRUNCATE requer a permissão DROP na tabela.
A instrução REPLACE requer as permissões INSERT e DELETE na tabela.
As instruções CREATE INDEX e DROP INDEX requerem a permissão INDEX na tabela.
A instrução CREATE SEQUENCE requer a permissão
CREATEno nível de banco de dados.A instrução DROP SEQUENCE requer a permissão
DROPno nível de banco de dados.A instrução ALTER SEQUENCE requer a permissão
ALTERno nível de banco de dados.A instrução INSERT ON DUPLICATE UPDATE requer as permissões INSERT e UPDATE na tabela.
Regras de permissão
As permissões estão vinculadas a uma conta (
username@'host'), e não apenas a um nome de usuário.Ao conceder uma permissão, o sistema verifica se a tabela especificada existe. Caso contrário, um erro é retornado.
Os níveis de permissão são hierárquicos, do maior para o menor: nível global (ainda não suportado), nível de banco de dados, nível de tabela e nível de coluna.
A concessão de uma permissão de nível superior substitui quaisquer permissões de nível inferior. A revogação de uma permissão de nível superior também revoga as permissões associadas de nível inferior.
Não há suporte para a permissão USAGE.
Concessão de permissões para vários bancos de dados
No
PolarDB-X
5.3.6 e versões posteriores, é possível conceder permissões em vários bancos de dados a uma única conta:
Na página Account Management no console do Alibaba Cloud PolarDB-X, crie uma conta e conceda permissões. Este é o método recomendado.
-
Como alternativa, use as instruções SQL
CREATE USEReGRANT.NotaSe você usar instruções SQL, observe o seguinte:
Somente uma conta de administrador pode criar usuários e conceder permissões.
Um administrador só pode conceder permissões no banco de dados que ele gerencia. Por exemplo, se o administrador do banco de dados A criar uma conta
new_user@'%'e você quiser que essa conta acesse os bancos de dados A e B, o administrador de A deve conceder permissões para A, e o administrador de B deve conceder permissões para B.
Uso de uma conta multibanco
No PolarDB-X 5.3.6 e versões posteriores, é possível conceder permissões em vários bancos de dados a uma conta. Suponha que uma conta como
new_user@'%'
tenha permissões SELECT e INSERT tanto no banco de dados A quanto no banco de dados B. Aplicam-se as seguintes limitações:
Para consultar uma tabela no banco de dados B enquanto estiver conectado ao banco de dados A, primeiro troque de banco de dados executando
USE B; SELECT * FROM table_in_B;. Consultas entre bancos de dados, comoSELECT * FROM B.table_in_B;, não são suportadas.Para inserir dados em uma tabela no banco de dados B enquanto estiver conectado ao banco de dados A, execute
USE B; INSERT INTO table_in_B VALUES('value');. Inserções entre bancos de dados, comoINSERT INTO B.table_in_B VALUES('value');, não são suportadas.O mesmo princípio se aplica a outras instruções SQL.
Instruções
Criar uma conta (CREATE USER)
-
Sintaxe
CREATE USER user_specification [, user_specification] ... user_specification: user [ auth_option ] auth_option: IDENTIFIED BY 'auth#string' -
Exemplos
-
Crie uma conta chamada
lilycom a senha123456. Esta conta só pode se conectar a partir do host 30.9.73.96.CREATE USER lily@30.9.73.96 IDENTIFIED BY '123456'; -
Crie uma conta chamada
davidque possa se conectar a partir de qualquer host. Esta conta não possui senha.CREATE USER david@'%';
-
Excluir uma conta (DROP USER)
-
Sintaxe
DROP USER user [, user] ... -
Exemplo
Remova a conta
lily@30.9.73.96:DROP USER lily@30.9.73.96;
Alterar a senha de uma conta (SET PASSWORD)
-
Sintaxe
SET PASSWORD FOR user = password_option password_option: { PASSWORD('auth_string') } -
Exemplo
Altere a senha da conta
lily@30.9.73.96
para
123456
.
SET PASSWORD FOR lily@30.9.73.96 = PASSWORD('123456')
Conceder permissões a uma conta (GRANT)
-
Sintaxe
GRANT priv_type[, priv_type] ... ON priv_level TO user_specification [, user_specification] ... [WITH GRANT OPTION] priv_level: { | db_name.* | db_name.tbl_name | tbl_name } user_specification: user [ auth_option ] auth_option: { IDENTIFIED BY 'auth#string' }NotaSe a conta em uma instrução
GRANT
não existir, a instrução falhará, a menos que você inclua uma cláusula
IDENTIFIED BY
. Se uma cláusula
IDENTIFIED BY
for fornecida, o sistema cria a conta e concede as permissões especificadas.
-
Exemplos
-
Para o banco de dados
easydb, crie uma conta chamadadavidque possa se conectar a partir de qualquer host e tenha todas as permissões no banco de dados.# Method 1: Create the account, then grant permissions. CREATE USER david@'%' IDENTIFIED BY 'your#password'; GRANT ALL PRIVILEGES ON easydb.* to david@'%'; # Method 2: Create the account and grant permissions in a single statement. GRANT ALL PRIVILEGES ON easydb.* to david@'%' IDENTIFIED BY 'your#password'; -
Para o banco de dados
easydb, crie uma conta chamadahansonque possa se conectar a partir de qualquer host e tenha todas as permissões na tabelaeasydb.employees.GRANT ALL PRIVILEGES ON easydb.employees to hanson@'%' IDENTIFIED BY 'your#password'; -
Para o banco de dados
easydb, crie uma conta chamadahansonque só possa se conectar a partir do host 192.168.3.10 e tenha permissões INSERT e SELECT na tabelaeasydb.emp.GRANT INSERT,SELECT ON easydb.emp to hanson@'192.168.3.10' IDENTIFIED BY 'your#password'; -
Para o banco de dados
easydb, crie uma conta somente leitura chamadaactroque possa se conectar a partir de qualquer host.GRANT SELECT ON easydb.* to actro@'%' IDENTIFIED BY 'your#password';
-
Revogar permissões (REVOKE)
-
Sintaxe
-
Revoga permissões específicas de uma conta em um nível de permissão especificado por
priv_level.REVOKE priv_type [, priv_type] ... ON priv_level -
Revoga todas as permissões nos níveis de banco de dados e tabela de um usuário.
REVOKE ALL PRIVILEGES, GRANT OPTION FROM user [, user] ...
-
-
Exemplos
-
Revogue as permissões CREATE, DROP e INDEX na tabela
easydb.empda contahanson@'%'.REVOKE CREATE,DROP,INDEX ON easydb.emp FROM hanson@'%'; -
Revogue todas as permissões da conta
lily@30.9.73.96.REVOKE ALL PRIVILEGES,GRANT OPTION FROM lily@30.9.73.96;NotaPara garantir compatibilidade com o MySQL, inclua a cláusula
GRANT OPTION
.
-
Exibir concessões (SHOW GRANTS)
-
Sintaxe
SHOW GRANTS[ FOR user@host]; -
Exemplo
SHOW GRANTS FOR user1@host;
No PolarDB-X 5.3.6 e versões posteriores, a instrução
SHOW GRANTS
exibe apenas as permissões do usuário atual. Para visualizar informações sobre todas as contas e permissões, use o console do Alibaba Cloud
PolarDB-X
.