MySQL

From Wiki RB4

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

Datenbank exportieren

mysqldump -u username -p database_name > dump.sql

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

  • easiest way is to use a actual version of PHPMyAdmin -> Rechte

obsolete

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;

User prüfen

  • SELECT USER(), CURRENT_USER();

USER() reports how you attempted to authenticate in mysqld, CURRENT_USER() reports how you were allowed to authenticate by mysqld.

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)