Todos os produtos
Search
Central de documentação

ApsaraDB RDS:Common SQL commands for MySQL

Última atualização: Jun 26, 2026

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.

Importante

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

CREATE DATABASE <name>;

Excluir um banco de dados

DROP DATABASE <name>;

Criar uma conta

CREATE USER 'user'@'host' IDENTIFIED BY 'password';

Excluir uma conta

DROP USER 'user'@'host';

Conceder privilégios

GRANT <privilege> ON <level> TO 'user'@'host';

Consultar privilégios da conta

SHOW GRANTS FOR 'user'@'host';

Revogar privilégios

REVOKE <privilege> ON <level> FROM 'user'@'host';

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>;
Importante

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 host**

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.

192.168.1.%

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 DROP USER em vez disso.

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

<privilege>

O privilégio a ser concedido

SELECT, INSERT, UPDATE, DELETE, ALL PRIVILEGES

<level>

O escopo do privilégio

db_name.* (banco de dados), db_name.table_name (tabela), *.* (global)

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 a mysql.user retornar um erro, consulte a visualize mysql.user_view em 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

DROP USER 'username'@'host';
Importante

Não use DELETE FROM mysql.user WHERE User = '<username>' AND Host = '<host>'; para excluir contas. Esse método pode deixar privilégios residuais e causar inconsistências nos metadados.

Para excluir uma conta com segurança, revogue seus privilégios primeiro e depois remova-a:

-- Step 1: Revoke all privileges.
REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'username'@'host';

-- Step 2: Delete the account.
DROP USER 'username'@'host';

Exemplo

-- Delete the account that can only connect from the 192.168.1.x CIDR block.
DROP USER 'app_user'@'192.168.1.%';

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';

Tópicos relacionados