MySQL
Introduction
1.jpg
Case-Sensitiveness
Tables and database names are case-sensitive on most unix plattforms and not case-sensitive on windows. To control it use configuration [1]:
lower-case-table-names=1
Column Types
| BOOL | Synonym zu TINYINT(1), 0 ist FALSE, sonst TRUE | |
| BOOLEAN | s. BOOL | |
| TINYINT[(<Length>)] | 1 Byte | |
| SMALLINT | ||
| MEDIUMINT | ||
| INT | s. INTEGER | |
| INTEGER[(<Length>)] | ||
| 4 Bytes | ||
| BIGINT | ||
| FLOAT(<precision>) | ||
| FLOAT | ||
| DOUBLE | ||
| REAL | ||
| DECIMAL[(<DecimalDigits>[,<Precision>])] | ||
| NUMERIC | ||
| DATE | ||
| DATETIME | ||
| TIMESTAMP | ||
| TIME | ||
| YEAR | ||
| CHAR([1-255]) | ||
| VARCHAR[(<MaxLength>)] | Länge+1Byte | |
| TINYTEXT | maximum length of 255 (2^8 - 1) characters | |
| TEXT | unendliche Länge | |
| MEDIUMTEXT | ||
| LONGTEXT |
Formate von Column Types
| Datentyp | Format |
| INT | 111-32 |
| FLOAT | 22.23-434.23e+10 |
Installation and Start
Windows
Server
mysql-shareware.exe –standalone mysqld –standalone
Client
mysql [--host=<IP>] [--user=<user>] --password=<password> Achtung: wenn nur der user angegeben wird, dann gibt es keine Nachfrage nach einem Passwort, sondern man arbeitet einfach unter sehr eingeschränkten Berechtigungen.
Service
Configuration on E.ON IS Laptop via Services. To specify mysql parameter my.cnf has to be located in C:\ (not in mysql bin directory)
Logging einschalten
- in my.cnf die Zeile log=c:/temp/mysql/log.txt ergänzen
- restart service
Versionen
Die Version erhält man in der Kopfzeile von PHP-Admin. MySQLDump wurde von der Version 5 in C:\Uwes\xampp\mysql\bin\v5.0\ installiert.
Konfiguration
Windows
Zur Übersicht über die Konfiguration dient das Tool WINMYSQLADMIN.EXE, das sich im BIN-Verzeichnis befindet.
Linux
Beim 1&1-Root Server liegen die Executables unter /usr/bin. Home PC (see HomePCNew#MySQL)
JDBC Zugriff einrichten
Der MySQL-JDBC Treiber liegt z.Zt. unter c:\uwes\mm.mysql-2.0.8. Die Bibliothek wurde auch nach <TOMCAT_HOME>/common/lib kopiert.
Datenbanken
Datenbanken anzeigen
show databases;
Datenbanken verwenden
use <DBNAME>;
Datenbanken anlegen
create database <DBNAME>;
Datenbank kopieren
in PHPMyAdmin Datenbank selektieren und Operationen wählen
Tabellen einer Datenbank anzeigen
show tables;
Daten einer Tabelle exportieren
Optionally bewirkt, daß nur CHAR und VARCHAR Felder durch den Enclose-Char eingeklammert werden.
SELECT' (<Columns>|*) FROM <Table> INTO OUTFILE ''<File>';
Beispiel: select * from url into outfile 'url.txt' fields terminated by ';' optionally enclosed by '\ lines terminated by '\r\n'; Die Daten werden, wenn kein Pfad angegeben ist, in das Verzeichnis <MySQLInstallDir>\Data\<DBName>\ exportiert. Die Datei darf nicht existieren. Directories müssen mit /' getrennt werden.'
Daten einer Tabelle importieren
Beispiel: load data infile 'menu.txt' into table menu fields terminated by ';' optionally enclosed by '\;
SQL-File einlesen
s.u. source … Kommentarzeilen werden mit dem #-Zeichen eingeleitet.
Backup einer Datenbank
s. Kapitel 6
Security
MySQL unterscheidet nicht zwischen einzelnen Benutzern sondern zwischen der Kombination aus Benutzer und Host. Diese Kombination ergibt eine eindeutige ID. Das Sicherheitssystem regelt hierbei genauestens welcher Benutzer von welchem Host welche Rechte auf welcher Datenbank besitzt. Die 'user' Tabelle beinhaltet alle Host/User Kombinationen, welche den MySQL-Server connecten dürfen. Alle Berechtigungen die ein Benutzer in dieser Tabelle enthält gelten für alle Datenbanken, sofern keine erweiterten Berechtigungen für den jeweiligen Benutzer in der Tabelle db definiert wurden. Man kann diese Berechtigungen auch als grundlegende Einstellungen ansehen und ein datenbankabhängiges Fein-Tunig in der Tabelle db festlegen. The GRANT/REVOKE commands are for restricting access to MySQL.
Eintragen eines neuen Users
use mysql; insert into user (Host, User, Password, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv, File_priv, Grant_priv, References_priv, Index_priv, Alter_priv) values ('localhost', 'www504', password('UCEAp'), 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y'); bzw. in der Kurzform: insert into user VALUES('localhost','www504',PASSWORD('UCEAp'),'Y', 'Y','Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y'); oder über PHPAdmin und Password()-Funktion verwenden oder User anlegen und Berechtigungen zuweisen über: GRANT ALL ON catalog_contra.* TO contra_shop; Anscheinend muss man, damit dies wirksam wird, den Server runterfahren oder aber: flush privileges;
MySQL Shell
Beispiele: mysql –-password=ZZXNaEB6 mysql –-user=web6 –-password=J0mgiZUE mysql --user=web6 --password=J0mgiZUE --host=p15138371.pureserver.info
Commands
create database <DBName>;
create table <TableName> (spalte1 integer, spalte2 char(20));
delete from <TableName>;
describe <TableName>;
help
insert into <TableName> (<Spalte>{,<Spalte>})
values <Values>;
load data infile <FileName> into table <TableName>;
quit
select * from <TableName> ['into outfile '<FileName>' [fields [terminated by '<TermChar>''] [optionally] enclosed by <EncChar>]];
EncChar := <TermChar>
TermChar := <Char> | \t | \' | ...
show databases; show tables;
show columns from <TableName>;
source <Filename with SQL statement and #-Comments>;
status
use <DBName>;
MySQLDump
Die Dateien können mit der MySQL-Shell über das source-Kommando (s.o.) importiert werden. Beispiele:
mysqldump --user root --host=172.18.8.13 mysql504 >a.txt mysqldump --add-drop-table --user root --host=172.18.8.13 mysql504 | mysql mysql504 mysqldump --user=web6 --password=J0mgiZUE --host=p15138371.pureserver.info usr_web6_1 mysqldump --add-drop-table mysql504 adressen | mysql --user=web6 --password=J0mgiZUE --host=p15138371.pureserver.info usr_web6_1 mysqldump –-add-drop-table –-all-databases mysqldump --user root --add-drop-table --databases mysql504 --compatible=mysql40 | mysql --host=192.168.1.2 --user root
Beispiel für Downgrade
mysqldump --opt --allow-keywords --compatible=mysql40 –u<USER> –p<PASSWORD> -hlocalhost <DATABASE>
MySQLAdmin
mysqladmin --password=ZZXNaEB6 (version | variables | reload)