Tutorial

Installieren des Linux-, Apache-, MySQL-, PHP- (LAMP-)Stacks unter Ubuntu 20.04

Published on June 11, 2020

Developer Advocate

Deutsch
Installieren des Linux-, Apache-, MySQL-, PHP- (LAMP-)Stacks unter Ubuntu 20.04

Einführung

Ein „LAMP“-Stack ist eine Gruppe von Open-Source-Software, die normalerweise zusammenhängend installiert wird, damit ein Server dynamische Websites und in PHP geschriebene Web-Apps hosten kann. Dieser Begriff ist ein Akronym, das für das Linux-Betriebssystem mit dem Webserver Apache steht. Die Daten dieser Site werden in einer MySQL-Datenbank gespeichert, und der dynamische Inhalt wird von PHP verarbeitet.

In diesem Leitfaden installieren wir einen LAMP Stack auf einem Ubuntu 20.04-Server.

Voraussetzungen

Zum Absolvieren dieses Tutorials benötigen Sie einen Ubuntu 20.04 Server mit einem Nicht-root sudo-aktivierten Benutzerkonto und einer einfachen Firewall. Dieser kann mit unserem Leitfaden zur Ersteinrichtung eines Servers für Ubuntu 20.04 konfiguriert werden.

Schritt 1 — Installieren von Apache und Aktualisieren der Firewall

Der Apache-Webserver gehört zu den weltweit beliebtesten Webservern. Er ist gut dokumentiert, verfügt über eine aktive Benutzergemeinschaft und ist seit den Anfängen des Webs weit verbreitet. Dadurch eignet sich der Server gut für das Hosten von Websites.

Installieren Sie Apache mit Ubuntus Paketmanager apt:

  1. sudo apt update
  2. sudo apt install apache2

Wenn Sie sudo in dieser Sitzung zum ersten Mal verwenden, werden Sie dazu aufgefordert, das Passwort Ihres Benutzers anzugeben, um zu bestätigen, dass Sie über die richtigen Berechtigungen zur Verwaltung von Systempaketen mit apt verfügen. Außerdem werden Sie zur Bestätigung der Installation von Apache aufgefordert, indem Sie Y und dann ENTER drücken.

Sobald die Installation abgeschlossen ist, müssen Sie Ihre Firewalleinstellungen so anpassen, dass HTTP- und HTTPS-Verkehr erlaubt ist. UFW verfügt über verschiedene Anwendungsprofile, die Sie dafür verwenden können. Um alle aktuell verfügbaren UFW-Anwendungsprofile aufzulisten, können Sie Folgendes ausführen:

  1. sudo ufw app list

Die Ausgabe sieht dann so aus:

Output
Available applications: Apache Apache Full Apache Secure OpenSSH

Das bedeuten die einzelnen Profile:

  • Apache: Dieses Profil öffnet nur Port 80 (normaler, unverschlüsselter Webverkehr).
  • Apache Full: Dieses Profil öffnet sowohl Port 80 (normaler, unverschlüsselter Webverkehr) als auch Port 443 (mit TLS/SSL verschlüsselter Verkehr).
  • Apache Secure: Dieses Profil öffnet nur Port 443 (mit TLS/SSL verschlüsselter Verkehr).

Erst einmal ist es am besten, nur Verbindungen an Port 80 zuzulassen, da es sich um eine neue Apache-Installation handelt und Sie noch kein TLS/SSL-Zertifikat konfiguriert haben, um HTTPS-Verkehr auf Ihrem Server zuzulassen.

Um Verkehr nur auf Port 80 zuzulassen, verwenden Sie das Apache-Profil:

  1. sudo ufw allow in "Apache"

Sie können die Änderung überprüfen mit:

  1. sudo ufw status
Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Apache ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Apache (v6) ALLOW Anywhere (v6)

Datenverkehr auf Port 80 ist nun über die Firewall zugelassen.

Sie können eine Stichprobenkontrolle vornehmen, um zu verifizieren, dass alles wie geplant vorgenommen wurde, indem Sie die öffentliche IP-Adresse Ihres Servers im Webbrowser aufrufen (siehe Anmerkung unter der nächsten Rubrik, um zu erfahren, wie die öffentliche IP-Adresse lautet, sofern Sie diese Informationen noch nicht haben):

http://your_server_ip

Es wird die Standard-Webseite für Ubuntu 20.04 Apache angezeigt, die Informations- und Testzwecken dient. Sie sollte ungefähr wie folgt aussehen:

Ubuntu 20.04 Apache Standard

Wenn Sie diese Seite sehen, ist Ihr Webserver korrekt installiert und über Ihre Firewall zugänglich.

So finden Sie die öffentliche IP-Adresse Ihres Servers

Wenn Sie die öffentliche IP-Adresse Ihres Servers nicht kennen, haben Sie mehrere Möglichkeiten, sie zu finden. Es ist normalerweise die Adresse, die Sie zur Verbindung mit Ihrem Server über SSH verwenden.

Dies kann auf unterschiedliche Weise über die Befehlszeile erfolgen. Sie können zunächst die iproute2-Tools verwenden, um Ihre IP-Adresse zu erhalten, indem Sie Folgendes eingeben:

  1. ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

Damit erhalten Sie zwei oder drei Zeilen. Das sind alle korrekte Adressen, aber Ihr Computer kann ggf. nur eine davon verwenden. Probieren Sie daher jede aus.

Eine alternative Methode ist die Verwendung des Dienstprogramms curl, um einen Dritten zu kontaktieren, der Ihnen sagt, wie ihm Ihr Server angezeigt wird. Dazu wird ein bestimmter Server nach Ihrer IP-Adresse gefragt:

  1. curl http://icanhazip.com

Unabhängig davon, wie Sie Ihre IP-Adresse in Erfahrung bringen, geben Sie sie in die Adressleiste Ihres Webbrowsers ein, um die Standard-Apache-Seite zu sehen.

Schritt 2 — Installation von MySQL

Nachdem Sie nun einen funktionierenden Webserver eingerichtet haben, müssen Sie das Datenbanksystem installieren, um Daten für Ihre Website speichern und verwalten zu können. MySQL ist ein beliebtes Datenbank-Managementsystem, das in PHP-Umgebungen zum Einsatz kommt.

Verwenden Sie auch hier wieder apt zur Beschaffung und Installation der Software:

  1. sudo apt install mysql-server

Wenn Sie dazu aufgefordert werden, bestätigen Sie die Installation, indem Sie Y eingeben und dann ENTER drücken.

Sobald die Installation abgeschlossen ist, empfehlen wir, ein Sicherheitsskript auszuführen, das in MySQL vorinstalliert ist. Dieses Skript entfernt einige unsichere Standardeinstellungen und sperrt den Zugriff auf Ihr Datenbanksystem. Starten Sie das interaktive Skript, indem Sie Folgendes ausführen:

  1. sudo mysql_secure_installation

Sie werden gefragt, ob Sie das VALIDATE PASSWORD PLUGIN konfigurieren möchten.

Anmerkung: Die Aktivierung dieser Funktion bleibt Ihnen überlassen. Sollten Sie sie aktivieren, werden Passwörter, die nicht den angegebenen Kriterien entsprechen, als Fehler von MySQL abgelehnt. Sie können die Validierung deaktiviert lassen, aber sollten immer starke, eindeutige Passwörter für die Datenbankinformationen verwenden.

Geben Sie Y für Ja oder etwas Anderes ein, um ohne Aktivierung weiterzumachen.

VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?

Press y|Y for Yes, any other key for No:

Wenn Sie mit „ja“ antworten, werden Sie dazu aufgefordert, eine Stufe der Passwortvalidierung zu wählen. Denken Sie daran, dass die Auswahl von 2 als stärkste Validierungsstufe Fehler ergibt, wenn Sie ein Passwort ohne Zahlen, Buchstaben, Klein- oder Großbuchstaben und Sonderzeichen einrichten oder eines aus geläufigen Wörtern aus einem Wörterbuch.

There are three levels of password validation policy:

LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary              file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1

Unabhängig davon, ob Sie sich für die Einrichtung des VALIDATE PASSWORD PLUGIN entschieden haben, wird der Server Sie als nächstes auffordern, ein Passwort für den MySQL-Benutzer root zu wählen und zu bestätigen. Verwechseln Sie dies nicht mit dem Benutzer system root. Der database root-Benutzer ist ein administrativer Benutzer mit vollen Berechtigungen über das Datenbank-System. Zwar entbindet die Standardauthentifizierungsmethode für den MySQL-Benutzer root von der Verwendung eines Passworts, selbst wenn eines festgelegt ist, doch sollten Sie hier als zusätzliche Sicherheitsmaßnahme ein starkes Passwort definieren. Darüber werden wir in einem Moment sprechen.

Wenn Sie Passwortvalidierung aktiviert haben, wird Ihnen die Passwortstärke des soeben eingegebenen root-Passworts angezeigt und Sie werden gefragt, ob Sie das Passwort beibehalten möchten. Wenn Sie mit Ihrem aktuellen Passwort zufrieden sind, geben Sie in der Eingabeaufforderung Y für „ja“ ein:

Estimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y

Drücken Sie bei den restlichen Fragen auf Y und bei jeder Eingabeaufforderung die ENTER. Damit werden einige anonyme Benutzer und die Testdatenbank entfernt, Remote-root-Logins deaktiviert und diese neuen Regeln geladen, damit MySQL die Änderungen, die Sie gerade vorgenommen haben, unverzüglich anwendet.

Wenn Sie damit fertig sind, testen Sie, ob Sie sich bei der MySQL-Konsole anmelden können, indem Sie Folgendes eingeben:

  1. sudo mysql

Damit wird eine Verbindung zum MySQL-Server als administrativer Datenbank-Benutzer root hergestellt, was durch Nutzung von sudo abgeleitet wird, wenn dieser Befehl ausgeführt wird. Sie sollten eine Ausgabe wie diese sehen:

Output
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 22 Server version: 8.0.19-0ubuntu5 (Ubuntu) Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>

Um die MySQL-Konsole zu beenden, geben Sie Folgendes ein:

  1. exit

Beachten Sie, dass Sie kein Passwort angeben mussten, um als root-Benutzer eine Verbindung herzustellen, obwohl Sie bei der Ausführung des Skripts mysql_secure_installation ein Passwort festgelegt haben. Das liegt daran, dass die standardmäßige Authentifizierungsmethode für den administrativen MySQL-Benutzer unix_socket lautet und nicht password. Auch wenn es zunächst wie ein Sicherheitsproblem aussehen mag, wird der Datenbankserver dadurch sicherer, da sich nur die Systembenutzer mit sudo-Berechtigungen über die Konsole oder über eine Anwendung, die mit den gleichen Berechtigungen ausgeführt wird, als root-MySQL-Benutzer anmelden dürfen. Praktisch bedeutet dies, dass Sie den administrativer Datenbank-root-Benutzer nicht verwenden können, um sich von Ihrer PHP-Anwendung zu verbinden. Das Einrichten eines Passworts für das root-MySQL-Konto funktioniert als Schutz für den Fall, dass die Standardauthentifizierungsmethode von unix_socket in passwort geändert wird.

Um die Sicherheit zu erhöhen, richten Sie am besten für jede Datenbank zugeordnete Benutzerkonten mit weniger expansiven Berechtigungen ein, insbesondere dann, wenn Sie mehrere Datenbanken auf Ihrem Server hosten möchten.

Anmerkung: Zum Zeitpunkt der Verfassung dieses Dokuments unterstützt die native MySQL-PHP-Bibliothek mysqlnd keine caching_sha2_authentication, die standardmäßige Authentifizierungsmethode für MySQL 8. Wenn Sie Datenbankbenutzer für PHP-Anwendungen unter MySQL 8 erstellen, müssen Sie sie daher so konfigurieren, dass sie stattdessen mysql_native_password verwenden. In Schritt 6 zeigen wir, wie das geht.

Ihr MySQL-Server ist nun installiert und gesichert. Als Nächstes installieren wir PHP, die letzte Komponente im LAMP-Stack.

Schritt 3 — Installieren von PHP

Sie haben Apache zur Bereitstellung Ihrer Inhalte und MySQL zur Speicherung und Verwaltung Ihrer Daten installiert. PHP ist die Komponente unserer Einrichtung, die Code verarbeitet, um dynamische Inhalte für den Endbenutzer anzuzeigen. Zusätzlich zum php-Paket benötigen Sie php-mysql, ein PHP-Modul, das PHP die Kommunikation mit MySQL-basierten Datenbanken ermöglicht. Außerdem benötigen Sie libapache2-mod-php, damit Apache PHP-Dateien verarbeiten kann. Core-PHP-Pakete werden automatisch als Abhängigkeiten installiert.

Um diese Pakete zu installieren, führen Sie Folgendes aus:

  1. sudo apt install php libapache2-mod-php php-mysql

Sobald die Installation abgeschlossen ist, können Sie folgenden Befehl ausführen, um Ihre PHP-Version zu prüfen:

  1. php -v
Output
PHP 7.4.3 (cli) (built: Mar 26 2020 20:24:23) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies with Zend OPcache v7.4.3, Copyright (c), by Zend Technologies

Nun ist Ihr LAMP-Stack voll einsatzbereit. Bevor Sie aber Ihre Einrichtung mit einem PHP-Skript testen können, ist es am besten, einen richtigen virtuellen Apache-Host für die Speicherung der Dateien und Ordner Ihrer Website einzurichten. Das tun wir im nächsten Schritt.

Schritt 4 — Erstellen eines virtuellen Hosts für Ihre Website

Wenn Sie den Apache-Webserver verwenden, können Sie virtuelle Hosts (ähnlich wie Serverblocks in Nginx) einrichten, um Konfigurationsdaten einzuschließen und mehr als eine Domäne auf einem Server zu hosten. In diesem Leitfaden richten wir eine Domäne namens your_domain ein, aber Sie sollten diesen Namen durch Ihren eigenen Domänenamen ersetzen.

Anmerkung: Falls Sie DigitalOcean als DNS-Hosting-Anbieter verwenden, konsultieren Sie unsere Produktdokumente für detaillierte Anweisungen, wie Sie einen neuen Domänenamen einrichten und ihn auf Ihren Server verweisen.

Apache unter Ubuntu 20.04 hat einen Serverblock, der standardmäßig aktiviert und so konfiguriert ist, dass er Dokumente aus dem /var/www/html-Verzeichnis bereitstellt. Das eignet sich gut für eine Site, kann aber umständlich werden, wenn Sie mehrere Sites hosten. Statt /var/www/html zu ändern, erstellen wir eine Verzeichnisstruktur innerhalb von /var/www für die Site your_domain und belassen dabei /var/www/html als Standardverzeichnis, das genutzt wird, wenn eine Clientanfrage keine übereinstimmenden Sites ergibt.

Erstellen Sie das Verzeichnis für your_domain wie folgt:

  1. sudo mkdir /var/www/your_domain

Als Nächstes weisen Sie die Eigentumsrechte des Verzeichnisses mit der Umgebungsvariablen $USER zu, die auf Ihren aktuellen Systembenutzer verweisen wird:

  1. sudo chown -R $USER:$USER /var/www/your_domain

Öffnen Sie dann mit Ihrem bevorzugten Befehlszeileneditor eine neue Konfigurationsdatei im Verzeichnis sites-available von Apache. Wir verwenden hier nano:

  1. sudo nano /etc/apache2/sites-available/your_domain.conf

Dadurch wird eine neue Leerdatei erstellt. Fügen Sie die folgende Basiskonfiguration ein:

/etc/apache2/sites-available/your_domain.conf
<VirtualHost *:80>
    ServerName your_domain
    ServerAlias www.your_domain
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/your_domain
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Mit dieser VirtualHost-Konfiguration weisen wir Apache an, your_domain mit /var/www/your_domain als Web-Stammverzeichnis bereitzustellen. Wenn Sie Apache ohne Domänennamen testen möchten, können Sie die Optionen ServerName und ServerAlias entfernen oder auskommentieren, indem Sie am Anfang der Zeilen jeder Option ein #-Zeichen hinzufügen.

Sie können nun a2ensite verwenden, um den neuen virtuellen Host zu aktivieren:

  1. sudo a2ensite your_domain

Vielleicht möchten Sie die Standard-Website, die mit Apache installiert wird, deaktivieren. Das ist erforderlich, wenn Sie keinen benutzerdefinierten Domänennamen verwenden, da in dem Fall die Standardkonfiguration von Apache Ihren virtuellen Host überschreiben würde. Um die Standard-Website von Apache zu deaktivieren, geben Sie Folgendes ein:

  1. sudo a2dissite 000-default

Um sicherzustellen, dass Ihre Konfigurationsdatei keine Syntaxfehler enthält, führen Sie Folgendes aus:

  1. sudo apache2ctl configtest

Schließlich laden Sie Apache neu, damit diese Änderungen wirksam werden:

  1. sudo systemctl reload apache2

Ihre neue Website ist nun aktiv, aber der Web-Stamm /var/www/your_domain ist immer noch leer. Erstellen Sie an diesem Ort eine index.html-Datei, damit wir testen können, ob der virtuelle Host wie erwartet funktioniert:

  1. nano /var/www/your_domain/index.html

Fügen Sie in die Datei folgenden Inhalt ein:

/var/www/your_domain/index.html
<h1>It works!</h1>

<p>This is the landing page of <strong>your_domain</strong>.</p>

Greifen Sie jetzt über Ihren Browser erneut auf den Domänenamen oder die IP-Adresse Ihres Servers zu:

http://server_domain_or_IP

Sie sehen in etwa folgende Seite:

Test für einen virtuellen Apache Host

Wenn Sie diese Seite sehen, bedeutet das, dass Ihr virtueller Apache-Host wie erwartet funktioniert.

Sie können diese Datei als temporäre Zielseite für Ihre Anwendung so lange belassen, bis Sie sie durch eine index.php-Datei ersetzen. Vergessen Sie in dem Fall nicht, die Datei index.html aus Ihrem Dokumentstamm zu entfernen oder umzubenennen, da sie standardmäßig Vorrang gegenüber einer index.php-Datei erhalten würde.

Hinweis zu DirectoryIndex in Apache

Mit den Standardeinstellungen von DirectoryIndex in Apache wird eine Datei namens index.html immer Vorrang gegenüber einer index.php-Datei erhalten. Das ist für die Einrichtung von Wartungsseiten in PHP-Anwendungen nützlich, da eine temporäre Datei index.html erstellt wird, die eine Informationsmeldung für Besucher enthält. Da diese Seite Vorrang gegenüber der Seite index.php hat, wird sie dann zur Zielseite für die Anwendung. Sobald die Wartung abgeschlossen ist, wird die Datei index.html umbenannt oder aus dem Dokumentenstamm entfernt. Damit kehrt die regelmäßige Anwendungsseite zurück.

Wenn Sie dieses Verhalten ändern möchten, müssen Sie die Datei /etc/apache2/mods-enabled/dir.conf bearbeiten und die Reihenfolge ändern, in der die Datei index.php in der Anweisung DirectoryIndex aufgeführt ist:

  1. sudo nano /etc/apache2/mods-enabled/dir.conf
/etc/apache2/mods-enabled/dir.conf
<IfModule mod_dir.c>
        DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>

Nach dem Speichern und Schließen der Datei müssen Sie Apache neu laden, damit die Änderungen wirksam werden:

  1. sudo systemctl reload apache2

Im nächsten Schritt erstellen wir ein PHP-Skript, um zu testen, ob PHP auf Ihrem Server korrekt installiert und konfiguriert wurde.

Schritt 5 — Test der PHP-Verarbeitung auf Ihrem Webserver

Nachdem Sie nun über einen benutzerdefinierten Speicherort zum Hosten der Dateien und Ordner Ihrer Website verfügen, erstellen wir ein PHP-Testskript, um zu prüfen, ob Apache Anfragen nach PHP-Dateien bewältigen und verarbeiten kann.

Erstellen Sie eine neue Datei namens info.php in Ihrem benutzerdefinierten Web-Stammordner:

  1. nano /var/www/your_domain/info.php

Damit wird eine leere Datei geöffnet. Fügen Sie der Datei den folgenden Text, d. h. den gültigen PHP-Code, hinzu:

/var/www/your_domain/info.php
<?php
phpinfo();

Wenn Sie dies abgeschlossen haben, speichern und schließen Sie die Datei.

Um das Skript zu testen, rufen Sie in Ihrem Webbrowser den Domänenamen oder die IP-Adresse Ihres Servers auf, gefolgt vom Skriptnamen (in diesem Fall info.php):

http://server_domain_or_IP/info.php

Sie sehen eine Seite, die so ähnlich wie die folgende aussieht:

Ubuntu 20.04 PHP-Informationen

Diese Seite liefert Informationen über Ihren Server aus der Sicht von PHP. Sie ist zum Debuggen nützlich und um sicherzustellen, dass Ihre Einstellungen korrekt angewendet werden.

Wenn Sie diese Seite in Ihrem Browser sehen können, funktioniert Ihre PHP-Installation wie erwartet.

Nachdem Sie über diese Seite die relevanten Informationen zu Ihrem PHP-Server überprüft haben, ist es am besten, die von Ihnen erstellte Datei zu entfernen, da sie sensible Informationen über Ihre PHP-Umgebung und Ihren Ubuntu-Server enthält. Sie können dazu rm verwenden:

  1. sudo rm /var/www/your_domain/info.php

Sie können diese Seite immer wieder neu erstellen, wenn Sie später auf die Informationen zugreifen müssen.

Schritt 6 — Testen der Datenbankverbindung von PHP (optional)

Wenn Sie testen möchten, ob PHP eine Verbindung mit MySQL herstellen und Datenbankabfragen ausführen kann, können Sie eine Testtabelle mit Pseudodaten erstellen und die Inhalte mit einem PHP-Skript abfragen. Zuvor müssen wir eine Testdatenbank und einen neuen MySQL-Benutzer erstellen, der für den Zugriff richtig konfiguriert ist.

Zum Zeitpunkt der Verfassung dieses Dokuments unterstützt die native MySQL-PHP-Bibliothek mysqlnd nicht caching_sha2_authentication, die standardmäßige Authentifizierungsmethode für MySQL 8. Wir müssen einen neuen Benutzer mit der Authentifizierungsmethode mysql_native_password erstellen, um über PHP eine Verbindung zur MySQL-Datenbank herzustellen.

Wir erstellen eine Datenbank namens example_database und einen Benutzer namens example_user. Sie können diese Namen jedoch durch andere Werte ersetzen.

Stellen Sie zuerst unter Verwendung des root-Kontos eine Verbindung zur MySQL-Konsole her:

  1. sudo mysql

Um eine neue Datenbank zu erstellen, führen Sie den folgenden Befehl über Ihre MySQL-Konsole aus:

  1. CREATE DATABASE example_database;

Jetzt können Sie einen neuen Benutzer erstellen und ihm volle Berechtigungen auf der benutzerdefinierten Datenbank gewähren, die Sie gerade erstellt haben:

Der folgende Befehl erstellt einen neuen Benutzer namens example_user, wobei mysql_native_password als standardmäßige Authentifizierungsmethode dient. Wir definieren das Passwort dieses Benutzers als password, aber Sie sollten diesen Wert durch ein sicheres Passwort Ihrer Wahl ersetzen:

  1. CREATE USER 'example_user'@'%' IDENTIFIED WITH mysql_native_password BY 'password';

Nun müssen wir diesem Benutzer eine Berechtigung für die Datenbank example_database erteilen:

  1. GRANT ALL ON example_database.* TO 'example_user'@'%';

Damit werden dem Benutzer example_user volle Berechtigungen über die Datenbank example_database gewährt, während dieser Benutzer gleichzeitig daran gehindert wird, andere Datenbanken auf Ihrem Server zu erstellen oder zu ändern.

Beenden Sie nun die MySQL-Shell mit:

  1. exit

Sie können testen, ob der neue Benutzer die richtigen Berechtigungen hat, indem Sie sich erneut bei der MySQL-Konsole anmelden, diesmal mit den benutzerdefinierten Anmeldedaten:

  1. mysql -u example_user -p

Beachten Sie das -p-Flag in diesem Befehl, das Sie nach dem Passwort fragt, das Sie bei der Erstellung des Benutzers example_user gewählt haben. Nach der Anmeldung bei der MySQL-Konsole bestätigen Sie, dass Sie Zugriff auf die Datenbank example_database haben:

  1. SHOW DATABASES;

Damit erhalten Sie die folgende Ausgabe:

Output
+--------------------+ | Database | +--------------------+ | example_database | | information_schema | +--------------------+ 2 rows in set (0.000 sec)

Als Nächstes erstellen wir eine Testtabelle namens todo_list. Führen Sie die folgende Anweisung in der MySQL-Konsole aus:

  1. CREATE TABLE example_database.todo_list (
  2. item_id INT AUTO_INCREMENT,
  3. content VARCHAR(255),
  4. PRIMARY KEY(item_id)
  5. );

Geben Sie einige Zeilen an Inhalt in die Testtabelle ein. Sie können den nächsten Befehl ein paar Mal wiederholen, indem Sie verschiedene Werte verwenden:

  1. INSERT INTO example_database.todo_list (content) VALUES ("My first important item");

Um zu bestätigen, dass die Daten erfolgreich in Ihrer Tabelle gespeichert wurden, führen Sie Folgendes aus:

  1. SELECT * FROM example_database.todo_list;

Sie sehen die folgende Ausgabe:

Output
+---------+--------------------------+ | item_id | content | +---------+--------------------------+ | 1 | My first important item | | 2 | My second important item | | 3 | My third important item | | 4 | and this one more thing | +---------+--------------------------+ 4 rows in set (0.000 sec)

Nachdem Sie bestätigt haben, dass Sie gültige Daten in Ihrer Testtabelle haben, können Sie die MySQL-Konsole verlassen:

  1. exit

Sie können nun das PHP-Skript erstellen, das sich mit MySQL verbindet, und Ihre Inhalte abfragen. Erstellen Sie mit Ihrem bevorzugten Editor eine neue PHP-Datei in Ihrem benutzerdefinierten Web-Stammverzeichnis. Verwenden Sie hierzu nano:

  1. nano /var/www/your_domain/todo_list.php

Das folgende PHP-Skript verbindet sich mit der MySQL-Datenbank und fragt den Inhalt der Tabelle todo_list ab, wobei die Ergebnisse in einer Liste angezeigt werden. Wenn ein Problem mit der Datenbankverbindung besteht, wird eine Ausnahme ausgelöst. Kopieren Sie diesen Inhalt in Ihr todo_list.php-Skript:

/var/www/your_domain/todo_list.php
<?php
$user = "example_user";
$password = "password";
$database = "example_database";
$table = "todo_list";

try {
  $db = new PDO("mysql:host=localhost;dbname=$database", $user, $password);
  echo "<h2>TODO</h2><ol>";
  foreach($db->query("SELECT content FROM $table") as $row) {
    echo "<li>" . $row['content'] . "</li>";
  }
  echo "</ol>";
} catch (PDOException $e) {
    print "Error!: " . $e->getMessage() . "<br/>";
    die();
}

Speichern und schließen Sie die Datei, wenn die Bearbeitung abgeschlossen ist.

Sie können diese Seite nun in Ihrem Webbrowser aufrufen, indem Sie den Domänenamen oder die öffentliche IP-Adresse für Ihre Website aufrufen, gefolgt von /todo_list.php:

http://your_domain/todo_list.php

Sie sollten nun eine Seite ähnlich wie diese sehen, die den Inhalt anzeigt, den Sie in Ihre Testtabelle eingefügt haben:

Beispiel PHP To-Do-List

Das bedeutet, dass Ihre PHP-Umgebung bereit dazu ist, sich mit Ihrem MySQL-Server zu verbinden und zu interagieren.

Zusammenfassung

In diesem Leitfaden haben wir eine flexible Basis für die Bereitstellung von PHP-Webseiten und -Anwendungen für Ihre Besucher eingerichtet, wobei Apache als Webserver und MySQL als Datenbanksystem dienen.

Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

Learn more about our products

About the authors
Default avatar

Developer Advocate

Dev/Ops passionate about open source, PHP, and Linux.

Still looking for an answer?

Ask a questionSearch for more help

Was this helpful?
 
2 Comments


This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

Emin is Fettsack

Hamid Genauso

Lg

Dero el Mero

Hi,

When I try to setup a root password for the MySQL server following this guide I always get the following error message:

… Failed! Error: SET PASSWORD has no significance for user ‘root’@‘localhost’ as the authentication method used doesn’t store authentication data in the MySQL server. Please consider using ALTER USER instead if you want to change authentication parameters.

So I can´t proceed with the installation. It would be good if this guideline could be changed and explained, what has to be done exactly to solve this problem. Thanks!

Try DigitalOcean for free

Click below to sign up and get $200 of credit to try our products over 60 days!

Sign up

Join the Tech Talk
Success! Thank you! Please check your email for further details.

Please complete your information!

Become a contributor for community

Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.

DigitalOcean Documentation

Full documentation for every DigitalOcean product.

Resources for startups and SMBs

The Wave has everything you need to know about building a business, from raising funding to marketing your product.

Get our newsletter

Stay up to date by signing up for DigitalOcean’s Infrastructure as a Newsletter.

New accounts only. By submitting your email you agree to our Privacy Policy

The developer cloud

Scale up as you grow — whether you're running one virtual machine or ten thousand.

Get started for free

Sign up and get $200 in credit for your first 60 days with DigitalOcean.*

*This promotional offer applies to new accounts only.