Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Model hak istimewa berbasis peran untuk RDS untuk MySQL
Dimulai dengan RDS untuk MySQL versi 8.0.36, Anda tidak dapat memodifikasi tabel dalam database secara langsung. mysql Secara khusus, Anda tidak dapat membuat pengguna database dengan melakukan operasi bahasa manipulasi data (DHTML) pada grant tabel. Sebagai gantinya, Anda menggunakan pernyataan manajemen akun MySQL CREATE
USER seperti,GRANT, REVOKE dan untuk memberikan hak istimewa berbasis peran kepada pengguna. Anda juga tidak dapat membuat jenis objek lain seperti prosedur tersimpan dalam basis data mysql. Anda masih dapat mengueri tabel mysql. Jika Anda menggunakan replikasi log biner, perubahan yang dilakukan langsung ke mysql tabel pada instans DB sumber tidak direplikasi ke cluster target.
Dalam beberapa kasus, aplikasi Anda mungkin menggunakan pintasan untuk membuat pengguna atau objek lain dengan melakukan penyisipan ke dalam tabel mysql. Jika demikian, ubah kode aplikasi Anda untuk menggunakan pernyataan yang sesuai seperti CREATE
USER.
Untuk mengekspor metadata bagi pengguna database selama migrasi dari database MySQL eksternal, gunakan salah satu metode berikut:
Gunakan utilitas dump instance MySQL Shell dengan filter untuk mengecualikan pengguna, peran, dan hibah. Contoh berikut menunjukkan sintaks perintah untuk digunakan. Pastikan
outputUrlitu kosong.mysqlsh user@host -- util.dumpInstance(outputUrl,{excludeSchemas:['mysql'],users: true})Untuk informasi selengkapnya, lihat Instance Dump Utility, Schema Dump Utility, dan Table Dump Utility di Manual
Referensi MySQL. -
Gunakan utilitas
mysqlpumpklien. Contoh ini mencakup semua tabel kecuali untuk tabel dalam databasemysqlsistem. Ini juga mencakup pernyataanCREATE USERdanGRANTuntuk membuat ulang semua pengguna MySQL dalam basis data yang dimigrasikan.mysqlpump --exclude-databases=mysql --usersUtilitas
mysqlpumpklien tidak lagi tersedia dengan MySQL 8.4. Sebaliknya, gunakanmysqldump.
Untuk menyederhanakan pengelolaan izin bagi banyak pengguna atau aplikasi, Anda dapat menggunakan pernyataan CREATE ROLE untuk membuat peran yang memiliki serangkaian izin. Kemudian, Anda dapat menggunakan pernyataan GRANT dan SET ROLE serta fungsi current_role untuk menetapkan peran ke pengguna atau aplikasi, mengganti peran saat ini, dan memeriksa peran mana yang berlaku. Untuk informasi selengkapnya tentang sistem izin berbasis peran di MySQL 8.0, lihat Using Roles
penting
Kami sangat menyarankan agar Anda tidak menggunakan pengguna master secara langsung di aplikasi Anda. Sebagai gantinya, ikuti praktik terbaik menggunakan pengguna basis data yang dibuat dengan hak akses paling rendah yang diperlukan untuk aplikasi Anda.
Dimulai dengan versi 8.0.36, RDS untuk MySQL menyertakan peran khusus yang memiliki semua hak istimewa berikut. Peran ini bernama rds_superuser_role. Pengguna administratif utama untuk setiap instans DB sudah memiliki peran ini diberikan. Peran rds_superuser_role mencakup hak akses berikut untuk semua objek basis data:
-
ALTER -
APPLICATION_PASSWORD_ADMIN -
ALTER ROUTINE -
CREATE -
CREATE ROLE -
CREATE ROUTINE -
CREATE TEMPORARY TABLES -
CREATE USER -
CREATE VIEW -
DELETE -
DROP -
DROP ROLE -
EVENT -
EXECUTE -
INDEX -
INSERT -
LOCK TABLES -
PROCESS -
REFERENCES -
RELOAD -
REPLICATION CLIENT -
REPLICATION SLAVE -
ROLE_ADMIN -
SET_USER_ID -
SELECT -
SHOW DATABASES -
SHOW VIEW -
TRIGGER -
UPDATE -
XA_RECOVER_ADMIN
Definisi peran juga mencakup WITH GRANT OPTION sehingga pengguna administratif dapat memberikan peran tersebut kepada pengguna lain. Secara khusus, administrator harus memberikan hak istimewa yang diperlukan untuk melakukan replikasi log biner dengan cluster MySQL sebagai target.
Tip
Untuk melihat detail lengkap izin, gunakan pernyataan berikut.
SHOW GRANTS FOR rds_superuser_role@'%';
Ketika Anda memberikan akses dengan menggunakan peran di RDS untuk MySQL versi 8.0.36 dan yang lebih tinggi, Anda juga mengaktifkan peran dengan menggunakan pernyataan or. SET ROLE
role_nameSET ROLE ALL Contoh berikut menunjukkan caranya. Ganti nama peran yang sesuai untuk CUSTOM_ROLE.
# Grant role to usermysql>GRANT CUSTOM_ROLE TO 'user'@'domain-or-ip-address' # Check the current roles for your user. In this case, the CUSTOM_ROLE role has not been activated. # Only the rds_superuser_role is currently in effect.mysql>SELECT CURRENT_ROLE();+--------------------------+ | CURRENT_ROLE() | +--------------------------+ | `rds_superuser_role`@`%` | +--------------------------+ 1 row in set (0.00 sec)# Activate all roles associated with this user using SET ROLE. # You can activate specific roles or all roles. # In this case, the user only has 2 roles, so we specify ALL.mysql>SET ROLE ALL;Query OK, 0 rows affected (0.00 sec)# Verify role is now activemysql>SELECT CURRENT_ROLE();+--------------------------------------------------+ | CURRENT_ROLE() | +--------------------------------------------------+ | `CUSTOM_ROLE`@`%`,`rds_superuser_role`@`%` | +--------------------------------------------------+