Sonntag, 21. Januar 2007
Verschiedene Materialien zu MySQL und PHP
Hier eine Sammlung der verschiedensten Materialien, die ich im Unterricht verwende.
  • Eine Liste der mysql-datentypen (doc, 103 KB) .
  • Hier finden Sie einen schnellkurs php und mysql (doc, 116 KB) bei dem in komprimierter Form die Zusammenhänge beim Zugriff von PHP auf MySQL erklärt werden.
  • Die Doku zu apache mit php konfigurieren (doc, 20 KB) hilft Ihnen, wenn Ihre Apache-Windows-Version evtl. nicht mit PHP zusammenspielt.
  • Das Verfahren zum php passwort-login mit mysql (doc, 74 KB) ist schon sehr "advanced". Inhalte sind:
    • Login-Prozedur über eine MySQL-Datenbank.
    • Session-Management.
Viel Erfolg mit PHP + MySQL.

Achten Sie auf die korrekte Version der Programme.

... link (0 Kommentare)   ... comment


Samstag, 5. August 2006
Tutorial MySQL Konfigurieren und Verwalten

Tutorial:

MySQL Konfigurieren und Verwalten


!! Die Konfiguration wurde von 4.XX nach 5.X entscheidend verändert.
!!

das folgende bezieht sich im wesentlichen auf 4.xx / Ergänzungen
zu 5.x am Ende
 

1. Verzeichnisstruktur von MySQL

/bench Benchmarking-Suite (kann gefahrlos gelöscht werden)
/bin Die ganzen Binaries
    mysql.exe  Der MySQL-Text-Client (auf CMD-Zeile)
    mysqladmin.exe Verwaltungstool u.a. für den
Shutdown
    mysqld.exe  Standard-Demon (Server)
    mysqld-nt.exe spezialisierter Demon für NT
/XP
 
/data Datenverzeichnis: Jede Datenbank ein Verzeichnis
    Verzeichnis mysql enthält die Verwaltungstabellen
mit Nutzern u PW

/lib  Bibliotheken
/share Zeichensätze
 

2. Konfiguration

Die Default-Konfiguration wird durch eine Datei my.cnf bestimmt
Diese Datei ist unter Windows nicht direkt lesbar (weil der Typ cnf
mit anderen Konfigurationsdateien von Windows vorbelegt ist).
Im allgemeinen sind die Dateien my.cnf und deren Vorlage my.ini
identisch und werden bei der Installation richtig erstellt.

Zum Editieren öffnet man _erst_ den Editor, dann Alle Dateien einstellen
und dann die Datei my.cnf öffnen.
Besser ist noch, die Datei my.ini beim Start zu verwenden.

Neben manchem anderen sind hier folgende Einstellungen wichtig (z.B.):

basedir = c:/apache/mysql/  (bei xampp –installation)
datadir = c:/apache/mysql/data/

Falls man das Programm und die Daten auf verschiedenen Laufwerken ablegen
will muss man hier anpassen.
 

3. Start und Stop von MySQL

Zum ersten Experimentieren  ist es nicht sinnvoll mysql als Dienst
einzurichten
. Wird der Server dagegen dauernd als Datenbankserver verwendet
sollte der Dienst beim Start mit gestartet werden.

Folgende batch-Datei startet den Standardserver mysqld mit der Konfigurationsdatei
my.cnf im Verzeichnis mysql

mysql_start.bat
@echo off
mysql\bin\mysqld --defaults-file=mysql\my.cnf  –standalone

Mit Pfadangaben und unterschiedlichen verzeichnissen für Programm
und Daten:
(C:\apache\mysql\bin\mysqld --defaults-file=C:\apache\mysql\my.ini
–standalone)

Das folgende stoppt den mysqld:

mysql_stop.bat
@echo off
echo Mysql shutdowm ...
mysql\bin\mysqladmin shutdown

(funktioniert nicht mit mysqld-nt sofern er am Anfang als Dienst gestartet
wurde)
(bei 5.X mysqladmin -u root shutdown)
 

4. Logging

Im Datadir schreibt mysql eine Log-Datei mysql.err, für Auskunft bei
Fehlern
 

5. Verwaltung

Normalerweise wird man die Datenbank als Backend für eine Anwendung
betreiben, die auf bestehende Passworte aufsetzt, so dass man in der Regel
keine weiteren Passworte zu Fuß eingeben muss. Das Rootpasswort für
den localhost-Zugang kann bei der Installation eingerichtet werden (dieses
muss gut aufbewahrt werden !!) Näheres s. Rechte
 

5.1. Erstlogin / Emergency-Login

In manchen Fällen versagt jedoch das Frontend und man muss zu Fuß
passworte wiederherstellen.

Meistens hat der Hauptnutzer root (der mit dem Linux-Nutzer root nur
den Namen gemeinsam hat) beim Einloggen am selben Rechner (localhost) kein
passwort.
Um dies zu ändern muss das passwort geändert werden.
 

  • Mit cmd.exe ein Eingabefenster öffnen.
  • In das Verzeichnis mysql\bin wechseln.
  • Mysql  -u root eingeben.
  • Bei Passwort return eingeben. Sie bekommen den mysql-Prompt  mysql>
    (alle Befehle werden mit \g oder ; ausgeführt)
  • Mit     use mysql;   in die Datenbank
    mysql wechseln.
  • Mit select user,password from user;  lässt man sich die Nutzer
    und die (verschlüsselten) Passworte anzeigen. Hier kann man auch feststellen,
    ob jemand ein Passwort hat oder nicht (leeres Feld).
  • Das folgende sollte man vorher einmal geübt haben, weil man das Ergebnis
    nicht mehr zurücknehmen kann:
  • Mit update user set Password=password(’neues_passwort’) where Host =’localhost’
    AND User=’root’; bekommt der user root ein neues Passwort.Zur Erklärung
    : die Funktion password(’neues_passwort’) verschlüsselt das passwort 
    und   ..where Host =’localhost’ AND User=’root’ sucht die Zeile
    raus in der der Eintrag für den Nutzer root an localhost steht.
  • Mit mysqladmin.exe flush-privileges werden die Daten endgültig
    in die Datenbank eingetragen

5.2. Wie fügt man nun Nutzer hinzu ?

Da hier die Kommandozeile sehr Tipp-Fehleranfällig ist, da alle Werte
belegt werden müssen, wird empfohlen das über eins der zahlreichen
Frontends (MySQL-Front, phpMyAdmin..) zu besorgen
Für den Notfall hier die Kommandozeile um einen neuen Nutzer klaus
mit Passwort geheim und SELECT-Rechten auf alle Datenbanken einzurichten
der sich von überall einloggen kann.

Mysql>
INSERT into user values(‘%’,’klaus’,password(‘geheim’),’Y’,’N’,’N’;’N’,’N’,’N’;’N’
,’N’,’N’;’N’,’N’,’N’;’N’,’N’);
Wichtig : Es müssen genau 17 Felder sein !!

Wichtig ist zu verstehen, dass beim Zugang auch noch danach unterschieden
wird, ob der Nutzer sich von localhost oder von einem anderen Rechner einloggt.

Naheres zum Verständnis unter MySQL-Rechte
 

5.2. Verwaltung über MySQL-Front

Eins der vielen Tools zur Fernverwaltung ist MySQL-Front.
Es funktioniert natürlich nur von außen, wenn
  • Für root ein passwort für % eingerichtet ist
  • Eine evtl. Firewall den Port 3306 passieren lässt.


MySQL-Front braucht am Anfang nur das root-PW , dann kann man MySQL
bequem verwalten.

Das restliche Programm ist fast selbsterklärend und bietet den
vollen Funkionsumfang einer Verwaltungsoberfläche. zusätzlich
werden zur Kontrolle immer die SQL-Befehle ausgegeben. Dadurch wird man
auch mit SQL etwas vertrauter.
 

6. MYSQL 5.X

Was ist anders bei MYSQL 5.X ?
  • Der Code wurde optimiert um noch mehr Schnelligkeit zu erreichen
  • Die Tabelle user wurde um 20 weitere Felder erweitert, die aber alle für
    die meisten Nutzer ohne Bedeutung sind (sicheres Einloggen per SSL etc.)
  • Das Installationsprogramm wurde erheblich verbessert, sodass es jetzt viele
    mehr Auswahlmöglichkeiten bietet und Fehler besser abfängt. Außerdem
    wird Standardmäßig nach C:\Programme installiert.
  • Gestoppt wird der Server mit mysqladmin –u root shutdown.

MUE 5.8.06

... link (0 Kommentare)   ... comment


MySQL-(Fehler) FAQ
Hier die wichtigsten Fragen und Antworten im Zusammenhang mit Installation und Betrieb von MySQL.
  • Q: Ich habe MySQL neu installiert und jetzt geht nichts mehr. Ich kriege den Server nicht mehr zum Laufen.
  • A: Die häufigste Ursache solcher Fehler ist eine von einer früheren Installation noch irgendwo rumliegende my.ini . Da in der my.ini das Datenverzeichnis ausgewiesen ist sucht MySQL die Daten evtl. am falschen Ort. Die zweithäufigste Ursache ist, dass MySQL bei XP schon irgendwann mal als Dienst installiert wurde und daher schon läuft. Eine zweite Installation stört daher nur. Ich habe schon Fälle gesehen wo drei verschiedene MySQL-Dämonen (noch dazu unterschiedlicher Versionen) zugleich ihr Unwesen trieben.
  • L1: Deinstallieren Sie MySQL, suchen Sie nach einer my.ini oder my.cnf. Löschen Sie diese und installieren Sie MySQL neu.
  • L2: Öffnen Sie den Dienstemanager und suchen Sie nach dem Dienst MySQL. Beenden Sie diesen und ermitteln Sie den Installationsort.
  • Q: ich komme von außen nicht als root auf den Mysql-Server. An der Maschine selbst kann ich mich einloggen.
  • A: Es fehlt ein Eintrag, der Ihnen als root mit Passwort den Zugang von allen (oder nur bestimmten) erlaubt. Das folgende an der Maschine selbst:
  • L1: Ändern mit UPDATE user SET host=’%’,password=password(’geheim’);
  • L2: INSERT INTO USER VALUES(‘%’,’root’,password(‘geheim’),’Y’,’Y’,’Y’;’Y’,’Y’,’Y’;’Y’ ,’Y’,’Y’;’Y’,’Y’,’Y’;’Y’,’Y’); !! Es müssen genau 17 Felder sein.
  • Q: Kann ich eine Datenbank auf einen anderen Server aufspielen / sichern ?
  • A: Da jede Datenbank genau ein Verzeichnis hat ist das recht einfach möglcih. Bei gleicher Version soll es sogar zwischen Linux und Windows möglich sein.
  • L: Gehen Sie folgendermaßen vor:
    • Ermitteln Sie die Datenbankrechte und die Nutzer der Datenbank (sowie unter Linux Eigentümer und Gruppe der Dateien sowie die Linuxrechte), die transportiert werden soll (diese müssen Sie später nachbasteln)
    • Stoppen Sie den Quellserver
    • Kopieren Sie das Datenbankverzeichnis aus dem Verzeichnis \data übers Transportmedium oder übers Netz ans Ziel
    • Am Zieldatenbankserver (das geht auch im laufenden Betrieb) kopieren sie das Verzeichnis ins UVZ \data (bei Linux müssen Sie noch Eigentümer/Gruppe sowie die Rechte ändern).
    • Starten Sie den Datenbankserver neu und richten Sie Datenbanknutzer und Rechte ein.
    • Machen Sie mit flush Privileges die Änderungen gültig und testen Di den Zugriff auf die Daten.
    • Analog geht auch eine Sicherung der Datenbank. Eine Rücksicherung ist jedoch nur bei abgeschaltetem Server möglich.
  • Q: Kann ich eine Datenbank im laufenden Betrieb sichern ?
  • L: Das ist ein diffiziles Problem, das alle Datenbanken betrifft. Wenn Sie sicher sind, dass keine Tabellen geöffnet und außer ihnen kein Nutzer angemeldet ist, können Sie die Datenbankverzeichnisse einfach kopieren.

MYSQL 5.X

Was ist anders bei MYSQL 5.X ?
  • Der Code wurde optimiert um noch mehr Schnelligkeit zu erreichen
  • Die Tabelle user wurde um 20 weitere Felder erweitert, die aber alle für die meisten Nutzer ohne Bedeutund sind (sicheres Einloggen per SSL etc.)
  • Das Installationsprogramm wurde erheblich verbessert, sodass es jetzt viele mehr Auswahlmöglichkeiten bietet und Fehler besser abfängt. Außerdem wird Standardmäßig nach C:\Programme installiert.
  • Gestoppt wird der Server mit mysqladmin –u root shutdown.


    MUE 05.08.06

... link (0 Kommentare)   ... comment


Samstag, 5. August 2006
MySQL-Rechte erklärt für IT-Profis
Die Rechte-Vergabe ist zwar in sich logisch aber nicht für jeden Anfänger leicht verständlich.

Deshalb hier die Grundlagen der Rechtevergabe von MySQL.

MySQL Nutzer und Rechte


MySQL hat eine sehr ausgefeilte Rechtevergabe.
Diese fusst auf den drei tabellen user + host sowie auf den
Tabellen db , tables_priv. columns_priv, die alle in der Datenbank
mysql liegen.
Damit kann man die Rechte bis auf Spaltenebene herunter sehr fein dosieren.
Grob gesagt steuern user + host wer von welchem Rechner
was
machen darf.
Betrachten wir folgenden Eintrag in der Tabelle user:
 

Host User Passw SEL INS UPD DEL CRE DRO REL SH PR FI  GR RE IN  AL
localhost root Y Y Y Y Y Y Y Y Y Y Y Y Y Y
% Sam 4z%7v Y Y Y N N N N N N N N N N N
% Web Zg3& N N N N N N N N N N N N N N

Hier hat der User

  • Root ohne Passwort, wenn er sich von localhost
    einloggt alle Rechte auf alle Datenbanken, er ist der Superuser
    (das ist u.U. eine Sicherheitslücke !!) aber root kann sich nicht
    von außen
    einloggen.
  • Sam die Rechte SELECT, INSERT, UPDATE auf ALLE Datenbanken egal
    von wo er sich einloggt
    .
  • Web gar keine Rechte. Was kann er dann damit anstellen ? Web
    bekommt nur für die Datenbank z.B. weblog bestimmte Rechte,
    die dann in der Tabelle db eingetragen werden. Analog kann man die
    Rechte durch Einträge in die Tabelle tables_priv sowie columns_priv
    die Rechte auf einzelne Tabellen und sogar einzelne Spalten
    beschränken. Der Nutzer muss mit Passwort trotzdem in der Tabelle
    user angelegt sein, damit er sich am Server authentifizieren kann.
  • Die Tabelle host wird eigentlich nur benutzt, wenn der gleiche Nutzer
    von verschiedenen Zugangshosts verschiedene Datenbankrechte haben soll.
Es folgt eine Erklärung aller Einträge in der Tabelle mysql.user
(die wichtigsten fett) MySQL-Rechte (enden alle mit _privilege)
 

Die Tabelle user


!! Achtung !! Ab MySQL 5.XX hat Tabelle user 37 Spalten (+20) und
es sind weitere Tabellen in MySQL dazugekommen.
 

Feldbez. Erklärung Bemerkung  Spalten_Nr
Host  Rechner von dem Zugriff erfolgt  %  = alle
localhost = eigener Rechner
1
User  Loginname 2
Password Passwort verschlüsselt Passwort-eingabe nur über password (’...’)  3
Select_privilege  Darf SELECT –Abfragen durchführen  4
Insert.. Darf neue Daten mit INSERT einfügen   5
Update 
 
Darf bestehende Daten mit UPDATE verändern    6
Delete  Darf Datensätze mit DELETE löschen  7
Create 
 
Nutzer darf neue Datenbank mit CREATE anlegen  Die folgenden Rechte hat normalerweise nur root / admin  8
Drop  Nutzer darf Datenbank mit DROP löschen   9
Reload  Nutzer darf Datenbank neu laden   10
Shutdown  Nutzer darf Datenbank beenden Server läuft weiter  11
Process  Nutzer darf Processinformationen abrufen   12
File  Nutzer darf in/aus Datenbank in /aus Datei schreiben   13
Grant  Nutzer darf Rechte mit GRANT vergeben   14
References  Fremdschlüssel z.Zt. noch nicht benutzt  15
Index  Nutzer darf Index anlegen   16
ALTER Nutzer darf Tabellenkonfiguration ändern   17

... link (0 Kommentare)   ... comment