Kategorien-Archiv MySQL Tutorial

PhpMyAdmin – Access denied for user root@localhost

In der Programmiersprache PHP gibt es eine Open-Source-Tool namens PhpMyAdmin, welche die Verwaltung von MySQL behandelt.

Der Zugang kann verweigert werden, wenn der Zugriff auf MySQL durch den root Benutzer beschränkt wurde.

Es erfordert dann ein setzen eines Passwortes und zwar nur einmal. Die Rechte der Root-Benutzer können gleichzeitig zurückgesetzt werden.

Die obige Fehlermeldung sagt dann aus, dass mit dem Root-Zugriff kein Zugang vorhanden ist. Es muss also erst ein Passwort für den Root gesetzt werden.

MySQL Syntax – Grundlagen

Die SQL ist eigentlich im großen und ganzen eine ganz einfache Abfragesprache, man sollte allerdings dabei beachten, dass Befehle in der SQL immer groß geschrieben werden sollten und dessen Werte klein, das ist nicht unbedingt zwingend unter Windows, aber um es einheitlich und für alle verständlich zu machen, ist es dann die beste Lösung sich diesen Stil von Anfang an anzueignen.

Denn unter UNIX-Systemen ist klar, dass die obige vorgestellte Variante nur so funktionieren wird und nicht anderes!

So sieht in der Regel eine Abfrage in MySQL aus:

[BEFEHL][Spalte/n][Tabelle/n][BEDINGUNG][SORTIER-/GRUPPENFUNKTION];
Ein konkretes Beisspiel:

SELECT
name
FROM
'kunde
WHERE name = 'Peter Müller';

So würde es auch gehen:

SELECT
*
FROM
'kunde

WHERE name = 'Peter Müller';

Abgefragt wird aus der Tabelle kunde dann die Spalte name und gesucht wird nach dem Wert ‚Peter Müller‘

Das Sternchen * im zweiten Beispiel wäre Platzhalter für die Spalten in der jeweiligen Tabelle.

Eigentlich Recht einfach, Sie können diese Abfrage auch direkt in unter SQL in der jeweiligen Datenbank/Tabelle mit den passenden Datensätzen unter SQl abfragen.

Normalisierung von Datenbanken

Die Normalisierung von Datenbanken dient zur Optimierung von Datenbankmodellen unter anderem auch des ER-Modell. Mit der standardisierten Methode der Normalisierung von Datenbanken will man erreichen, dass Fehler im Form von Redundanzen vermieden werden.

Die Normalisierung von Datenbanken zahlt sich später wirklich in bare Münze aus:

Unnötiger und doppelter Ballast wird vermieden, optimale Beziehungen von Tabellen und damit passendes und intelligentes setzen der Primärschlüsseln.

Ingesamt gibt es 9 Durchläufe für die Normalisierung von Datenbanken, dabei ist aber zu berücksichtgen, dass in der Regel nur die ersten 3 bis 5 Durchläufe der Normalisierung von Datenbanken durchgeführt werden und zwar aus dem einfachen Grunde, weil zum einem der dritte Durchlauf bis fünfte Druchlauf ( 3. Normalform bis 5. Normalform) völlig ausreichend ist und man in der Regel und vom Prinzip her, dann nicht weiter normalisieren kann, um in die 6. Normalform, also in den sechsten Durchlauf zu kommen, geschweige in die 9. Normalform zu kommen, da es nämlich nicht’s weiter mehr zu normalisieren gibt! 😉

Grunddessen werden hier nur die Vorgaben und Bedingungen für die ersten drei Normalformen beschrieben, dieses reicht vollkommen aus, selbst Informatiker und Fachinformatiker benötigen kaum mehr als die dritte Normalform zur Normalisierung von Datenbanken und Optimierung von Datenbanken.

1. Normalforum:

Sämtliche Werte in den Datensätzen, der jeweiligen Tabellen von den Datenbanken, dürfen nur einmal vorhanden sind, mit anderen Worten und einfach formuliert: Doppelte Werte sind in den Datensätzen tabu. Atomare Attribute müßten somit vorhanden sein und damit sind Mehrfachzuweisungen dann unterbunden.

2. Normalform:

Die Tabelle muss als erstes in der 1. Normalform vorliegen und die zweite Bedingung der zweiten Normalform wäre, dass jedes Attribut in der Tabelle unabhängig vom Primärschlüssel ist.

3. Normalform:

Die Tabelle muss als erstes in der 2. Normalform vorliegen und alle Datenfelder müßen direkt abhängig vom Primärschlüssel sein.

MySQL Tutorial (1): ER-Modell, ERM, Entity-Relationship-Modell

Es ist sinnvoll, dass man einen Datenbankentwurf erstellt bevor man dann im phpMyAdmin die Datenbank, Tabellen, Spalten und Datensätze anlegt. Nur so und nicht anderes, kann man eine Datenbank erstellen, welche dann optimal per Entitäten und Attributen entsprechend optimiert (Normalisierung) ist.

Für einen Datenbankentwurf greift man in der Regel auf das ER-Modell, ERM, Entity-Relationship-Modell zurück. Um das ER-Modell nutzen zu können muß man ein paar Grundlagen kennen, denn nur so, kann man das Entity-Relationship-Modell voll ausschöpfen:

1.) Entitäten

Eine Entität muß im Modell des Datenbankentwurfes ein eigenständiges Objekt, Einheit, oder Explemplar sein, welches dann eindeutig gekennzeichnet werden muß.

Beisspiel:

* Sache -> Kann ein Produkt sein, z.B. ein PKW
* Person, Unternehmen, Institution
* Ereignis -> z.B. Termine, Veranstaltungen
* Dokument

2.) Entitätstyp

Wenn man Entitäten mit gleichen Attributen zusammenfasst, dann spricht man vom Entitätstyp.
Wichtig ist zu wissen, dass Entitäten welche abhängig sind, von tatsächlich existierenden Entitäten, man in diesem Fall von einer Vater-Entität spricht. Zu definieren sind abhängige Entitäten dann schon am Schlüssel, da die abhängigen Entitäten nämlich durch die Vater-Entität den denselben Schlüssel erben. Und von höhster Relevanz ist zu wissen, dass abhängige Entitäten automatisch zu löschen sind, wenn die Vater-Entität gelöscht wird. Beispiel wäre in diesem Fall, dass bei Positionen einer Bestellung, sofern dann eine Stornierung der Bestellung erfolgt, dann müssen die Positionen natürlich komplett, der jeweiligen Bestellung zugeordent, gelöscht werden.

3.) Attribute

Eigenschaften der jeweiligen Entitäten werden als Attribute im ER-Modell bezeichnet. Attribute haben natürlich immer alle einen Namen (Bezeichner). Allerdings ist zu berücksichtigen, dass sich die Bezeichnung immer nur auf dem Anwendungsbereich, der jeweiligen Attribute bezieht, da nämlich das ER-Modell nur einen Teil der Realität vor gibt. Beisspiel: Es unterscheiden sich nämlich die Attribute von Kunden einer Bäckerei, mit den gleichen Personen als Mitarbeiter der Bäckerei! 😉

4.) Beziehungen -> Beziehungstyp

Die Entitäten können untereinander in Beziehung gesetzt werden, damit kann das Verhalten der Entitäten besser definiert werden. Beispiel: Shop verkauft Produkte, oder die Hersteller bieten verschiedene Artikel an usw.

Es gibt drei relevanten Arten von Beziehungstyp für Entitäten im ER-Model und diese lauten wie folgend:

* 1:1 Beziehung

Diese Beziehung wird somit als eindeutig zwischen zwei Tabellen angegeben. Jeder Datensatz von der einen Tabelle besitzt genau eine Verbindung zum anderen Datensatz der anderen Tabellen. Dieses geht natürlich auch nur in einer Tabelle zu handhaben.

* 1:n Beziehung

Hier sind einem Datensatz der einen Tabelle dann mehrere Datensätze von einer anderen Tabelle zugordent. Beisspiel, ein Autohersteller bietet viele PKW-Modelle = Artikel an, aber: Alle Artikel sind NUR den einem Hersteller zugeordent. Dürfte soweit klar sein? 😉

* n:m Beziehung

Ein Datensatz der einen Tabelle kann mehreren Datensätze der anderen Tabelle zugeordnet sein und umgekehrt. Beispiel: Ein Student besucht eine Vorlesung, ein Student besucht mehrere Vorlesungen und eine Vorlesung kann natürlich und so ist es auch real, dann von mehreren Student besucht werden.

Wichtig zu wissen wäre zum Schluss noch, dass die Notationen per UML, also genauer gesagt die UML-Notationen gesetzt werden müssen, bevor es dann anschliesend zur Normalisierung der Datenbank weiter geht und zum setzen des Primärschlüssel kommt.

Die Notationen festigen, beziehungsweise kennzeichnen die Verbindungen zwischen den Tabellen in einer Datenbank. Folgende UML-Notationen werden verwendet:

a) 0..1 bedeutet: optional eindeutig
b) 0..* bedeutet: optional mehrdeutig
c) 1..1 bedeutet: obligatorisch eindeutig
d) 1..* bedeutet: obligatorisch mehrdeutig

Zum MySQL Tutorial (2) -> (2)

oder zurück zum MySQL Tutorial Vorwort und Installation -> (Vortwort und Installation)

MySQL Tutorial: Vorwort und Installation

Die Datenbank MySQL von Oracle ist, zusammen mit PHP wirklich, ein sehr mächtiges Werkzeug in der Webentwicklung.

Und ein’s vor weg: Ohne Datenbanken würde in der heutigen Zeit, dann in unsererem täglichen Leben alles völlig zusammenbrechen, da geht so gut wie nicht’s mehr ohne Datenbanken! 😉

Sie glauben es nicht? Dann versuchen Sie mal Geld vom Geldautomaten abzuholen, Ihren Urlaub zu buchen, oder ein Buch aus der städtischen Bücherei auszuleihen, ohne Datenbanken, oder bei einem Datenbankausfall hätten Sie keine Chance bei den obigen Beispielen. Selbst in PKW’s und LKW’s, jedenfalls in den neusten Modellen, sind Datenbanken integriert.

Die Datenbank MySQL wird im übrigen hauptsächlich in der Webentwicklung eingesetzt und das gute an MySQL ist, dass MySQL komplett kostenlos ist und dadurch natürlich auch sehr verbreitet ist. Und, dass kostenloses nicht’s taugt, dieses trifft bei MySQL auf keinem Fall zu, denn die MySQL-Datenbank ist sehr schneller und robuster SQL-Datenbankserver und verfügt natürlich auch über Multi-Threading und Mehrbenutzerbetrieb. SQL abgekürzt wird wie folgend ausgeschrieben: ‚Structured Query Language, strukturierte Abfragesprache‘.

Am häufigsten sind relationale Datenbanken verbreitet, die Aufgabe von relationalen Datenbanken ist, dass Tabellen und Spalten mit einzelnen Datensätzen gespeichert werden. Im übrigen ist die relationale Algebra, somit die theoretische Grundlage von SQL. Und wer somit SQL (Structured Query Language) beherrscht, der ist natürlich dann in der heutigen Zeit in der Lage, sich der relevanten Datenverwaltung zu bedienen.

Die populärsten Datenbanken sind unter anderem: Oracle, SQL-Server von Microsoft, DB2 von IBM, und MySQL. Dabei ist zu erwähnen, dass es relationale Datenbanken in der Informatik seit über 27 Jahren gibt, die relationalen Datenbanken gehören in der IT dazu, wie der Schaum zum Bier 😉

Damit Sie der Datenbanksprache SQL (Structured Query Language) mächtig werden und damit auch am besten üben können, im MySQL Tutorial, sollten Sie sich einen WAMP anlegen und da würde ich Ihnen XAMPP empfehlen, denn dort ist phpMyAdmin (kostenloses PHP-Skript zur Administration von MySQL-Datenbanken) integriert und wird auch mit installiert.

Weiter zum MySQL Tutorial -> (1)