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 My RDS SQL
Dimulai dengan RDS untuk SQL versi Saya 8.0.36, Anda tidak dapat memodifikasi tabel di mysql
database secara langsung. Secara khusus, Anda tidak dapat membuat pengguna database dengan melakukan operasi bahasa manipulasi data (DML) pada grant
tabel. Sebagai gantinya, Anda menggunakan pernyataan SQL manajemen akun Saya sepertiCREATE
USER
,GRANT
, dan REVOKE
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 SQL database Saya eksternal, gunakan salah satu metode berikut:
Gunakan utilitas dump instance My SQL Shell dengan filter untuk mengecualikan pengguna, peran, dan hibah. Contoh berikut menunjukkan sintaks perintah untuk digunakan. Pastikan
outputUrl
itu 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 Saya. SQL Gunakan utilitas
mysqlpump
klien. Contoh ini mencakup semua tabel kecuali untuk tabel dalam databasemysql
sistem. Ini juga mencakupCREATE USER
danGRANT
pernyataan untuk mereproduksi semua SQL pengguna Saya dalam database yang dimigrasi.mysqlpump --exclude-databases=mysql --users
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 My SQL 8.0, lihat Menggunakan Peran
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 My SQL termasuk 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 apa pun yang diperlukan untuk melakukan replikasi log biner dengan SQL klaster Saya sebagai target.
Tip
Untuk melihat detail lengkap izin, gunakan pernyataan berikut.
SHOW GRANTS FOR rds_superuser_role@'%';
Saat Anda memberikan akses dengan menggunakan peran RDS untuk SQL versi Saya 8.0.36 dan yang lebih tinggi, Anda juga mengaktifkan peran dengan menggunakan pernyataan SET ROLE
ataurole_name
SET ROLE ALL
. Contoh berikut menunjukkan caranya. Ganti nama peran yang sesuai untuk CUSTOM_ROLE
.
# Grant role to user
mysql>
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`@`%` | +--------------------------------------------------+