MySQL: Difference between revisions

From Wiki RB4
 
(9 intermediate revisions by 3 users not shown)
Line 6: Line 6:


===Case-Sensitiveness===
===Case-Sensitiveness===
Tables and database names are case-sensitive on most unix plattforms and not case-sensitive on windows. To control it use configuration  
Tables and database names are case-sensitive on most unix plattforms and not case-sensitive on windows. To control it use configuration [http://dev.mysql.com/doc/refman/5.0/en/identifier-case-sensitivity.html]:
  lower-case-table-names=1
  lower-case-table-names=1


Line 165: Line 165:


====Service====
====Service====
Um MySQL als Service zu installieren, muss die Datei C:\My.cnf vorhanden und bzgl. des Pfades angepasst sein.
Configuration on E.ON IS Laptop via [[EONISLaptop#Dienste|Services]]. To specify mysql parameter my.cnf has to be located in C:\ (not in mysql bin directory)
*'''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====
====Logging einschalten====
*in my.cnf (C:/Uwes/xampp/mysql/bin) die Zeile log=c:/temp/mysql/log.txt ergänzen
in a XAMPP installation for general logging like connection requests and results:
*restart service
log-output=FILE
general-log=1
general_log_file="C:/temp/mysql_general.log"
and for errors:
log_error="mysql_error.log"


===Versionen===
===Versionen===
Line 186: Line 184:


====Linux====
====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/
Beim 1&1-Root Server liegen die Executables unter /usr/bin. Home PC (see [[HomePCNew#MySQL]])


===JDBC Zugriff einrichten===
===JDBC Zugriff einrichten===
Line 201: Line 199:
===Datenbanken anlegen===
===Datenbanken anlegen===
  create database <DBNAME>;
  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===
===Tabellen einer Datenbank anzeigen===
Line 229: Line 234:


===Eintragen eines neuen Users===
===Eintragen eines neuen Users===
* easiest way is to use a actual version of PHPMyAdmin -> Rechte
====obsolete====
use mysql;
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');
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');
Line 237: Line 246:
Anscheinend muss man, damit dies wirksam wird, den Server runterfahren oder aber:
Anscheinend muss man, damit dies wirksam wird, den Server runterfahren oder aber:
flush privileges;
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==
==MySQL Shell==
Beispiele:
Beispiele:
'''mysql –-password=ZZXNaEB6'''
mysql –-password=ZZXNaEB6
'''mysql –-user=web6 –-password=J0mgiZUE'''
mysql –-user=web6 –-password=J0mgiZUE
'''mysql --user=web6 --password=J0mgiZUE --host=p15138371.pureserver.info'''
mysql --user=web6 --password=J0mgiZUE --host=p15138371.pureserver.info
mysql -uroot -proot -h192.168.178.202
mysql -utest -p // will ask for password, if -p is missing access is denied without asking for password





Latest revision as of 15:52, 3 January 2023

Introduction[edit]

1.jpg


Case-Sensitiveness[edit]

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[edit]

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[edit]

Datentyp Format
INT 111-32
FLOAT 22.23-434.23e+10

Installation and Start[edit]

Windows[edit]

Server[edit]

mysql-shareware.exe –standalone mysqld –standalone

Client[edit]

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[edit]

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[edit]

in a XAMPP installation for general logging like connection requests and results:

log-output=FILE
general-log=1
general_log_file="C:/temp/mysql_general.log"

and for errors:

log_error="mysql_error.log"

Versionen[edit]

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[edit]

Windows[edit]

Zur Übersicht über die Konfiguration dient das Tool WINMYSQLADMIN.EXE, das sich im BIN-Verzeichnis befindet.

Linux[edit]

Beim 1&1-Root Server liegen die Executables unter /usr/bin. Home PC (see HomePCNew#MySQL)

JDBC Zugriff einrichten[edit]

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[edit]

Datenbanken anzeigen[edit]

show databases;

Datenbanken verwenden[edit]

use <DBNAME>;

Datenbanken anlegen[edit]

create database <DBNAME>;

Datenbank kopieren[edit]

in PHPMyAdmin Datenbank selektieren und Operationen wählen

Datenbank exportieren[edit]

mysqldump -u username -p database_name > dump.sql

Tabellen einer Datenbank anzeigen[edit]

show tables;

Daten einer Tabelle exportieren[edit]

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[edit]

Beispiel: load data infile 'menu.txt' into table menu fields terminated by ';' optionally enclosed by '\;

SQL-File einlesen[edit]

s.u. source … Kommentarzeilen werden mit dem #-Zeichen eingeleitet.

Backup einer Datenbank[edit]

s. Kapitel 6

Security[edit]

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[edit]

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

obsolete[edit]

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[edit]

  • 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[edit]

Beispiele:

mysql –-password=ZZXNaEB6
mysql –-user=web6 –-password=J0mgiZUE
mysql --user=web6 --password=J0mgiZUE --host=p15138371.pureserver.info
mysql -uroot -proot -h192.168.178.202
mysql -utest -p // will ask for password, if -p is missing access is denied without asking for password


Commands[edit]

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[edit]

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[edit]

mysqldump --opt --allow-keywords --compatible=mysql40 –u<USER> –p<PASSWORD> -hlocalhost <DATABASE>

MySQLAdmin[edit]

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