O ApsaraDB RDS for MySQL é 100% compatível com o MySQL de código aberto. Este tópico apresenta os comandos SQL mais necessários para gerenciar bancos de dados e contas.
Para a referência SQL completa, consulte o MySQL Reference Manual.
O ApsaraDB RDS for MySQL é um serviço gerenciado. A conta root com privilégios elevados não está disponível. Não é possível executar GRANT ALL PRIVILEGES ON *.* para conceder controle total global sobre todos os bancos de dados.
Referência rápida
|
Operação |
Comando |
|
Criar um banco de dados |
|
|
Excluir um banco de dados |
|
|
Criar uma conta |
|
|
Excluir uma conta |
|
|
Conceder privilégios |
|
|
Consultar privilégios da conta |
|
|
Revogar privilégios |
|
Gerenciamento de bancos de dados
Criar um banco de dados
-- Minimal syntax
CREATE DATABASE <database_name>;
-- With character set and collation (recommended)
CREATE DATABASE <database_name>
DEFAULT CHARACTER SET <charset>
COLLATE <collation>;
Exemplos
-- Create a database with the default character set.
CREATE DATABASE app_db;
-- Create a database with utf8mb4. Use utf8mb4 for most applications —
-- it supports a wider range of characters, including supplementary Unicode characters.
CREATE DATABASE app_db
DEFAULT CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
-- Create a database with the GBK character set for Chinese-language content.
CREATE DATABASE cn_db
DEFAULT CHARACTER SET gbk
COLLATE gbk_chinese_ci;
Excluir um banco de dados
DROP DATABASE <database_name>;
Esta operação é irreversível. Faça backup dos seus dados antes de prosseguir.
Exemplo
DROP DATABASE app_db;
Gerenciamento de contas
Criar uma conta
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
O valor de host controla a partir de quais hosts a conta pode se conectar:
|
**Valor de |
Efeito |
|
|
Permite conexões de qualquer host. Esse comportamento corresponde ao modo como o console do ApsaraDB RDS cria contas; a conta pode ser excluída pelo console posteriormente. |
|
|
Restringe conexões a um bloco CIDR específico. Contas com um valor de host específico não podem ser excluídas pelo console — use |
Exemplos
-- Allow connections from any host.
CREATE USER 'app_user'@'%' IDENTIFIED BY 'StrongPass123!';
-- Restrict connections to a specific CIDR block.
CREATE USER 'app_user'@'192.168.1.%' IDENTIFIED BY 'StrongPass123!';
Conceder privilégios
GRANT <privilege> ON <level> TO 'username'@'host';
|
Parâmetro |
Descrição |
Exemplos |
|
|
O privilégio a ser concedido |
|
|
|
O escopo do privilégio |
|
Não é possível conceder ALL PRIVILEGES ON *.* . O controle total global não está disponível no ApsaraDB RDS for MySQL.
Exemplos
-- Grant SELECT on all tables in app_db.
GRANT SELECT ON app_db.* TO 'app_user'@'%';
-- Grant read/write privileges on a specific table.
GRANT SELECT, INSERT, UPDATE, DELETE ON app_db.users TO 'app_user'@'%';
-- Grant all privileges on app_db to clients from the 192.168.1.x CIDR block.
-- Use with caution — this grants broad access.
GRANT ALL PRIVILEGES ON app_db.* TO 'admin_user'@'192.168.1.%';
Consultar privilégios da conta
-- List all accounts and their allowed hosts.
SELECT user, host FROM mysql.user;
-- Show the privileges granted to a specific account.
SHOW GRANTS FOR 'username'@'host';
Em versões anteriores do RDS, se a consulta amysql.userretornar um erro, consulte a visualizemysql.user_viewem vez disso.
Exemplo
-- Show all privileges granted to app_user when connecting from 192.168.1.x.
SHOW GRANTS FOR 'app_user'@'192.168.1.%';
Revogar privilégios
Use REVOKE para remover privilégios sem excluir a conta. Note que REVOKE usa FROM, enquanto GRANT usa TO.
Revogar todos os privilégios
-- Remove all operation privileges and the ability to grant privileges to others.
REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'username'@'host';
Revogar um privilégio específico
-- Revoke a specific privilege at any scope (global, database, or table).
REVOKE <privilege> ON <level> FROM 'username'@'host';
Revogar privilégios não exclui a conta. Para excluí-la, execute DROP USER .
Exemplos
-- Revoke all privileges from app_user (connecting from 192.168.1.x).
REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'app_user'@'192.168.1.%';
-- Revoke UPDATE on a specific table from app_user (connecting from 10.10.0.x).
REVOKE UPDATE ON shop_db.users FROM 'app_user'@'10.10.0.%';
Excluir uma conta
Solução de problemas
Não consigo excluir uma conta pelo console do ApsaraDB RDS
Problem description
Sintoma
A página Account Management exibe o seguinte erro ao tentar excluir uma conta:
Failed to delete the account. Check the request or the input parameters. Other threads in the instance may be waiting for the lock or the host value of the current database account is not set to % (allows logins from all hosts).
Solution
Causa
O console só consegue excluir contas em que o valor de host seja %. Se a conta foi criada via SQL com um endereço IP ou bloco CIDR específico — como 'username'@'10.10.10.1' ou 'username'@'10.%.%.%' — o console não consegue excluí-la.
Solução
Verifique o valor de host da conta:
SELECT user, host FROM mysql.user WHERE user = 'username_to_delete';
Se o valor de host não for %, exclua a conta com DROP USER:
DROP USER 'username_to_delete'@'target_host';