TASIOMIND.DEV — OPERATIONAL▸▸▸FULL STACK DEVELOPER @ GWQ SERVICEPLUS AG▸▸▸FOUNDER — K8SGPT.AI▸▸▸OPEN SOURCE: ACTIVE▸▸▸DISTRIBUTED SYSTEMS / KUBERNETES / AI▸▸▸RUST + GO + PYTHON▸▸▸FIELD TESTED / STATUS — NOMINAL▸▸▸LOCATION: EUROPE/BERLIN▸▸▸TASIOMIND.DEV — OPERATIONAL▸▸▸FULL STACK DEVELOPER @ GWQ SERVICEPLUS AG▸▸▸FOUNDER — K8SGPT.AI▸▸▸OPEN SOURCE: ACTIVE▸▸▸DISTRIBUTED SYSTEMS / KUBERNETES / AI▸▸▸RUST + GO + PYTHON▸▸▸FIELD TESTED / STATUS — NOMINAL▸▸▸LOCATION: EUROPE/BERLIN▸▸▸

Cheatsheet: Verwaltung von MySQL auf Amazon RDS

May 21, 2014

Amazon Relational Database Service (RDS) ist ein verwalteter Datenbankdienst von AWS, der die Einrichtung, den Betrieb und die Skalierung einer relationalen Datenbank in der Cloud vereinfacht.

Diese Anleitung bietet eine Übersicht der grundlegenden Befehle für die Verwaltung einer MySQL-Datenbank auf Amazon RDS.


1. Verbindung zur RDS-Instanz herstellen

Verwenden Sie den mysql-Client, um sich mit dem RDS-Endpunkt zu verbinden.

code
mysql -u BENUTZERNAME -p -h DEIN-RDS-ENDPOINT.rds.amazonaws.com
  • -u: Der Benutzername des Master-Benutzers (oder eines anderen Benutzers).
  • -p: Fordert zur Passworteingabe auf.
  • -h: Der Hostname (Endpunkt) Ihrer RDS-Instanz.

Direkte Verbindung zu einer Datenbank:

code
mysql -u BENUTZERNAME -p -h DEIN-RDS-ENDPOINT.rds.amazonaws.com DEIN_DB_NAME

2. Datenbanken und Benutzer verwalten

Neue Datenbank erstellen

code
CREATE DATABASE meine_datenbank;

Neuen Benutzer anlegen

Es ist eine bewährte Methode, für jede Anwendung einen eigenen Datenbankbenutzer mit eingeschränkten Rechten zu erstellen.

code
CREATE USER 'app_user'@'%' IDENTIFIED BY 'EinStarkesPasswort123!';
  • 'app_user': Der Name des neuen Benutzers.
  • '%': Erlaubt dem Benutzer, sich von jeder IP-Adresse aus zu verbinden. Für eine höhere Sicherheit sollten Sie dies auf die spezifische IP-Adresse oder den IP-Bereich Ihres Anwendungsservers einschränken (z.B. '192.168.1.100').

Berechtigungen vergeben

Gewähren Sie dem neuen Benutzer nur die Rechte, die er für seine Aufgaben benötigt (Prinzip der geringsten Rechte).

code
-- Gewährt dem Benutzer alle Rechte auf die spezifische Datenbank 'meine_datenbank'
GRANT ALL PRIVILEGES ON meine_datenbank.* TO 'app_user'@'%';

-- Übernimmt die neuen Berechtigungen
FLUSH PRIVILEGES;

Berechtigungen eines Benutzers anzeigen

code
SHOW GRANTS FOR 'app_user'@'%';

Passwort eines Benutzers ändern

code
ALTER USER 'app_user'@'%' IDENTIFIED BY 'EinNeuesStarkesPasswort456!';

Benutzer löschen

code
DROP USER 'app_user'@'%';

3. Daten Import und Export

SQL-Datei importieren

code
mysql -u BENUTZERNAME -p -h DEIN-ENDPOINT meine_datenbank < /pfad/zur/datei.sql

Datenbank-Dump erstellen (mysqldump)

code
mysqldump -u BENUTZERNAME -p -h DEIN-ENDPOINT meine_datenbank > backup.sql

Datenbank direkt von einer RDS-Instanz zu einer anderen migrieren

code
mysqldump -u src_user -p -h src_host src_db | mysql -u dest_user -p -h dest_host dest_db

4. Wichtige Diagnosebefehle

Alle Benutzer auflisten

code
SELECT user, host FROM mysql.user;

Datenbanken auflisten

code
SHOW DATABASES;

5. Fehlerbehebung

  • Access denied for user ...:

    • Überprüfen Sie Benutzername und Passwort.
    • Stellen Sie sicher, dass der Host (@'...'), von dem aus Sie sich verbinden, in den Benutzerrechten erlaubt ist.
  • Verbindungstimeout / Could not connect:

    • Security Group: Überprüfen Sie die der RDS-Instanz zugewiesene Security Group. Der Port 3306 (MySQL) muss für Ihre IP-Adresse oder die Security Group Ihres Anwendungsservers freigegeben sein.
    • Netzwerk-ACLs und VPC-Routing: Stellen Sie sicher, dass die Netzwerk-ACLs und die Routing-Tabellen in Ihrer VPC den Verkehr zur RDS-Instanz zulassen.
    • Public Access: Prüfen Sie, ob die RDS-Instanz öffentlich erreichbar ist, falls Sie sich von außerhalb der VPC verbinden.