====== phpMyAdmin ====== [[werkzeuge:start|← Werkzeuge]] · [[:start|Startseite]] ---- phpMyAdmin ist eine webbasierte Benutzeroberfläche zur Verwaltung von MySQL- und MariaDB-Datenbanken. In meiner lokalen Entwicklungsumgebung wird phpMyAdmin zusammen mit **XAMPP** verwendet. Es eignet sich insbesondere zum Anzeigen und Kontrollieren von Datenbanken, Tabellen, Datensätzen, Benutzerrechten und SQL-Abfragen. ===== Aufruf unter XAMPP ===== Nach dem Start von Apache und MariaDB kann phpMyAdmin normalerweise im Browser aufgerufen werden: http://localhost/phpmyadmin/ phpMyAdmin selbst ist keine Datenbank. Es stellt lediglich eine grafische Oberfläche für den Zugriff auf MySQL bzw. MariaDB bereit. ---- ===== Grundaufbau ===== Die Oberfläche besteht im Wesentlichen aus: * Serverübersicht * Datenbankliste * Tabellenübersicht * Strukturansicht * Datenansicht * SQL-Eingabe * Import und Export * Benutzerkonten und Berechtigungen Nach Auswahl einer Datenbank werden deren Tabellen und weitere Eigenschaften angezeigt. ---- ===== Datenbanken anzeigen ===== In der linken Navigation werden die verfügbaren Datenbanken angezeigt. Nach Auswahl einer Datenbank können unter anderem betrachtet werden: * Tabellen * Spalten * Indizes * Fremdschlüssel * Datensätze * Zeichensatz und Kollation Bei RoWaBase ist insbesondere die Datenbank: rowabase relevant. ---- ===== Tabellenstruktur kontrollieren ===== Über den Bereich **Struktur** kann geprüft werden, welche Spalten eine Tabelle besitzt. Angezeigt werden beispielsweise: * Spaltenname * Datentyp * NULL-Eigenschaft * Standardwert * Index * Auto Increment Das ist hilfreich, um nach einer Laravel-Migration zu kontrollieren, ob die erwartete Tabellenstruktur tatsächlich vorhanden ist. ---- ===== Datensätze anzeigen ===== Über **Anzeigen** können die gespeicherten Datensätze einer Tabelle betrachtet werden. Dies eignet sich beispielsweise zur Kontrolle von Testdaten, die über Laravel Tinker erzeugt wurden. Beispiel: php artisan tinker Ein dort gespeicherter Datensatz kann anschließend in phpMyAdmin kontrolliert werden. ---- ===== SQL-Abfragen ===== phpMyAdmin besitzt einen eigenen Bereich **SQL**. Dort können SQL-Anweisungen direkt ausgeführt werden. Beispiel: SELECT * FROM geschaeftspartner; Oder: SELECT * FROM objekte ORDER BY id; Direkte SQL-Abfragen sind besonders für Kontrollen und gezielte Auswertungen hilfreich. ---- ===== Vorsicht bei direkten Änderungen ===== phpMyAdmin erlaubt auch direkte Änderungen an Tabellen und Datenbankstrukturen. Dazu gehören beispielsweise: * Spalten hinzufügen * Spalten löschen * Tabellen löschen * Indizes verändern * Datentypen ändern Bei Projekten wie RoWaBase sollten Änderungen an der **Datenbankstruktur jedoch grundsätzlich nicht direkt über phpMyAdmin durchgeführt werden**. Stattdessen werden Laravel-Migrationen verwendet. Beispiel: php artisan make:migration update_geschaeftspartner_grunddaten --table=geschaeftspartner Anschließend: php artisan migrate --database=mysql_migration --pretend und nach der Kontrolle: php artisan migrate --database=mysql_migration Dadurch bleiben Strukturänderungen nachvollziehbar und Bestandteil des Projektstands. ---- ===== phpMyAdmin als Kontrollwerkzeug ===== Für RoWaBase gilt deshalb grundsätzlich: **Laravel verändert die Datenbankstruktur.** **phpMyAdmin dient hauptsächlich zum Ansehen, Prüfen und Analysieren der Datenbank.** Damit vermeiden wir, dass die tatsächliche Datenbankstruktur von den Laravel-Migrationen abweicht. ---- ===== Datenbankbenutzer ===== MariaDB kann unterschiedliche Benutzer mit unterschiedlichen Berechtigungen verwenden. Bei RoWaBase werden die Aufgaben bewusst getrennt. Beispielsweise: rowabase_app für den normalen Anwendungszugriff und eine separate Datenbankverbindung für Migrationen. Die Anwendung benötigt dadurch nicht automatisch Berechtigungen zum Erstellen, Löschen oder Verändern von Tabellen. phpMyAdmin kann zur Kontrolle der vorhandenen Benutzer und Berechtigungen verwendet werden. ---- ===== Benutzerrechte ===== Je nach Benutzer können unterschiedliche Rechte vergeben werden. Beispiele: SELECT INSERT UPDATE DELETE CREATE ALTER DROP INDEX Ein normaler Anwendungsbenutzer benötigt typischerweise nur die Rechte, die für den laufenden Betrieb tatsächlich erforderlich sind. Strukturänderungen können über einen gesonderten Benutzer durchgeführt werden. ---- ===== Import ===== phpMyAdmin kann SQL-Dateien importieren. Typische Anwendungsfälle: * Wiederherstellung einer Datenbank * Übernahme einer vorhandenen Datenbank * Einspielen eines SQL-Dumps Vor einem Import sollte geprüft werden, welche Datenbank ausgewählt ist und welche Tabellen oder Daten durch den Import verändert werden. ---- ===== Export ===== Datenbanken und Tabellen können über phpMyAdmin exportiert werden. Ein häufig verwendetes Format ist: SQL Ein SQL-Export kann sowohl Tabellenstrukturen als auch Daten enthalten. Exporte können beispielsweise für Sicherungen oder zur Analyse einer Datenbank verwendet werden. ---- ===== Zeichensatz und Kollation ===== Bei Datenbanken und Tabellen spielen Zeichensatz und Kollation eine wichtige Rolle. RoWaBase verwendet: utf8mb4 mit: utf8mb4_unicode_ci Dies war beispielsweise auch in der Ausgabe der Laravel-Migrationen sichtbar: default character set utf8mb4 collate 'utf8mb4_unicode_ci' phpMyAdmin ermöglicht eine einfache Kontrolle dieser Einstellungen. ---- ===== AUTO_INCREMENT ===== Primärschlüssel werden in Laravel häufig folgendermaßen definiert: $table->id(); MariaDB erzeugt daraus typischerweise einen automatisch hochgezählten Primärschlüssel. In phpMyAdmin ist dies als: AUTO_INCREMENT erkennbar. ---- ===== NULL und NOT NULL ===== phpMyAdmin zeigt ebenfalls an, ob eine Spalte leer beziehungsweise ''NULL'' sein darf. Laravel: $table->string('vorname')->nullable(); führt beispielsweise zu einer Spalte, die ''NULL'' enthalten darf. Das ist bei RoWaBase insbesondere für das kontaktorientierte Geschäftspartner-Modell wichtig, da dort bewusst nur wenige Angaben zwingend erforderlich sein sollen. ---- ===== Praxis: RoWaBase ===== Bei der Entwicklung von RoWaBase kann phpMyAdmin nach einer Migration zur Kontrolle verwendet werden. Typischer Ablauf: Migration erstellen ↓ Migration bearbeiten ↓ php -l ... ↓ php artisan migrate --database=mysql_migration --pretend ↓ SQL-Ausgabe kontrollieren ↓ php artisan migrate --database=mysql_migration ↓ Tabellenstruktur in phpMyAdmin kontrollieren phpMyAdmin ersetzt dabei weder Laravel-Migrationen noch Git. Es bietet eine zusätzliche Sicht auf den tatsächlichen Zustand der MariaDB-Datenbank. ---- ===== phpMyAdmin und MariaDB ===== phpMyAdmin stellt die grafische Verwaltungsoberfläche bereit. Das eigentliche Datenbanksystem ist bei RoWaBase: [[werkzeuge:mariadb:start|MariaDB]] ---- ===== phpMyAdmin und Laravel ===== Laravel greift über seine Datenbankverbindungen direkt auf MariaDB zu. Migrationen, Models und Eloquent werden dokumentiert unter: [[werkzeuge:laravel:start|Laravel]] ---- ===== phpMyAdmin und XAMPP ===== Die lokale phpMyAdmin-Installation ist Bestandteil der XAMPP-Entwicklungsumgebung. Weitere Informationen: [[werkzeuge:xampp:start|XAMPP]] ---- ===== Merksatz ===== **phpMyAdmin ist bei RoWaBase vor allem das Fenster zur Datenbank.** Strukturänderungen werden über Laravel-Migrationen durchgeführt. phpMyAdmin dient dazu, den tatsächlichen Datenbankzustand anzusehen, zu kontrollieren und bei Bedarf gezielt zu analysieren. [[#phpmyadmin|↑]]