Topik ini menjelaskan cara mengelola akun dan izin.
Akun dan izin di PolarDB-X dikelola dengan cara yang sama seperti di MySQL 5.7. PolarDB-X mendukung pernyataan seperti GRANT, REVOKE, SHOW GRANTS, CREATE USER, DROP USER, dan SET PASSWORD. PolarDB-X memungkinkan Anda memberikan izin ke database dan tabel, tetapi tidak menawarkan pengaturan izin global atau tingkat kolom.
Buat akun
Syntax
CREATE USER [IF NOT EXISTS] user IDENTIFIED BY 'password';Parameters
user adalah akun yang terdiri dari nama pengguna dan nama host dalam format 'username'@'host'.
username menentukan nama pengguna yang ingin dibuat. Nama pengguna harus memenuhi persyaratan berikut:
Nama pengguna bersifat case-sensitive.
Panjang nama pengguna harus antara 4 hingga 20 karakter.
Nama pengguna harus dimulai dengan huruf.
Nama pengguna dapat berisi huruf dan angka.
host menentukan host dari mana akun dapat masuk ke database. Jika nama pengguna akunnya sama tetapi nama hostnya berbeda, akun tersebut dianggap berbeda. Nama host harus memenuhi persyaratan berikut:
Nama host harus berupa nilai yang mewakili satu atau lebih alamat IP. Nilai tersebut dapat berisi garis bawah (_) dan wildcard (%). Garis bawah (_) mewakili satu karakter, sedangkan wildcard (%) mewakili nol atau lebih karakter. Nama host yang berisi wildcard harus diapit oleh tanda kutip tunggal ('), seperti lily@'30.9.%.%' dan david@'%'.
Catatan"_" mewakili satu karakter, sedangkan "%" mewakili nol atau lebih karakter.
Jika dua akun di PolarDB-X cocok dengan pengguna masuk pada sebuah host, akun dengan nama host yang memiliki awalan lebih panjang akan digunakan. Awalan nama host adalah blok CIDR yang mendahului wildcard dalam alamat IP host. Sebagai contoh, jika akun david@'30.9.12_.234' dan david@'30.9.1%.234' tersedia di sistem, dan Anda menggunakan nama pengguna david untuk masuk dari host 30.9.127.234, akun david@'30.9.12_.234' akan digunakan.
Setelah Virtual Private Cloud (VPC) diaktifkan, alamat IP host berubah. Untuk mencegah konfigurasi akun dan izin yang tidak valid, disarankan untuk menetapkan nama host menjadi '%' agar mencocokkan semua alamat IP.
password menentukan kata sandi akun. Kata sandi harus memenuhi persyaratan berikut:
Panjang kata sandi harus antara 6 hingga 20 karakter.
Kata sandi dapat berisi huruf, angka, dan karakter khusus berikut: @#$%^&+=
Example
CREATE USER 'user1'@'127.0.0.1' IDENTIFIED BY '123456';
CREATE USER IF NOT EXISTS 'user2'@'%' identified by '123456';Ubah kata sandi akun
Syntax
SET PASSWORD FOR user = PASSWORD('auth_string')Example
SET PASSWORD FOR 'user1'@'127.0.0.1' = PASSWORD('654321');Anda tidak dapat menggunakan pernyataan SQL untuk mengubah kata sandi akun istimewa.
Hapus akun
Syntax
DROP USER user;Example
DROP USER 'user2'@'%';Anda tidak dapat menggunakan pernyataan SQL untuk menghapus akun istimewa.
Berikan izin kepada akun
Syntax
GRANT privileges ON database.table TO user;Parameters
Dalam pernyataan sebelumnya, privileges menunjukkan jenis izin tertentu. Izin akun database berikut terdaftar berdasarkan level dalam urutan menurun: izin global, izin tingkat database, izin tingkat tabel, dan izin tingkat kolom. PolarDB-X mendukung delapan izin tabel dasar: CREATE, DROP, ALTER, INDEX, INSERT, DELETE, UPDATE, dan SELECT.
Untuk menjalankan pernyataan TRUNCATE pada tabel, Anda harus memiliki izin DROP pada tabel tersebut.
Untuk menjalankan pernyataan REPLACE pada tabel, Anda harus memiliki izin INSERT dan DELETE pada tabel tersebut.
Untuk menjalankan pernyataan CREATE INDEX dan DROP INDEX, Anda harus memiliki izin INDEX pada tabel tersebut.
Untuk menjalankan pernyataan CREATE SEQUENCE, Anda harus memiliki izin CREATE tingkat database.
Untuk menjalankan pernyataan DROP SEQUENCE, Anda harus memiliki izin DROP tingkat database.
Untuk menjalankan pernyataan ALTER SEQUENCE, Anda harus memiliki izin ALTER tingkat database.
Untuk menjalankan pernyataan INSERT ON DUPLICATE UPDATE pada tabel, Anda harus memiliki izin INSERT dan UPDATE pada tabel tersebut.
Example
GRANT SELECT,UPDATE ON `db1`.* TO 'user1'@'127.0.0.1';Anda tidak dapat menggunakan pernyataan SQL untuk memberikan otorisasi kepada akun istimewa.
Lihat izin akun
Syntax
SHOW GRANTS [FOR user];Anda dapat menentukan fungsi current_user() untuk melihat nama pengguna pengguna saat ini.
Example
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, UPDATE ON db1.* TO 'user1'@'127.0.0.1' |
+------------------------------------------------------+
SHOW GRANTS FOR current_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' |
+------------------------------------------------------+Cabut izin akun
Syntax
REVOKE privileges ON database.table FROM user;Example
REVOKE UPDATE ON db1.* FROM 'user1'@'127.0.0.1';
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' |
+----------------------------------------------+Anda tidak dapat menggunakan pernyataan SQL untuk mencabut izin akun istimewa.