MySQL: Difference between revisions
| (17 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 [http://dev.mysql.com/doc/refman/5.0/en/identifier-case-sensitivity.html]: | |||
lower-case-table-names=1 | |||
===Column Types=== | ===Column Types=== | ||
{| border=1 cellpadding=2 cellspacing=0 | {| border=1 cellpadding=2 cellspacing=0 | ||
| Line 185: | Line 165: | ||
====Service==== | ====Service==== | ||
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) | |||
To | |||
====Logging einschalten==== | ====Logging einschalten==== | ||
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=== | ===Versionen=== | ||
| Line 206: | Line 184: | ||
====Linux==== | ====Linux==== | ||
Beim 1&1-Root Server liegen die Executables unter /usr/bin. | Beim 1&1-Root Server liegen die Executables unter /usr/bin. Home PC (see [[HomePCNew#MySQL]]) | ||
===JDBC Zugriff einrichten=== | ===JDBC Zugriff einrichten=== | ||
| Line 214: | Line 192: | ||
===Datenbanken anzeigen=== | ===Datenbanken anzeigen=== | ||
show databases; | |||
===Datenbanken verwenden=== | ===Datenbanken verwenden=== | ||
use <DBNAME>; | |||
===Datenbanken anlegen=== | ===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=== | ===Tabellen einer Datenbank anzeigen=== | ||
show tables; | |||
===Daten einer Tabelle exportieren=== | ===Daten einer Tabelle exportieren=== | ||
Optionally bewirkt, daß nur CHAR und VARCHAR Felder durch den Enclose-Char eingeklammert werden. | Optionally bewirkt, daß nur CHAR und VARCHAR Felder durch den Enclose-Char eingeklammert werden. | ||
'''SELECT''' ( | '''SELECT''' (<Columns>|'''*''') '''FROM''' <Table> '''INTO''' '''OUTFILE''' '''''''<File>'''';''' | ||
Beispiel: | Beispiel: | ||
'''select * from url into outfile 'url.txt' fields terminated by ';' optionally enclosed by '\'' lines terminated by '\r\n';''' | '''select * from url into outfile 'url.txt' fields terminated by ';' optionally enclosed by '\'' lines terminated by '\r\n';''' | ||
| Line 249: | 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 257: | 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 –-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=== | ===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 | |||
EncChar := | select * from <TableName> ['''into outfile ''''<FileName>'''' '''['''fields '''['''terminated by ''''<TermChar>'''''''] ['''optionally'''] '''enclosed by''' <EncChar>]]; | ||
TermChar := | EncChar := <TermChar> | ||
TermChar := <Char> | '''\t''' | '''\'''' | ... | |||
show databases; | |||
show tables; | |||
show columns from <TableName>; | |||
source <Filename with SQL statement and #-Comments>; | |||
status | |||
use <DBName>; | |||
==MySQLDump== | ==MySQLDump== | ||
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 --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=== | ===Beispiel für Downgrade=== | ||
mysqldump --opt --allow-keywords --compatible=mysql40 –u<USER> –p<PASSWORD> -hlocalhost <DATABASE> | |||
==MySQLAdmin== | ==MySQLAdmin== | ||
mysqladmin --password=ZZXNaEB6 (version | variables | reload) | |||
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)