# PhpMyAdmin 8.2 Installation

### PhpMyAdmin, PHP 8, Apache2 und MySQL Installation

### Falls Sie es noch nicht getan haben, laden Sie das Programm [PuTTY](https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html) herunter.

Verbinden Sie sich mithilfe von PuTTY via SSH mit Ihrem Root- oder vServer. Hierfür öffnen Sie PuTTY und geben im Textfeld "Host Name (or IP address)"\
die Domain oder IP-Adresse Ihres Servers ein. Klicken Sie anschließend unten auf "OK".

* Aktualisieren Sie nun Ihre Paketlisten und Installieren Sie jetzt möglicherweise verfügbare Updates der auf Ihrem Server bereits installieren Pakete mit dem Befehl.

```bash
apt update && apt upgrade -y
```

* Als nächstes installieren Sie Pakete, die für die weiteren Installationen benötigt werden, mit folgendem Befehl:

```bash
apt install ca-certificates apt-transport-https lsb-release gnupg curl nano unzip -y
```

Wähle dein Betriebssystem aus.\
Solltest du nicht wissen, welches Betriebssystem du verwendest, kannst du dies mit dem Befehl nachschauen.

```bash
cat /etc/issue
```

{% tabs %}
{% tab title="Debian" %}

* Fügen Sie die für die Installation von PHP 8 benötigte Paketquelle hinzu:

```bash
curl -fsSL https://packages.sury.org/php/apt.gpg -o /usr/share/keyrings/php-archive-keyring.gpg
```

```bash
echo "deb [signed-by=/usr/share/keyrings/php-archive-keyring.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list
```

{% endtab %}

{% tab title="Ubuntu" %}

* Füge die Paket-Quelle für die PHP8.2 Version hinzu.

```bash
apt install software-properties-common -y
```

```bash
add-apt-repository ppa:ondrej/php
```

{% endtab %}
{% endtabs %}

* Aktualisieren Sie nun erneut Ihre Paketlisten mit dem Befehl

```bash
apt update
```

* Installieren Sie den Apache2-Webserver sowie weitere benötigte Pakete mit folgendem Befehl:

```bash
apt install apache2 -y
```

* Installieren Sie anschließend PHP 8 sowie einige wichtige PHP-Module. Der Befehl hierfür lautet:

```bash
apt install php8.2 php8.2-cli php8.2-common php8.2-curl php8.2-gd php8.2-intl php8.2-mbstring php8.2-mysql php8.2-opcache php8.2-readline php8.2-xml php8.2-xsl php8.2-zip php8.2-bz2 libapache2-mod-php8.2 -y
```

* Installiere MySQL

```bash
apt install mariadb-server mariadb-client -y
```

Schließe die MySQL Installation ab

{% tabs %}
{% tab title="Debian 10 & Ubuntu" %}
Geben Sie nun den Befehl

```bash
mysql_secure_installation
```

ein. Bei der ersten Abfrage des aktuellen Passworts müssen Sie nichts eingeben, sondern einfach die Enter-Taste drücken. Bestätigen Sie die nächste Frage bzgl. der Änderung des Root-Passworts mit Enter. Nun müssen Sie ein Passwort für den Root-Benutzer des MariaDB-Servers vergeben. Während der Eingabe erscheinen keine Zeichen, das ist jedoch normal. Bestätigen Sie alle darauffolgenden Fragen (Löschung des anonymen Benutzers, Verbieten des externen Root-Logins aus Sicherheitsgründen, Entfernen der Testdatenbank und Aktualisieren der Rechte) ebenfalls mit Enter. Danach ist der MariaDB-Server fertig installiert und konfiguriert.
{% endtab %}

{% tab title="Debian 11" %}
Geben Sie nun den Befehl

```bash
mysql_secure_installation
```

ein. Bei der ersten Abfrage des aktuellen Passworts müssen Sie nichts eingeben, sondern einfach die Enter-Taste drücken. Geben Sie bei der anschließenden Frage bzgl. des Wechsels zur Unix-Socket-Authentifizierung **'n'** ein und drücken Sie die Enter-Taste. Bestätigen Sie die nächste Frage bzgl. der Änderung des Root-Passworts mit Enter. Nun müssen Sie ein Passwort für den Root-Benutzer des MariaDB-Servers vergeben. Während der Eingabe erscheinen keine Zeichen, das ist jedoch normal. Bestätigen Sie alle darauffolgenden Fragen (Löschung des anonymen Benutzers, Verbieten des externen Root-Logins aus Sicherheitsgründen, Entfernen der Testdatenbank und Aktualisieren der Rechte) ebenfalls mit Enter. Danach ist der MariaDB-Server fertig installiert und konfiguriert.
{% endtab %}
{% endtabs %}

* Wechseln Sie mit dem Befehl

```bash
cd /usr/share
```

in das Verzeichnis, in dem phpMyAdmin installiert wird.

* Um phpMyAdmin herunterzuladen, führen Sie nun den Befehl aus

```bash
wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.zip -O phpmyadmin.zip
```

* Entpacken Sie das soeben heruntergeladene Archiv mit dem folgenden Befehl:

```bash
unzip phpmyadmin.zip
```

* Entfernen Sie das heruntergeladene Archiv, welches nun bereits entpackt ist, mit dem Befehl

```bash
rm phpmyadmin.zip
```

* Anschließend müssen Sie den Namen des entpackten Verzeichnisses zu **"phpmyadmin"** umbenennen. Dies machen Sie mit folgendem Befehl:

```bash
mv phpMyAdmin-*-all-languages phpmyadmin
```

* Vergeben Sie anschließend die benötigten Rechte auf das phpMyAdmin-Verzeichnis mithilfe des Befehls

```bash
chmod -R 0755 phpmyadmin
```

* Erstellen Sie nun eine Apache2-Konfigurationsdatei für phpMyAdmin, indem Sie den Befehl ausführen.

```bash
nano /etc/apache2/conf-available/phpmyadmin.conf
```

* Fügen Sie in diese Konfigurationsdatei nun folgenden Inhalt ein:

```bash
# phpMyAdmin Apache configuration

Alias /phpmyadmin /usr/share/phpmyadmin

<Directory /usr/share/phpmyadmin>
    Options SymLinksIfOwnerMatch
    DirectoryIndex index.php
</Directory>

# Disallow web access to directories that don't need it
<Directory /usr/share/phpmyadmin/templates>
    Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/libraries>
    Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/setup/lib>
    Require all denied
</Directory>
```

Speichern Sie Ihre Änderungen der Konfiguration, indem Sie **STRG + X, danach die "Y"-Taste und anschließend Enter** drücken.

* Aktivieren Sie die soeben hinzugefügte Apache2-Konfigurationsdatei mit dem Befehl

```bash
a2enconf phpmyadmin 
```

und führen daraufhin den Befehl

```bash
systemctl reload apache2
```

zum Neuladen des Apache2-Webservers aus.

* Erstellen Sie das temporäre Verzeichnis, welches phpMyAdmin benötigt, indem Sie den Befehl ausführen.

```bash
mkdir /usr/share/phpmyadmin/tmp/
```

* Geben Sie dem Webserver-Benutzer nun die benötigten Besitzerrechte für dieses temporäre Verzeichnis mithilfe des Befehls

```bash
chown -R www-data:www-data /usr/share/phpmyadmin/tmp/
```

### Hinweis: Bis einschließlich Debian 10 sowie unter Ubuntu können Sie sich aus Sicherheitsgründen mithilfe der Passwort-Authentifizierung beim MariaDB-Server standardmäßig nicht als Root-Nutzer anmelden (z.B. über phpMyAdmin). Unter Debian 11 ist dies jedoch möglich. Falls Sie nicht Debian 11 verwenden, führen Sie die nachfolgenden Schritte durch, um die Root-Anmeldung mittels Passwort zu erlauben.

* Bis einschließlich Debian 10 oder für Ubuntu:

1. Melden Sie sich in PuTTY mithilfe des Befehls am MariaDB-Server an.

```bash
mysql -u root
```

2.Führen Sie die Befehle aus. Hiermit ändern Sie das Authentifizierungsplugin des Root-Benutzers vom UNIX-Socket wieder auf die Standard-Authentifizierung.

```bash
UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE user = 'root' AND plugin = 'unix_socket'; 
FLUSH PRIVILEGES;
```

3. Beenden Sie die MariaDB-Konsole abschließend mit dem Befehl.

```bash
exit
```

Ihr Apache2-Webserver inkl. PHP 8, MariaDB-Server und phpMyAdmin ist nun einsatzbereit. Das Web-Verzeichnis befindet sich standardmäßig unter **"/var/www/html/"**. Die phpMyAdmin-Weboberfläche erreichen Sie, indem Sie hinter der IP-Adresse oder Domain Ihres Servers im Browser **"/phpmyadmin"** anhängen.\
Dort können Sie sich jetzt am MariaDB-Server anmelden.

### Datenbank von außen erreichbar machen

Standardmäßig erlaubt eine MySQL-Datenbank nur Zugriffe durch den eigenen Server (`localhost`). Um ebenso Zugriffe von außerhalb zu erlauben, musst du mit

```bash
nano /etc/mysql/mariadb.conf.d/50-server.cnf
```

in die Konfigurationsdatei deiner Datenbank und den Punkt `bind-adress = 127.0.0.1` auf `0.0.0.0` ändern, sodass es am Ende folgendermaßen aussieht:

```bash
bind-adress = 0.0.0.0
```

Speichern Sie Ihre Änderungen der Konfiguration, indem Sie **STRG + X, danach die "Y"-Taste und anschließend Enter** drücken.

Danach musst du lediglich deine Datenbank neustarten, sodass die Änderungen wirksam werden (`service mysql restart`).

## Datenbank mit UFW absichern

Um deine Datenbank von außen abzusichern, kannst du das über die FireWall **UFW** machen:

Dafür installierst du dir erstmals **UFW** auf deinem Server mit folgendem Befehl:

```bash
apt install ufw -y
```

Danach geben wir die Standart Port nach außen offen ( SSH, HTTP, HTTPS ):

```bash
ufw allow 22
ufw allow 443
ufw allow 80
```

Danach aktivieren wir die UFW:

```bash
ufw enable
```

einfach mit **Y** bestätigen

Nun Aktivieren wir UFW für die Datenbank:

```bash
ufw allow from DEINE-IP to any port 3306
```

Nach dem du das eingefügt hast kann nur die IP auf dem Server zugreifen die in der Liste steht


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.mc-host24.de/docs/rootserver/phpmyadmin-php-8-installation.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
