Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Rollenbasiertes Privilegienmodell für for My RDS SQL
Ab SQL Version 8.0.36 von My können Sie die Tabellen in der Datenbank nicht direkt ändern. RDS mysql
Insbesondere können Sie keine Datenbankbenutzer erstellen, indem Sie Operationen mit der Datenmanipulationssprache (DML) an den grant
Tabellen ausführen. Stattdessen verwenden Sie Meine SQL Kontoverwaltungsanweisungen wieCREATE
USER
, undGRANT
, um Benutzern rollenbasierte Berechtigungen REVOKE
zu gewähren. Sie können auch keine anderen Objekte wie gespeicherte Prozeduren in der mysql
-Datenbank erstellen. Sie können immer noch die mysql
-Tabellen abfragen. Wenn Sie die binäre Protokollreplikation verwenden, werden Änderungen, die direkt an den mysql
Tabellen auf der Quell-DB-Instance vorgenommen wurden, nicht auf den Zielcluster repliziert.
In einigen Fällen verwendet Ihre Anwendung möglicherweise Verknüpfungen, um Benutzer oder andere Objekte zu erstellen, indem Sie sie in diemysql
-Tabellen Wenn ja, ändern Sie Ihren Anwendungscode, um die entsprechenden Anweisungen wie CREATE
USER
zu verwenden.
Verwenden Sie eine der folgenden Methoden, um Metadaten für Datenbankbenutzer während der Migration aus einer externen SQL Datenbank von My Database zu exportieren:
Verwenden Sie das Instance-Dump-Hilfsprogramm von My SQL Shell mit einem Filter, um Benutzer, Rollen und Zuschüsse auszuschließen. Das folgende Beispiel zeigt Ihnen die zu verwendende Befehlssyntax. Stellen Sie sicher, dass
outputUrl
das leer ist.mysqlsh user@host -- util.dumpInstance(outputUrl,{excludeSchemas:['mysql'],users: true})
Weitere Informationen finden Sie unter Instance Dump Utility, Schema Dump Utility und Table Dump Utility
im My SQL Reference Manual. -
Verwenden Sie das Client-Hilfsprogramm
mysqlpump
. Dieses Beispiel umfasst alle Tabellen mit Ausnahme der Tabellen in dermysql
Systemdatenbank. Es enthältCREATE USER
auchGRANT
Anweisungen zur Reproduktion aller SQL Benutzer vom Typ My in der migrierten Datenbank.mysqlpump --exclude-databases=mysql --users
Das
mysqlpump
Client-Hilfsprogramm ist mit My SQL 8.4 nicht mehr verfügbar. Nutzen Sie stattdessenmysqldump
.
Um die Verwaltung von Berechtigungen für viele Benutzer oder Anwendungen zu vereinfachen, können SieCREATE ROLE
-Anweisung zum Erstellen einer Rolle mit einer Reihe von Berechtigungen. Dann können Sie dieGRANT
undSET ROLE
-Anweisungen und diecurrent_role
Funktion, um Benutzern oder Anwendungen Rollen zuzuweisen, die aktuelle Rolle zu wechseln und zu überprüfen, welche Rollen in Kraft sind. Weitere Informationen zum rollenbasierten Berechtigungssystem in My SQL 8.0 finden Sie unter Using Roles
Wichtig
Wir empfehlen Ihnen, den Hauptbenutzer nicht direkt in Ihren Anwendungen zu verwenden. Bleiben Sie stattdessen bei der bewährten Methode, einen Datenbankbenutzer zu verwenden, der mit den Mindestberechtigungen erstellt wurde, die für Ihre Anwendung erforderlich sind.
Ab Version 8.0.36 SQL enthält RDS for My eine spezielle Rolle, die über alle der folgenden Rechte verfügt. Der Name der Rolle lautet rds_superuser_role
. Dem primären Administratorbenutzer für jede DB-Instance wurde diese Rolle bereits zugewiesen. Dierds_superuser_role
enthält die folgenden Berechtigungen für alle Datenbankobjekte:
-
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
Die Rollendefinition umfasst auchWITH GRANT OPTION
damit ein Administratorbenutzer diese Rolle anderen Benutzern gewähren kann. Insbesondere muss der Administrator alle Rechte gewähren, die für die Durchführung der binären Protokollreplikation mit My SQL Cluster als Ziel erforderlich sind.
Tipp
Verwenden Sie die folgende Anweisung, um die vollständigen Details der Berechtigungen einzusehen.
SHOW GRANTS FOR rds_superuser_role@'%';
Wenn Sie Zugriff mithilfe von Rollen in RDS My SQL Version 8.0.36 und höher gewähren, aktivieren Sie die Rolle auch mithilfe der Anweisung SET ROLE
orrole_name
SET ROLE ALL
. Im folgenden Beispiel wird gezeigt, wie dies geschieht. Ersetzen Sie den entsprechenden Rollennamen für 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`@`%` | +--------------------------------------------------+