Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Modello di privilegi basato sui ruoli per for My RDS SQL
A partire RDS dalla SQL versione My 8.0.36, non è possibile modificare direttamente le tabelle nel database. mysql
In particolare, non è possibile creare utenti del database eseguendo operazioni con il linguaggio di manipolazione dei dati (DML) sulle tabelle. grant
Utilizzate invece le istruzioni di SQL gestione del mio account come CREATE
USER
GRANT
, e REVOKE
per concedere privilegi basati sui ruoli agli utenti. Inoltre, nel database mysql
, non è possibile creare altri tipi di oggetti come le stored procedure. È comunque possibile interrogare le tabelle di mysql
. Se si utilizza la replica dei log binari, le modifiche apportate direttamente alle mysql
tabelle sull'istanza DB di origine non vengono replicate nel cluster di destinazione.
In alcuni casi, l'applicazione potrebbe utilizzare scorciatoie per creare utenti o altri oggetti inserendoli nelle tabelle di mysql
. In tal caso, modifica il codice dell'applicazione per utilizzare le istruzioni corrispondenti come CREATE
USER
.
Per esportare i metadati per gli utenti del database durante la migrazione da un SQL database My esterno, utilizzate uno dei seguenti metodi:
Utilizzate l'utilità di dump delle istanze di My SQL Shell con un filtro per escludere utenti, ruoli e concessioni. L'esempio seguente mostra la sintassi dei comandi da utilizzare. Assicurati che
outputUrl
sia vuoto.mysqlsh user@host -- util.dumpInstance(outputUrl,{excludeSchemas:['mysql'],users: true})
Per ulteriori informazioni, consulta Instance Dump Utility, Schema Dump Utility e Table Dump Utility
nel My SQL Reference Manual. -
Usa l'utilità client.
mysqlpump
Questo esempio include tutte le tabelle ad eccezione delle tabelle del databasemysql
di sistema. IncludeCREATE USER
ancheGRANT
istruzioni per riprodurre tutti SQL gli utenti My nel database migrato.mysqlpump --exclude-databases=mysql --users
L'utilità
mysqlpump
client non è più disponibile con My SQL 8.4. Utilizza invecemysqldump
.
Per semplificare la gestione delle autorizzazioni per molti utenti o applicazioni, è possibile utilizzare l'istruzione CREATE ROLE
per creare un ruolo con una serie di autorizzazioni. Puoi quindi utilizzare le istruzioni GRANT
e SET ROLE
e la funzione current_role
per assegnare ruoli a utenti o applicazioni, cambiare il ruolo corrente e verificare quali ruoli sono in vigore. Per ulteriori informazioni sul sistema di autorizzazione basato sui ruoli in My SQL 8.0, consulta Using Roles in My Reference
Importante
Si consiglia di non utilizzare l'utente master direttamente nelle applicazioni. Rispetta piuttosto la best practice di utilizzare un utente del database creato con i privilegi minimi richiesti per l'applicazione.
A partire dalla versione 8.0.36, RDS for My SQL include un ruolo speciale con tutti i seguenti privilegi. Il ruolo è denominato rds_superuser_role
. Questo ruolo è già concesso all'utente amministrativo principale di ogni istanza DB. Il ruolo rds_superuser_role
include i seguenti privilegi per tutti gli oggetti del database:
-
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
La definizione del ruolo include anche la WITH GRANT OPTION
in modo che un utente amministrativo possa concedere tale ruolo ad altri utenti. In particolare, l'amministratore deve concedere tutti i privilegi necessari per eseguire la replica dei log binari con il SQL cluster My come destinazione.
Suggerimento
Per visualizzare i dettagli completi delle autorizzazioni, utilizzare la seguente dichiarazione.
SHOW GRANTS FOR rds_superuser_role@'%';
Quando concedi l'accesso utilizzando i ruoli in RDS My SQL version 8.0.36 e successive, attivi il ruolo anche utilizzando l'SET ROLE
istruzione or. role_name
SET ROLE ALL
L'esempio seguente mostra come. Sostituire il nome del ruolo appropriato per 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`@`%` | +--------------------------------------------------+