全部产品
Search
文档中心

ApsaraDB RDS:Perintah SQL Umum untuk MySQL

更新时间:Nov 10, 2025

Topik ini mencantumkan perintah SQL umum yang digunakan untuk manajemen database dan akun di ApsaraDB RDS for MySQL.

ApsaraDB RDS for MySQL sepenuhnya kompatibel (100%) dengan MySQL open source. Untuk informasi lebih lengkap mengenai perintah SQL, fungsi, parameter, dan batasan, lihat Panduan Referensi Resmi MySQL.

Manajemen Database

Kategori

Sintaksis SQL

Contoh

Buat database

-- Buat database.
CREATE DATABASE <nama_database>;

-- Buat database dan tentukan set karakter dan aturan pengurutan.
CREATE DATABASE <nama_database>
DEFAULT CHARACTER SET <charset>
COLLATE <aturan_pengurutan>;
-- Buat database app_db.
CREATE DATABASE app_db;

-- Buat database app_db dan tentukan set karakter. Kami sarankan Anda menggunakan utf8mb4 karena mendukung lebih banyak karakter.
CREATE DATABASE app_db
DEFAULT CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;

-- Buat database dan tentukan set karakter Cina untuk skenario tertentu.
CREATE DATABASE cn_db
DEFAULT CHARACTER SET gbk
COLLATE gbk_chinese_ci;

Hapus database

DROP DATABASE <nama_database>;
Penting

Operasi ini tidak dapat dibatalkan. Pastikan Anda telah mencadangkan data Anda.

DROP DATABASE app_db;

Manajemen Akun

Kategori

Sintaksis SQL

Contoh

Buat akun

CREATE USER 'username'@'host' IDENTIFIED BY 'password';
-- Buat akun yang dapat digunakan untuk masuk dari alamat IP apa pun. Tanda persen (%) menunjukkan bahwa koneksi dari alamat IP apa pun diizinkan.
-- Metode ini sesuai dengan cara akun dibuat di Konsol ApsaraDB RDS. Anda kemudian dapat menghapus akun di Konsol ApsaraDB RDS.
CREATE USER 'app_user'@'%' IDENTIFIED BY 'StrongPass123!';

-- Buat akun yang hanya dapat digunakan untuk masuk dari blok CIDR tertentu.
-- Jika Anda menentukan alamat IP atau blok CIDR saat membuat akun, kesalahan akan dilaporkan saat Anda mencoba menghapus akun nanti di Konsol ApsaraDB RDS. Anda harus menghapus akun dengan menjalankan perintah SQL.
CREATE USER 'app_user'@'192.168.1.%' IDENTIFIED BY 'StrongPass123!';

Hapus akun

DROP USER 'username'@'host';
Penting

Jangan gunakan perintah DELETE FROM mysql.user WHERE User = '<username>' AND Host = '<host>'; untuk menghapus akun. Metode ini dapat meninggalkan izin residu atau menyebabkan ketidaksesuaian metadata.

-- Hapus akun app_user yang hanya dapat digunakan untuk masuk dari blok CIDR 192.168.1.x.
DROP USER 'app_user'@'192.168.1.%';

Berikan izin

GRANT SELECT ON db01.* TO 'username'@'host';
GRANT <izin> ON <level> TO 'username'@'host';
-- <izin>: Izin, seperti SELECT, INSERT, UPDATE, DELETE, atau ALL PRIVILEGES.
-- <level>: Tingkat izin, seperti db_name.* (tingkat database), db_name.table_name (tingkat tabel), atau *.* (tingkat global).
Catatan

Anda tidak dapat menjalankan perintah GRANT ALL PRIVILEGES ON *.* untuk memberikan kontrol penuh atas semua database.

-- Berikan izin SELECT pada semua tabel di database app_db.
GRANT SELECT ON app_db.* TO 'app_user'@'%';

-- Berikan izin SELECT, INSERT, UPDATE, dan DELETE pada tabel users di database app_db.
GRANT SELECT, INSERT, UPDATE, DELETE ON app_db.users TO 'app_user'@'%';

-- (Gunakan dengan hati-hati) Berikan semua izin pada database app_db. Hanya klien dari blok CIDR 192.168.1.x yang dapat terhubung.
GRANT ALL PRIVILEGES ON app_db.* TO 'admin_user'@'192.168.1.%';

Kueri izin akun

-- Semua akun yang dibuat di semua instans dan host tempat login diizinkan.
SELECT user, host FROM mysql.user;

-- Lihat izin akun.
SHOW GRANTS FOR 'username'@'host';
Catatan

Untuk versi sebelumnya, jika kesalahan dilaporkan saat Anda meminta mysql.user, mintalah tampilan mysql.user_view sebagai gantinya.

-- Lihat semua izin database yang dimiliki akun app_user saat digunakan untuk masuk dari host di blok CIDR 192.168.1.%.
SHOW GRANTS FOR 'app_user'@'192.168.1.%';

Cabut izin akun (akun masih ada)

  • Cabut semua izin: Cabut semua izin operasi dan kemampuan otorisasi dari akun pada semua database.

    REVOKE ALL PRIVILEGES,GRANT OPTION FROM 'username'@'host';
  • Cabut izin tertentu: Cabut izin UPDATE dari akun pada semua tabel di semua database. Anda dapat mengubah jenis izin sesuai kebutuhan.

    REVOKE UPDATE ON *.* FROM 'username'@'host';
Catatan

Mencabut izin tidak menghapus akun. Untuk menghapus akun secara permanen, gunakan perintah DROP USER.

-- Cabut semua izin operasi dan kemampuan otorisasi dari akun app_user pada semua database saat akun digunakan untuk masuk dari 192.168.1.%.
REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'app_user'@'192.168.1.%';

-- Cabut izin untuk memodifikasi data di tabel users database shop_db dari akun app_user saat akun digunakan untuk masuk dari 10.10.0.%.
REVOKE UPDATE ON shop_db.users FROM 'app_user'@'10.10.0.%';

FAQ

Mengapa saya menerima kesalahan saat menghapus akun di Konsol ApsaraDB RDS?

Deskripsi Masalah

Saat Anda menghapus pengguna di halaman Account Management Konsol ApsaraDB RDS for MySQL, pesan kesalahan berikut ditampilkan:Gagal menghapus akun. Periksa permintaan atau parameter input. Thread lain di instans mungkin sedang menunggu kunci atau nilai host dari akun database saat ini tidak diatur ke % (memungkinkan login dari semua host).

Solusi

Secara default, daftar putih host untuk akun pengguna yang dibuat di Konsol ApsaraDB RDS for MySQL diatur ke %, yang memungkinkan akses dari host mana pun. Jika akun dibuat secara manual menggunakan perintah SQL dan dikonfigurasi untuk memungkinkan login hanya dari alamat IP atau segmen jaringan tertentu, seperti 'username'@'10.10.10.1' atau 'username'@'10.%.%.%', akun tersebut tidak dapat dihapus dari Konsol RDS.

Jalankan pernyataan SQL berikut untuk memeriksa apakah host untuk akun dikonfigurasi dengan nilai selain %. Jika nilai host bukan %, Anda tidak dapat menghapus akun di Konsol RDS. Anda harus menggunakan perintah DROP USER untuk menghapus akun.

-- Periksa apakah host untuk akun yang akan dihapus dikonfigurasi dengan nilai selain % (misalnya, 192.168.1.1 atau 192.168.1.%).
SELECT user,host FROM mysql.user WHERE user='username_to_delete';

-- Jika nilai host bukan %, Anda harus menghapus akun menggunakan perintah DROP USER.
DROP USER 'username_to_delete'@'target_host_IP_or_network_segment';

Referensi