MySQL: Difference between revisions

From Wiki RB4
No edit summary
Line 295: Line 295:
Die Dateien können mit der MySQL-Shell über das source-Kommando (s.o.) importiert werden.
Die Dateien können mit der MySQL-Shell über das source-Kommando (s.o.) importiert werden.
Beispiele:
Beispiele:
'''mysqldump --user root --host=172.18.8.13 mysql504 >a.txt'''
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 --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 --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 mysql504 adressen | mysql --user=web6 --password=J0mgiZUE --host=p15138371.pureserver.info usr_web6_1
''''''
mysqldump –-add-drop-table –-all-databases  
'''mysqldump –-add-drop-table –-all-databases '''
  mysqldump --user root --add-drop-table --databases mysql504 --compatible=mysql40 | mysql --host=192.168.1.2 --user root
  '''mysqldump --user root --add-drop-table --databases mysql504 --compatible=mysql40 | mysql --host=192.168.1.2 --user root'''


===Beispiel für Downgrade===
===Beispiel für Downgrade===
'''mysqldump --opt --allow-keywords --compatible=mysql40 –u'''<USER>''' –p'''<PASSWORD>''' -hlocalhost '''<DATABASE>''''''
mysqldump --opt --allow-keywords --compatible=mysql40 –u<USER> –p<PASSWORD> -hlocalhost <DATABASE>


==MySQLAdmin==
==MySQLAdmin==
  '''mysqladmin --password=ZZXNaEB6''' ('''version''' | '''variables''' | '''reload''')
  '''mysqladmin --password=ZZXNaEB6''' ('''version''' | '''variables''' | '''reload''')

Revision as of 21:57, 11 June 2007

Introduction

1.jpg


Case-Sensitiveness

Typ Case-sensitive
reserved word no
name of tables depends on file system:*unter Windows nein
name of column no
Vergleiche von Inhalten no (except blob)

Man sollte auch bedenken, daß es eventuell später bei einer Konvertierung in ein anderes Datenbankformat das konvertierende Programm vielleicht Groß/Kleinschreibung nicht unterscheiden kann.

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

Um MySQL als Service zu installieren, muss die Datei C:\My.cnf vorhanden und bzgl. des Pfades angepasst sein.

  • Windows NT, Windows XP

To install MySql as a service: mysqld-max-nt –install mysqld-max-nt –remove Eigentlich sollte man MySQL mit mysqld bzw. mysqld-nt starten können, aber das geht nicht und das Error-Log mysql.err enthält keinerlei Aufschlüsse. Außerdem sollte es sich unter NT als Service starten lassen mit NET START MYSQL bzw. im Dienste-Dialog bzw. stoppen lassen mit NET STOP mysql. Aber dort erscheint der Fehler 1067. Der Grund der Fehlermeldung ist die fehlende Datei C:\MY.CNF, die existieren muss wenn man MySQL nicht im Standardverzeichnis C:\MYSQL installiert.

Logging einschalten

  • in my.cnf (C:/Uwes/xampp/mysql/bin) 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. Die Startup-Datei mysql liegt unter /etc/rc.d/ oder unter /etc/init.d/

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>;

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)