Topik ini menjelaskan cara mengelola akun dan izin.
Sistem akun dan izin PolarDB-X kompatibel dengan MySQL 5.7. Sistem ini mendukung pernyataan seperti GRANT, REVOKE, SHOW GRANTS, CREATE USER, DROP USER, dan SET PASSWORD. Anda dapat memberikan izin pada level database dan level tabel. Izin level global dan level kolom tidak didukung.
Membuat akun
Sintaks
CREATE USER [IF NOT EXISTS] user IDENTIFIED BY 'password';
Parameter
Parameter user menentukan akun, yang merupakan kombinasi dari username dan hostname. Formatnya adalah 'username'@'host'.
-
usernameharus mengikuti aturan berikut:-
Bersifat case-sensitive.
-
Terdiri dari 4 hingga 20 karakter.
-
Diawali dengan huruf.
-
Dapat berisi huruf kapital, huruf kecil, dan angka.
-
-
hostmenentukan host tempat pengguna dapat login. Sebuah akun diidentifikasi secara unik oleh kombinasi username dan hostname-nya.hostharus mengikuti aturan berikut:-
hostharus berupa alamat IP. Anda dapat menggunakan wildcard_dan%. Nilaihostyang mengandung wildcard harus diapit tanda petik tunggal, misalnyalily@'30.9.%.%'dandavid@'%'.Catatan_mencocokkan satu karakter, sedangkan%mencocokkan nol atau lebih karakter. -
Jika dua akun pengguna sesuai dengan upaya login, sistem akan menggunakan akun dengan Pencocokan awalan terpanjang. Misalnya, jika sistem memiliki dua pengguna,
david@'30.9.12_.234'dandavid@'30.9.1%.234', upaya login untukdaviddari host30.9.127.234akan menggunakan akundavid@'30.9.12_.234'. -
Alamat IP host dapat berubah saat Anda menggunakan Virtual Private Cloud (VPC). Untuk mencegah konfigurasi akun dan izin menjadi tidak valid, atur
hostmenjadi'%'agar sesuai dengan semua alamat IP.
-
-
Parameter password harus memenuhi persyaratan berikut:
-
Terdiri dari 6 hingga 20 karakter.
-
Dapat berisi huruf kapital, huruf kecil, angka, dan karakter khusus berikut:
@#$%^&+=.
-
Contoh
CREATE USER 'user1'@'127.0.0.1' IDENTIFIED BY '123456';
CREATE USER IF NOT EXISTS 'user2'@'%' identified by '123456';
Mengubah password akun
Sintaks
SET PASSWORD FOR user = PASSWORD('auth_string')
Contoh
SET PASSWORD FOR 'user1'@'127.0.0.1' = PASSWORD('654321');
Anda tidak dapat menggunakan Pernyataan SQL untuk mengubah password akun istimewa.
Menghapus akun
Sintaks
DROP USER user;
Contoh
DROP USER 'user2'@'%';
Anda tidak dapat menggunakan Pernyataan SQL untuk menghapus akun istimewa.
Memberikan izin kepada akun
Sintaks
GRANT privileges ON database.table TO user;
Parameter
Parameter privileges menentukan jenis izin. Tingkat izin, dari tertinggi ke terendah, adalah: level global (tidak didukung), level database, level tabel, dan level kolom. PolarDB-X mendukung delapan izin dasar terkait tabel: CREATE, DROP, ALTER, INDEX, INSERT, DELETE, UPDATE, dan SELECT.
-
Operasi
TRUNCATEmemerlukan izinDROPpada tabel tersebut. -
Operasi
REPLACEmemerlukan izinINSERTdanDELETEpada tabel tersebut. -
Operasi
CREATE INDEXdanDROP INDEXmemerlukan izinINDEXpada tabel tersebut. -
CREATE SEQUENCEmemerlukan izinCREATEpada level database. -
DROP SEQUENCEmemerlukan izinDROPpada level database. -
ALTER SEQUENCEmemerlukan izinALTERpada level database. -
Pernyataan
INSERT ON DUPLICATE UPDATEmemerlukan izinINSERTdanUPDATEpada tabel tersebut.
Contoh
GRANT SELECT,UPDATE ON `db1`.* TO 'user1'@'127.0.0.1';
Anda tidak dapat menggunakan Pernyataan SQL untuk memberikan izin kepada akun istimewa.
Menampilkan izin akun
Sintaks
SHOW GRANTS [FOR user];
Anda dapat menggunakan current_user() untuk melihat pengguna saat ini.
Contoh
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' |
+------------------------------------------------------+
Mencabut izin dari akun
Sintaksis
REVOKE privileges ON database.table FROM user;
Contoh
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 dari akun istimewa.