Ein MySQL- / MariaDB-Warehouse verbinden
Diese Anleitung führt Sie durch das End-to-End-Verbinden einer MySQL- oder MariaDB-Datenbank mit Saiku Cloud. Fünf Minuten, wenn Ihr Warehouse bereits öffentlich ist; zehn, wenn Sie einen Read-only-Benutzer einrichten müssen.
Plan-Auswirkung: Jeder Saiku-Cloud-Plan (Starter, Team, Business) unterstützt MySQL-BYOC.
Treiber: Saiku Cloud liefert
MariaDB Connector/J,
der sowohl MySQL- als auch MariaDB-Wire-Protokolle spricht. Sie
können entweder jdbc:mysql://... oder jdbc:mariadb://...
einfügen, und wir handhaben den Rest.
Was Sie brauchen
- Eine MySQL 5.7+- oder MariaDB 10.3+-Instanz, die von einer öffentlichen IPv4-Adresse erreichbar ist. Cloud-gehostete Saiku-Cloud-Kunden auf Starter/Team/Business brauchen dies — Enterprise-Kunden mit einem privaten VPC-Peering-Setup erhalten stattdessen private-Netzwerk-Erreichbarkeit.
- Admin-Zugriff auf Ihr Warehouse, damit Sie einen Read-only-Benutzer erstellen können (oder die Anmeldedaten eines bestehenden Read-only-Benutzers).
- Fünf Minuten.
Schritt 1 — Unsere Egress-IP auf die Allowlist setzen
Die Queries von Saiku Cloud an Ihr Warehouse stammen alle von einer einzigen statischen IP:
87.99.153.244Fügen Sie diese zur Firewall / Security Group / Netzwerk-Allowlist Ihres Warehouses hinzu, bevor Sie die Verbindung testen. Häufige Allowlist-Orte:
- AWS RDS / Aurora MySQL: VPC-Security-Group Inbound Rule →
Port 3306 → Source
87.99.153.244/32. - Google Cloud SQL: Connectivity → Authorized networks →
87.99.153.244/32hinzufügen. - Azure Database for MySQL: Networking → Firewall rules → Regel
hinzufügen, die
87.99.153.244bis87.99.153.244erlaubt. - PlanetScale: Allowed IPs in den Datenbankeinstellungen →
87.99.153.244hinzufügen. PlanetScale erfordert außerdem?sslMode=VERIFY_IDENTITYin der JDBC-URL — siehe Schritt 3. - Selbstgehostet:
bind-address = 0.0.0.0(oder Ihre öffentliche NIC) inmy.cnf, die öffentliche Firewall-Regel davor und ein Host-Level-Grant-Muster, das die Rolle von87.99.153.244erlaubt.
Die IP ist stabil — sie übersteht Neustarts und Image-Rebuilds. Wir verpflichten uns zu mindestens 30 Tagen Vorlauf vor jeder Rotation. Vollständige Policy: unsere Verpflichtung zur Egress-IP-Stabilität.
Schritt 2 — Einen Read-only-Benutzer in MySQL erstellen
Saiku Cloud liest immer nur von Ihrem Warehouse — schreibt niemals, ändert niemals Schemas, erstellt niemals Objekte. Die Least-Privilege-Form ist ein dedizierter Read-only-Benutzer:
-- Als MySQL-Benutzer mit dem GRANT-OPTION-Privileg:CREATE USER 'saiku_read'@'%' IDENTIFIED BY 'pick-something-strong-here';
-- SELECT auf die Datenbank(en) gewähren, die Saiku sehen soll.-- Passen Sie 'analytics' an den Datenbanknamen in Ihrer JDBC-URL an.GRANT SELECT ON analytics.* TO 'saiku_read'@'%';
-- Die Privilegien-Tabellen neu laden.FLUSH PRIVILEGES;Ein paar Hinweise:
- Der
'%'-Host-Platzhalter lässt den Benutzer von jeder IP verbinden. Wenn Ihr MySQL auf Benutzerebene auf bestimmte Quell-IPs gesperrt ist (zusätzlich zur Firewall), verwenden Sie stattdessen'saiku_read'@'87.99.153.244'. - Wenn Ihre Daten über mehrere Datenbanken verteilt sind, wiederholen
Sie den
GRANT SELECT-Block für jede. - Aurora MySQL behandelt Grants leicht anders — siehe die Aurora-Dokumentation für das äquivalente Rezept.
- PlanetScale verwendet sein eigenes Rollensystem — erstellen Sie
eine „Read-only”-Rolle in der PlanetScale-Konsole und erfassen
Sie den generierten Benutzernamen + das Passwort statt
CREATE USERauszuführen.
Schritt 3 — Die JDBC-URL bauen
Die Form:
jdbc:mysql://<host>:<port>/<database>?sslMode=REQUIRED&serverTimezone=UTCZwei Parameter, die es zu verstehen lohnt (der Platzhalter des Wizards enthält beide):
serverTimezone=UTC
sslMode=REQUIRED
Erzwingt TLS für die JDBC-Verbindung. Die meisten managed
MySQL-Services erzwingen TLS ohnehin serverseitig; REQUIRED lässt
den Client den Klartext-Fallback ablehnen.
Varianten:
sslMode=REQUIRED— Server-Zertifikat wird vertraut, aber nicht für den Hostnamen verifiziert. Guter Standard.sslMode=VERIFY_CA— verifiziert, dass das Server-Zertifikat zu einer CA gehört, der wir vertrauen. Funktioniert für managed Services mit öffentlichen CAs.sslMode=VERIFY_IDENTITY— verifiziert auch, dass der Hostname des Server-Zertifikats zum Host der JDBC-URL passt. Erforderlich für PlanetScale.sslMode=DISABLED— Klartext. Nicht.
Konkrete Beispiele
- AWS RDS MySQL:
jdbc:mysql://mydb.abc123.us-east-1.rds.amazonaws.com:3306/sales?sslMode=REQUIRED&serverTimezone=UTC - Aurora MySQL: Gleiche Form; verwenden Sie den Cluster-Writer-Endpunkt.
- Google Cloud SQL:
jdbc:mysql://1.2.3.4:3306/sales?sslMode=REQUIRED&serverTimezone=UTC(verwenden Sie die Public IP aus der Cloud-SQL-Konsole) - Azure Database for MySQL:
jdbc:mysql://mydb.mysql.database.azure.com:3306/sales?sslMode=REQUIRED&serverTimezone=UTC - PlanetScale:
jdbc:mysql://aws.connect.psdb.cloud:3306/analytics?sslMode=VERIFY_IDENTITY&serverTimezone=UTC - MariaDB: Verwenden Sie
jdbc:mariadb://..., wenn Ihr Service MariaDB-spezifische URL-Parameter verwendet; ansonsten funktioniertjdbc:mysql://auch gegen MariaDB. - Selbstgehostetes MySQL/MariaDB:
jdbc:mysql://db.yourcompany.com:3306/sales?sslMode=REQUIRED&serverTimezone=UTC
Schritt 4 — Verbinden über den Saiku-Cloud-Wizard
-
Melden Sie sich bei
https://cloud.saiku.bi/an. -
Navigieren Sie zu Verbindungen in der linken Seitenleiste.
-
Klicken Sie unter 1. Warehouse-Typ wählen auf das MySQL / MariaDB-Kachel.
-
Füllen Sie aus:
- JDBC-URL — die URL aus Schritt 3.
- Benutzername —
saiku_read(oder wie Sie den Benutzer in Schritt 2 benannt haben). - Passwort — das Passwort aus Schritt 2.
-
Klicken Sie auf Verbindung testen.
Wenn alles korrekt verdrahtet ist, sehen Sie einen grünen
Ergebnis-Banner: ✓ Connection successful plus die erkannte
MySQL/MariaDB-Version. Weiter zu Schritt 5.
Wenn Sie einen roten Ergebnis-Banner sehen, siehe Fehlerbehebung unten.
Schritt 5 — Die Verbindung speichern
Nach einem erfolgreichen Test rendert der Wizard einen Abschnitt 3. Verbindung speichern. Füllen Sie aus:
- Passwort (zum Speichern erneut eingeben) — dasselbe Passwort, mit dem Sie getestet haben. Wir speichern das Passwort des Test-Formulars nicht, um zu vermeiden, ein Credential durch den Page-State zurückzureichen.
- Label — ein menschenlesbarer Name wie
Production warehouseoderMarketing analytics. Wird in der Verbindungsliste + im Cube-Designer angezeigt.
Klicken Sie auf Verbindung speichern. Wir leiten Sie zum Schema-Designer weiter.
Fehlerbehebung
✗ Connection failed (HOST_UNREACHABLE) oder (TIMEOUT)
Wir konnten den Host auf dem angegebenen Port nicht erreichen. Häufigste Ursachen:
- Firewall / Allowlist — Schritt 1 wurde nicht gemacht oder
nicht für die richtige IP. Bestätigen Sie, dass
87.99.153.244/32in der Allowlist Ihres Warehouses ist + dass sie angewandt wurde. - DNS — der Hostname in der JDBC-URL löst nicht auf oder löst
auf eine private IP auf. Verifizieren Sie von Ihrem Laptop:
nslookup <host>. Wir verweigern aus SSRF-Schutz-Gründen die Verbindung zu RFC1918- / Loopback- / Link-Local-Adressen —HOST_DENIED(nichtHOST_UNREACHABLE) ist in diesem Fall die Oberfläche. - Falscher Port — MySQL ist standardmäßig 3306. Manche managed Services verwenden einen Custom-Port (PlanetScales primärer Endpunkt ist 3306, aber einige Regionen stellen einen Load Balancer auf 443 vor — prüfen Sie die Connection-Strings-Seite in deren Konsole).
✗ Connection failed (AUTH_FAILED)
MySQL-Fehler 1045 — Benutzername oder Passwort ist falsch. Der Wizard unterscheidet absichtlich nicht zwischen „falscher Benutzer” und „falsches Passwort” — das ist Schutz gegen Credential-Stuffing-Angriffe.
- Prüfen Sie den Benutzernamen doppelt. MySQL-Benutzernamen SIND in Standardkonfigurationen case-sensitiv.
- Bestätigen Sie, dass der Benutzer von
'%'oder spezifisch von'87.99.153.244'erlaubt ist. Häufigste Form dieses Fehlers:CREATE USER 'saiku_read'@'localhost'erlaubt nur lokale Verbindungen; Saiku Cloud verbindet von87.99.153.244, was nicht zulocalhostpasst. - Versuchen Sie, von Ihrem Laptop mit
mysql -h <host> -u saiku_read -p <database>zu verbinden, um zu bestätigen, dass die Anmeldedaten außerhalb von Saiku funktionieren.
✗ Connection failed (DATABASE_NOT_FOUND)
MySQL-Fehler 1049 — der Host akzeptiert Ihre Anmeldedaten, aber der Datenbankname in der JDBC-URL existiert nicht. Verifizieren Sie ihn:
-- Aus der MySQL-CLI, als beliebiger Benutzer mit Login:SHOW DATABASES;Timestamps verschieben sich nach dem Import um eine seltsame Stundenzahl
Sie haben serverTimezone=UTC vergessen. Fügen Sie es der JDBC-URL
hinzu (Schritt 3), testen Sie, speichern Sie. Bestehende Cubes,
gegen die alte (falsche) Zeitzone gebaut, benötigen ein erneutes
Rendern.
Cube rendert, aber mit 'NULL' (String-Literal) statt tatsächlicher NULLs
Ihr MySQL ist im ANSI-SQL-Modus + die Schema-XML hat nullValue=""
konfiguriert. Entweder:
- Wechseln Sie den Server in den
TRADITIONAL-Modus (SET GLOBAL sql_mode = 'TRADITIONAL';), ODER - Bearbeiten Sie die Schema-XML, um
nullValue="\\N"zu verwenden, gemäß der MySQL-spezifischen Anleitung von Mondrian.
Alles andere
Machen Sie einen Screenshot des Wizards mit sichtbarem rotem
Ergebnis-Banner (Kind: ...-Zeile insbesondere) und senden Sie ihn
an support@saiku.bi.
Enterprise: privates Netzwerk
Für Enterprise-Kunden mit einem privaten Netzwerk-Setup wird die Egress-IP-Regel durch VPC-Peering oder PrivateLink zu Ihrer MySQL-Instanz ersetzt. Der Flow des Connection-Wizards ist ansonsten identisch. Kontaktieren Sie Ihr Account-Team, um das Peering bereitzustellen.
Mit FoodMart ausprobieren
Möchten Sie Saiku Cloud mit diesem Dialekt testen, bevor Sie Ihre eigenen Daten verbinden? Laden Sie den FoodMart-Sample-Datensatz, gepackt für MySQL, herunter: