MySQL/MariaDB-Datenbank mit einem Linux Cloud-Server verbinden
Erfahren Sie, wie Sie sich mit PHP auf einem Cloud Server unter Linux mit einer MySQL/MariaDB-Datenbank verbinden. Dieses Tutorial behandelt die Verbindung zu einer Datenbank auf dem gleichen Server wie die PHP-Anwendung sowie die Verbindung zu einer Datenbank auf einem anderen Cloud Server.
Anforderungen
- Ein Cloud Server unter Linux (jede beliebige Distribution).
- LAMP-Stapel (Apache, MySQL/MariaDB und PHP) installiert und ausgeführt.
- Wenn Sie eine Firewall haben, müssen Sie den Zugriff auf den Port 3306 auf dem MySQL/MariaDB-Server erlauben.
- Automatisch: Backups und Recovery
- Intuitiv: Planung und Management
- Intelligent: KI-basierter Bedrohungsschutz
- Inkl. 300,- € Startguthaben im 1. Monat
Erstellen einer Beispieldatenbank
Für die Zwecke dieses Tutorials verwenden wir eine Testdatenbank. Wenn Sie einen zum Testen erstellen möchten, melden Sie sich am MySQL/MariaDB-Client an:
mysql -u root -p
Erstellen Sie die Testdatenbank:
CREATE DATABASE phptest;
Wechseln Sie in die Testdatenbank:
USE phptest;
Erstellen Sie eine Basistabelle:
CREATE TABLE employees (id char(1), name varchar(40));
Füge zwei Mitarbeiter zur Tabelle hinzu:
INSERT INTO employees VALUES (1, "Alice");
INSERT INTO employees VALUES (2, "Bob");
Verwenden Sie SELECT * FROM von Mitarbeitern, um sicherzustellen, dass die Datensätze korrekt erstellt wurden:
MySQL [phptest] SELECT * FROM employees;
+------+-------+
| id | name |
+------+-------+
| 1 | Alice |
| 2 | Bob |
+------+-------+
2 rows in set (0.00 sec)
Erstellen eines MySQL/MariaDB-Benutzers
Sie müssen einen MySQL/MariaDB-Benutzer erstellen, um Anmeldedaten für das PHP-Skript zu generieren. Melden Sie sich auf dem Datenbankserver am MySQL/MariaDB-Client an:
mysql -u root -p
Der folgende Befehl erstellt einen Benutzer und erteilt den Benutzern Berechtigungen für die Datenbank, auf die Ihr Skript zugreifen wird:
GRANT ALL ON [database name].* TO [username]@[location] IDENTIFIED BY '[password]';
Ersetzen:
- [Datenbankname] mit dem Namen Ihrer Datenbank.
- [Benutzername] mit dem Benutzernamen, den Sie für Ihre Datenbank erstellen möchten.
- [location] mit dem Speicherort des PHP-Skripts. Wenn sich das PHP-Skript und die MySQL-Datenbank auf demselben Server befinden, verwenden Sie localhost. Andernfalls verwenden Sie die IP-Adresse des Servers, auf dem sich das PHP-Skript befindet.
- [Passwort] mit einem sicheren Passwort für diesen Benutzer.
Um beispielsweise einen Benutzer phpuser mit dem Passwort Ig86N3tUa9 zu erstellen, der sich auf dem gleichen Server wie die MySQL-Datenbank befindet und Zugriff auf den Datenbankphptest hat, lautet der Befehl:
GRANT ALL ON phptest.* TO phpuser@localhost IDENTIFIED BY 'Ig86N3tUa9';
Um einen zweiten Benutzer phpuser2 zu erstellen, der sich von einem Server mit der IP-Adresse 192.168.0.1 verbindet, lautet der Befehl:
- Daten zentral speichern, teilen und bearbeiten
- Serverstandort Deutschland (ISO 27001-zertifiziert)
- Höchste Datensicherheit im Einklang mit der DSGVO
Erstellen Sie ein Beispiel für ein PHP-Skript
Für die Zwecke dieses Tutorials werden wir ein PHP-Testskript verwenden, um eine Verbindung zur Testdatenbank herzustellen. Wenn Sie eine zum Testen erstellen möchten, erstellen Sie eine Datei /var/wwww/html/phpconnect.php und öffnen Sie sie mit dem Befehl zur Bearbeitung:
sudo nano /var/www/html/phpconnect.php
Den folgenden Inhalt in diese Datei einfügen:
<html>
<head>
<title>Test PHP Connection Script</title>
</head>
<body>
<h3>Welcome to the PHP Connect Test</h3>
<?php
$dbname = 'phptest';
$dbuser = 'username';
$dbpass = 'password';
$dbhost = 'location';
$connect = mysql_connect($dbhost, $dbuser, $dbpass) or die("Unable to connect to '$dbhost'");
mysql_select_db($dbname) or die("Could not open the database '$dbname'");
$result = mysql_query("SELECT id, name FROM employees");
while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
printf("ID: %s Name: %s <br>", $row[0], $row[1]);
}
?>
</body>
</html>
Aktualisieren Sie den Benutzernamen, das Passwort und den Hostnamen, wenn dies für den Test erforderlich ist. Wenn Sie beispielsweise mit dem Skript auf dem gleichen Server wie die Datenbank testen möchten, werden die Verbindungsinformationen angezeigt:
$dbuser = 'phpuser';
$dbpass = 'Ig86N3tUa9';
$dbhost = 'localhost';
Um mit einem Skript zu testen, das sich auf einem anderen Server als der Datenbank befindet (IP-Adresse 192.168.0.2), werden die Verbindungsinformationen angezeigt:
$dbuser = 'phpuser2';
$dbpass = 'Rq53yur62I';
$dbhost = '192.168.0.2';
Fehlerbehebung bei einer Remote MySQL/MariaDB-Verbindung
Wenn sich Ihr Skript nicht von einem anderen Server aus verbinden kann, führen Sie die folgenden Schritte aus, um den Fehler zu beheben. Weitere Details können auch im /var/log/httpd/error_log des Servers protokolliert werden.
User Information
Wenn Sie Probleme bei der Verbindung zu einer MySQL/MariaDB-Datenbank auf einem anderen Server haben, überprüfen Sie zunächst Folgendes:
- Verwenden Sie den richtigen MySQL/MariaDB-Benutzernamen und das richtige Passwort?
- Hat dieser Benutzername den richtigen Speicherort eingestellt?
MySQL erlaubt Benutzern nur die Anmeldung von dem beim Erstellen des Kontos angegebenen Ort aus. Zum Beispiel, wenn Sie einen Benutzer mit der folgenden Anweisung anlegen:
GRANT ALL ON phptest.* TO phpuser@localhost IDENTIFIED BY 'Ig86N3tUa9';
Dieser Benutzer kann sich NUR von demselben Server, auf dem sich die Datenbank befindet (localhost), mit MySQL/MariaDB verbinden. Dieser Benutzer kann sich nicht von einem anderen Server aus mit MySQL/MariaDB verbinden.
Kommandozeilenverbindungstest
Wenn diese Informationen korrekt sind, können Sie die Verbindung über die Befehlszeile testen. Verbinden Sie sich auf dem Server, auf dem sich das Skript befindet, mit der Remote MySQL/MariaDB-Datenbank mit dem Befehl:
mysql -u [username] -h [host server IP address] -p
Um beispielsweise eine Verbindung zu einer Datenbank auf 192.168.0.2 mit dem Benutzernamen phpuser2 herzustellen, lautet der Befehl:
mysql -u phpuser2 -h 192.168.0.2 -p
Wenn die Verbindung funktioniert, werden Sie am MySQL/MariaDB-Client auf dem Remote-Server angemeldet.
Firewall
Vergewissern Sie sich, dass alle relevanten Firewall-Regeln aktualisiert wurden, um TCP/UDP-Datenverkehr auf Port 3306 für den Datenbankserver zu ermöglichen.
Beachten Sie, dass alle Cloud Server von der standardmäßigen Firewall-Richtlinie betroffen sind, die über das Cloud Panel gesteuert wird.