Auf dieser Seite wird beschrieben, wie die Arbeit in Cloud SQL mit MySQL-Nutzern funktioniert. MySQL-Nutzerkonten bieten Sicherheit, indem sie den Zugriff auf MySQL-Datenbanken kontrollieren.
Eine vollständige Dokumentation zu Nutzern in MySQL finden Sie in der MySQL-Dokumentation unter Zugriffssteuerung und Kontoverwaltung. Weitere Informationen zum Erstellen und Verwalten von Cloud SQL-Nutzern in Cloud SQL finden Sie unter Nutzer erstellen und verwalten.
Vorteile von MySQL-Nutzerkonten
Mithilfe von MySQL-Nutzerkonten können Sie sich an Ihrer Cloud SQL-Instanz anmelden und diese verwalten. Nutzerkonten werden auch benötigt, damit Anwendungen auf Ihre Instanz zugreifen können.
Superuser-Einschränkungen
In Cloud SQL können Kunden keine Nutzer mit Superuser-Attributen erstellen oder darauf zugreifen.
Da Cloud SQL for MySQL ein verwalteter Dienst ist, wird der Zugriff auf bestimmte Systemprozeduren und -tabellen eingeschränkt.
Die Berechtigungen für die Datenbearbeitungssprache (Data Manipulation Language, DML) und die Datendefinitionssprache (Data Definition Language, DDL) sind bei einigen Schematabellen eingeschränkt.
Hier finden Sie die Liste der MySQL 5.6-Systemtabellen im mysql-Schema, die Schreibberechtigungen erfordern: audit_log_rules_expanded
, audit_log_supported_ops
, audit_log_rules
, cloudsql_replica_index
, db
, event
, func
, heartbeat
, plugin
, proc
, user
und tables_priv
.
Für MySQL 5.7 ist dies die Liste: audit_log_rules_expanded
, audit_log_supported_ops
, audit_log_rules
, cloudsql_replica_index
, db
, event
, func
, gtid_executed
, heartbeat
, plugin
, proc
, user
und tables_priv
.
Weitere Informationen zu MySQL 8.0 und MySQL 8.4 finden Sie unter MySQL 8.0-Nutzerberechtigungen (cloudsqlsuperuser) und MySQL 8.4-Nutzerberechtigungen (cloudsqlsuperuser).
MySQL-Nutzerkonto-Format
MySQL-Nutzerkonten bestehen aus zwei Komponenten: einem Nutzernamen und einem Hostnamen. Der Nutzername identifiziert den Nutzer, der Hostname gibt an, von welchen Hosts aus der Nutzer eine Verbindung herstellen darf. Die Kombination aus Nutzername und Hostname wird verwendet, um ein Nutzerkonto zu erstellen:
'<user_name>'@'<host_name>'
Sie können eine bestimmte IP-Adresse oder einen -Adressbereich für den Hostnamen angeben oder das Prozentzeichen (%) verwenden, um alle Hostnamen zuzulassen. Beachten Sie beim Herstellen einer Verbindung zu der Instanz mithilfe von IP-Adressen, dass Sie auch dann die IP-Adresse des Clients als Autorisierte Adresse hinzufügen müssen, wenn Sie für den Nutzer alle Hostnamen zulassen.
Nutzerkonten werden sowohl durch den Nutzernamen als auch den Hostnamen definiert. Beispiel: 'user'@'%'
ist ein anderes Nutzerkonto als 'user'@'localhost'
.
Standard-MySQL-Nutzer
MySQL-Instanzen haben bei der Erstellung ein Standardnutzerkonto: 'root'@'%'
. Mit diesem Konto stellen Sie zum ersten Mal eine Verbindung zur Datenbankinstanz her und verwalten diese. Der Standardnutzer hat alle Datenbankberechtigungen mit Ausnahme von SUPER und FILE. In Cloud SQL können Sie 'root'@'%'
nicht umbenennen.
Der Standardwert für root'@'%
ist kein Passwort und MySQL erfordert nicht, dass Sie ein Passwort für root'@'%
verwenden. Da root'@'%
jedoch in den meisten MySQL-Installationen vorhanden ist, bietet das root'@'%
-Nutzerkonto ein häufiges Ziel für unbefugten Zugriff.
Jede Person oder jedes Programm, die bzw. das so Zugriff auf die Instanz erhält, kann fast unbegrenzt auf die Instanz und Ihre Daten zugreifen und diese steuern. Daher empfehlen wir Ihnen, Ihren root'@'%
-Nutzer mit einem starken Passwort zu konfigurieren oder diesen Nutzer zu löschen. Hilfe zur Konfiguration des Standardnutzerkontos finden Sie unter Standardnutzerkonto konfigurieren.
Systemnutzer
Es gibt sieben Systemnutzer:
root@localhost
,root@127.0.0.1
,root@::1
Wird zur Bereitstellung des verwalteten Datenbankdienstes verwendet.
cloudsqlreplica@%
Wird als Replikationsnutzer für Replikate verwendet.
cloudsqlimport@localhost
,cloudsqlimport@127.0.0.1
Wird für Datenimporte verwendet.
cloudsqlexport@localhost
,cloudsqlexport@127.0.0.1
Wird für Datenexporte verwendet.
cloudsqloneshot
Wird für andere Datenbankvorgänge verwendet.
cloudsqlapplier@localhost
Wird für Replikationsvorgänge in externen Serverreplikaten oder für hauptversionsübergreifende Replikationen verwendet.
cloudsqlobservabilityadmin
Wird für die Beobachtbarkeit von Datenbanken verwendet.
cloudiamgroup@'%'
Wird für die IAM-Gruppenauthentifizierung verwendet.
Sie können diese Nutzer weder löschen noch ändern.
Andere MySQL-Nutzerkonten
Sie können auch andere MySQL-Nutzerkonten erstellen; das ist sinnvoll, weil dies die Verwendung von verschiedenen MySQL-Nutzer-Konten für verschiedene Zwecke ermöglicht.
Sie können ein Nutzerkonto mit einem eingeschränkten Hostnamen erstellen oder SQL-Befehle verwenden, um Berechtigungen für Ihre Nutzerkonten einzuschränken.
Weitere Informationen zu Nutzerkontennamen finden Sie in der MySQL-Dokumentation unter Kontonamen angeben. Informationen zum Erstellen eines neuen MySQL-Nutzers in Cloud SQL finden Sie unter Nutzer erstellen.
Nutzerberechtigungen für MySQL 5.6 und 5.7
MySQL bietet fein abgestufte Berechtigungen, die Sie Nutzern gewähren oder entziehen können. So können Sie festlegen, was ein Nutzer auf Ihrer Instanz tun darf.
Mit Cloud SQL erstellte Nutzer haben die gleichen Berechtigungen wie der MySQL-Standardnutzer. Sie können ihre Berechtigungen mit den Anweisungen GRANT
oder REVOKE
ändern.
Wenn Sie den mysql
-Client verwenden, um einen Nutzer zu erstellen, müssen Sie ihm mit der Anweisung GRANT
explizit Berechtigungen zuweisen.
Weitere Informationen zu den Rechten, die von MySQL unterstützt werden, finden Sie in MySQL – Unterstützte Rechte.
MySQL 8.0-Nutzerberechtigungen (cloudsqlsuperuser
)
Wenn Sie in Cloud SQL for MySQL 8.0 einen neuen Nutzer erstellen, wird diesem automatisch die Rolle cloudsqlsuperuser
zugewiesen. Die Rolle "cloudsqlsuperuser
" ist eine Cloud SQL-Rolle, die eine Reihe von MySQL-Berechtigungen enthält. Diese Rolle gewährt dem Nutzer alle statischen Berechtigungen, außer SUPER
und FILE
.
Die Rolle cloudsqlsuperuser
unterstützt nur die folgenden dynamischen Berechtigungen, die auf MySQL 8.0-Nebenversionen basieren:
MySQL 8.0.18
MySQL 8.0.26
MySQL 8.0.27
MySQL 8.0.28
APPLICATION_PASSWORD_ADMIN
CONNECTION_ADMIN
ROLE_ADMIN
SET_USER_ID
XA_RECOVER_ADMIN
CLOUDSQL_SPECIAL_VARIABLES_ADMIN
FLUSH_OPTIMIZER_COSTS
FLUSH_STATUS
FLUSH_TABLES
FLUSH_USER_RESOURCES
INNODB_REDO_LOG_ENABLE
SHOW_ROUTINE
AUTHENTICATION_POLICY_ADMIN
GROUP_REPLICATION_STREAM
PASSWORDLESS_USER_ADMIN
AUDIT_ABORT_EXEMPT
MySQL 8.0.29 (verworfen)
APPLICATION_PASSWORD_ADMIN
CONNECTION_ADMIN
ROLE_ADMIN
SET_USER_ID
XA_RECOVER_ADMIN
CLOUDSQL_SPECIAL_VARIABLES_ADMIN
FLUSH_OPTIMIZER_COSTS
FLUSH_STATUS
FLUSH_TABLES
FLUSH_USER_RESOURCES
INNODB_REDO_LOG_ENABLE
SHOW_ROUTINE
AUTHENTICATION_POLICY_ADMIN
GROUP_REPLICATION_STREAM
PASSWORDLESS_USER_ADMIN
AUDIT_ABORT_EXEMPT
SENSITIVE_VARIABLES_OBSERVER
MySQL 8.0.30 und höher
APPLICATION_PASSWORD_ADMIN
CONNECTION_ADMIN
ROLE_ADMIN
SET_USER_ID
XA_RECOVER_ADMIN
CLOUDSQL_SPECIAL_VARIABLES_ADMIN
FLUSH_OPTIMIZER_COSTS
FLUSH_STATUS
FLUSH_TABLES
FLUSH_USER_RESOURCES
INNODB_REDO_LOG_ENABLE
SHOW_ROUTINE
AUTHENTICATION_POLICY_ADMIN
GROUP_REPLICATION_STREAM
PASSWORDLESS_USER_ADMIN
AUDIT_ABORT_EXEMPT
SENSITIVE_VARIABLES_OBSERVER
FIREWALL_EXEMPT
Die Rolle "cloudsqlsuperuser
" unterstützt keine DDL-Vorgänge (Data Definition Language) für die mysql
-Systemdatenbank.
Wenn Sie eine vollständige Liste der Berechtigungen sehen möchten, die der Rolle "cloudsqlsuperuser
" zugewiesen sind, führen Sie imSHOW GRANTS
-Client die Anweisung mysql
aus:
SHOW GRANTS FOR 'cloudsqlsuperuser'
MySQL 8.4-Nutzerberechtigungen (cloudsqlsuperuser
)
Ähnlich wie in Cloud SQL for MySQL 8.0 wird in Cloud SQL for MySQL 8.4 beim Erstellen eines neuen Nutzers automatisch die Rolle cloudsqlsuperuser
zugewiesen.
In MySQL 8.4 hat die Rolle cloudsqlsuperuser
dieselben Berechtigungen wie in MySQL 8.0.x.
MySQL 8.4 hat jedoch die folgenden Hauptunterschiede zu MySQL 8.0.x:
- Die Berechtigung
SET_USER_ID
wird entfernt und durch die neu eingeführten BerechtigungenALLOW_NONEXISTENT_DEFINER
undSET_ANY_DEFINER
ersetzt. - Gewährt
FLUSH_PRIVILEGES
als Teil des BerechtigungsumfangsRELOAD
. Diese Berechtigung ist kein Ersatz für die BerechtigungRELOAD
. Die BerechtigungRELOAD
wird aus Gründen der Abwärtskompatibilität weiterhin gewährt. - Gewährt die neue Berechtigung
OPTIMIZE_LOCAL_TABLE
.
Außerdem werden in Cloud SQL for MySQL 8.4 die in MySQL 8.4 eingeführten Berechtigungen TRANSACTION_GTID_TAG
und TELEMETRY_LOG_ADMIN
nicht gewährt.
Nächste Schritte
root
-Nutzerkonto für eine Instanz konfigurieren- Nutzer erstellen und verwalten
- Datenbanken erstellen und verwalten
- Informationen zu MySQL-Nutzern in der MySQL-Dokumentation
- MySQL-Dokumentation zu Berechtigungen, die von MySQL bereitgestellt werden
- Verbindungsoptionen für Instanzen