Sie können Ihre MySQL- oder MariaDB-Datenbank ganz einfach mit einem Linux Cloud-Server verbinden und so An­wen­dun­gen flexibel betreiben. Mit den passenden Zu­gangs­da­ten und der richtigen Kon­fi­gu­ra­ti­on gelingt der Linux-MySQL-Connect einfach und schnell.

Managed Database Services
Da­ten­ban­ken – Auf´s We­sent­li­che kon­zen­trie­ren
  • IONOS Cloud-Partner: Die Experten für Ihren Datenbank-Betrieb
  • Flexibel: Maß­ge­schnei­der­te Datenbank-Lösungen ganz auf Ihre Be­dürf­nis­se
  • Re­chen­zen­tren in Deutsch­land: Ihre Daten sind sicher

An­for­de­run­gen

  • Ein Cloud Server unter Linux (jede beliebige Dis­tri­bu­ti­on).
  • LAMP-Stapel (Apache, MySQL/MariaDB und PHP) in­stal­liert und aktiv.
  • Wenn Sie eine Firewall haben, müssen Sie den Zugriff auf den Port 3306 auf dem MySQL/MariaDB-Server erlauben.

Linux-MySQL-Connect: So geht’s

Da­ten­ban­ken werden häufig mit Linux Cloud-Servern verbunden, um An­wen­dun­gen flexibel und ska­lier­bar betreiben zu können. So können mehrere Dienste oder Web­an­wen­dun­gen auf dieselben Daten zugreifen, ohne dass separate lokale In­stal­la­tio­nen nötig sind. Außerdem er­mög­licht ein Cloud-Server eine einfache Ver­wal­tung, Backups und Si­cher­heits­up­dates der Datenbank. In diesem Tutorial zeigen wir, wie Sie eine MySQL- oder MariaDB-Datenbank auf einem Linux-Server ein­rich­ten und mit einem PHP-Skript verbinden können.

Schritt 1: Erstellen einer Bei­spiel­da­ten­bank

Für die Zwecke dieses Tutorials verwenden wir eine Test­da­ten­bank. Um eine solche zu erstellen, melden Sie sich zunächst an:

mysql -u root -p

Erstellen Sie die Test­da­ten­bank mit folgendem Befehl:

CREATE DATABASE phptest;

Wechseln Sie nun in die Test­da­ten­bank:

USE phptest;

Erstellen Sie hier eine einfache Bei­spiel­ta­bel­le. In unserem Beispiel wählen wir eine Tabelle, die Mit­ar­bei­ten­de speichert:

CREATE TABLE employees (id INT, name VARCHAR(40));

Fügen Sie nun zwei Mit­ar­bei­ten­de zur Tabelle hinzu:

INSERT INTO employees VALUES (1, "Alice");
INSERT INTO employees VALUES (2, "Bob");

Um zu über­prü­fen, ob die Da­ten­sät­ze korrekt erstellt wurden, können Sie folgende SQL-Query verwenden:

SELECT * FROM employees;

Die Ausgabe sollte wie folgt aussehen:

+------+-------+
| id   | name  |
+------+-------+
| 1    | Alice |
| 2    | Bob   |
+------+-------+
2 rows in set (0,002 sec)

Schritt 2: Erstellen eines MySQL/MariaDB-Users

Um au­then­ti­fi­zier­ten Zugriff zu er­mög­li­chen und gleich­zei­tig die Datenbank vor un­be­fug­tem Zugriff zu schützen, müssen Sie im nächsten Schritt einen MySQL/MariaDB-User erstellen. Melden Sie sich hierzu erneut auf dem Da­ten­bank­ser­ver am MySQL/MariaDB-Client an:

mysql -u root -p

Der folgende Befehl erstellt einen User und erteilt ihm Be­rech­ti­gun­gen für die Datenbank, die wir im ersten Schritt erstellt haben:

CREATE USER [Username]@[Location] IDENTIFIED BY [Passwort];
GRANT ALL PRIVILEGES ON [Datenbankname].* TO [Username]@[Location];
FLUSH PRIVILEGES;

Ersetzen Sie in obigem Befehl folgende Punkte:

  • [Datenbankname] mit dem Namen Ihrer Datenbank.
  • [Username] mit dem Namen des Users, den Sie für Ihre Datenbank erstellen möchten.
  • [Location] mit dem Spei­cher­ort des PHP-Skripts. Wenn sich das PHP-Skript und die MySQL-Datenbank auf demselben Server befinden, verwenden Sie localhost. An­dern­falls verwenden Sie die IP-Adresse des Servers, auf dem sich das PHP-Skript befindet.
  • [Passwort] mit einem sicheren Passwort für Ihren User.

Um bei­spiels­wei­se einen User namens phpuser mit dem Passwort Ig86N3tUa9 zu erstellen, der sich auf dem gleichen Server wie die MySQL-Datenbank befindet und Zugriff auf die Datenbank phptest hat, lautet der Befehl:

CREATE USER 'phpuser'@'localhost' IDENTIFIED BY 'Ig86N3tUa9';
GRANT ALL PRIVILEGES ON phptest.* TO 'phpuser'@'localhost';
FLUSH PRIVILEGES;

Um einen zweiten User namens phpuser2 zu erstellen, der sich von einem Server mit der IP-Adresse 192.168.0.1 verbindet, lautet der Befehl:

CREATE USER 'phpuser2'@'192.168.0.1' IDENTIFIED BY 'Rq53yur62I';
GRANT ALL PRIVILEGES ON phptest.* TO 'phpuser2'@'192.168.0.1';
FLUSH PRIVILEGES;

Schritt 3: Erstellen eines PHP-Skripts

Um die Ver­bin­dung Ihrer PHP-Anwendung auf Ihrem Linux-Server zur Datenbank zu prüfen, erstellen wir ein kleines Test­skript. Dieses Skript stellt eine Ver­bin­dung zur Test­da­ten­bank her, liest Daten aus einer Tabelle aus und gibt sie im Browser aus. So können Sie si­cher­stel­len, dass User, Passwort und Host korrekt kon­fi­gu­riert sind und die Datenbank er­reich­bar ist.

Erstellen Sie zunächst das Test­skript:

sudo nano /var/www/html/phpconnect.php

Fügen Sie an­schlie­ßend folgenden Inhalt in die Datei ein:

<html>
<head>
<title>Test PHP Connection Script</title>
</head>
<body>
<h3>Welcome to the PHP Connect Test</h3>
<?php
$dbname = [Datenbankname];
$dbuser = [Username];
$dbpass = [Passwort];
$dbhost = [Location];
// Verbindung erstellen
$connect = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);
if (!$connect) {
die("Verbindung fehlgeschlagen: " . mysqli_connect_error());
}
// Daten abfragen
$result = mysqli_query($connect, "SELECT id, name FROM employees");
while ($row = mysqli_fetch_assoc($result)) {
echo "ID: {$row['id']}  Name: {$row['name']}<br>";
}
mysqli_close($connect);
?>
</body>
</html>
html

Ersetzen Sie Username, Passwort, Location und Hostname durch die ent­spre­chen­den Daten. Wenn Sie bei­spiels­wei­se mit dem Skript eine lokale Ver­bin­dung testen möchten, bei der sich das Skript auf demselben Server wie die Datenbank befindet, wählen Sie:

$dbuser = 'phpuser';
$dbpass = 'Ig86N3tUa9';
$dbhost = 'localhost';

Um mit dem Skript die Re­mo­te­ver­bin­dung zu über­prü­fen, bei der es sich auf einem anderen Server als die Datenbank befindet, benötigen die Variablen folgende Werte:

$dbuser = 'phpuser2';
$dbpass = 'Rq53yur62I';
$dbhost = '192.168.0.2';

Feh­ler­be­he­bung bei einer Remote MySQL/MariaDB-Ver­bin­dung

Wenn Ihre PHP-Anwendung oder ein anderes Skript sich nicht von einem anderen Server aus mit der MySQL/MariaDB-Datenbank verbinden kann, können ver­schie­de­ne Punkte die Ursache sein. Folgende Lö­sungs­vor­schlä­ge können helfen, den Fehler zu beheben:

Lösung 1: User und Be­rech­ti­gun­gen prüfen

Wenn Sie Probleme bei der Ver­bin­dung zu einer MySQL/MariaDB-Datenbank auf einem anderen Server haben, über­prü­fen Sie zunächst Folgendes:

  • Verwenden Sie den richtigen MySQL/MariaDB-Be­nut­zer­na­men und das richtige Passwort?
  • Hat dieser Benutzer den richtigen Spei­cher­ort ein­ge­stellt?

MySQL/MariaDB erlaubt stan­dard­mä­ßig, dass sich ein Benutzer nur von dem beim Erstellen an­ge­ge­be­nen Host anmelden kann. Wenn Ihr Benutzer bei­spiels­wei­se so erstellt wurde:

CREATE USER 'phpuser'@'localhost' IDENTIFIED BY 'Ig86N3tUa9';
GRANT ALL PRIVILEGES ON phptest.* TO 'phpuser'@'localhost';
FLUSH PRIVILEGES;

dann funk­tio­niert die Anmeldung nur auf demselben Server, auf dem die Datenbank läuft (localhost). Ein Skript auf einem anderen Server muss über einen Benutzer verfügen, der für die Remote-IP-Adresse oder % (alle Hosts) angelegt wurde.

Lösung 2: Kom­man­do­zei­len­ver­bin­dungs­test

Bevor Sie das PHP-Skript prüfen, sollten Sie die Ver­bin­dung direkt über die MySQL-CLI testen. Auf dem Server, auf dem das Skript läuft, verwenden Sie:

mysql -u [username] -h [host server IP address] -p

Um bei­spiels­wei­se eine Ver­bin­dung zu einer Datenbank auf 192.168.0.2 mit dem Be­nut­zer­na­men phpuser2 her­zu­stel­len, lautet der Befehl:

mysql -u phpuser2 -h 192.168.0.2 -p

Wenn die Ver­bin­dung funk­tio­niert, werden Sie durch diesen Befehl am MySQL/MariaDB-Client auf dem Remote-Server an­ge­mel­det.

Lösung 3: Firewall

Ver­ge­wis­sern Sie sich, dass alle re­le­van­ten Firewall-Regeln ak­tua­li­siert wurden, um TCP/UDP-Da­ten­ver­kehr auf Port 3306 für den Da­ten­bank­ser­ver zu er­mög­li­chen. Beachten Sie, dass alle Cloud Server von der stan­dard­mä­ßi­gen Firewall-Richt­li­nie betroffen sind, die über das Cloud Panel gesteuert wird.

Zum Hauptmenü