MySQL - Kommandozeile: Unterschied zwischen den Versionen

Aus Wikizone
Wechseln zu: Navigation, Suche
Zeile 32: Zeile 32:
  
 
== Datenbank sichern mit mysqldump ==
 
== Datenbank sichern mit mysqldump ==
 +
=== Alle Datenbanken sichern ===
 +
Basiskommando
 +
mysqldump -u root -p --all-databases > alldb.sql
 +
oder
 +
mysqldump -u root -p --opt --all-databases > alldb.sql
 +
mysqldump -u root -p --all-databases --skip-lock-tables > alldb.sql
 +
 +
zurückimportieren
 +
 +
mysql -u root -p < alldb.sql
  
 
== Datenbank sichern ==
 
== Datenbank sichern ==

Version vom 25. Februar 2019, 16:51 Uhr

Die wichtigsten mySQL Befehle...

Dienstprogramm 'mysql' starten

mysql -p<Paßwort> -u <Benutzername> <DB-Name>

oder

mysql -u <Benutzername> -p <DB-Name>
Enter password: ********

Datenbank wechseln - use

Datenbank erstellen - CREATE DATABASE

CREATE DATABASE dbName;

Dateien abarbeiten

ateien abarbeiten Wie oben schon erwähnt, kann man die Befehle auch mit einem ASCII[*]-Editor in eine Datei schreiben und diese dann abarbeiten lassen. Der Aufruf, der das Abarbeiten der Datei startet, ähnelt dem normalen mysql-Aufruf:

mysql -p{Paßwort} -u{Benutzername} {DB-Name} < dateiname

Alle (Fehler-)Meldungen, die normalerweise angezeigt werden, werden auf den Bildschirm geschrieben.

Backup

z.B. mit mysqldump - langsam aber sehr sicher (hohe Portabilität, im laufenden Betrieb)

mysqldump -u username -pdbname > dateiname.sql
Enter password: xxx

wieder einspielen

sql-Datei hochspielen (FTP o.ä.) einspielen wie in Dateien abarbeiten beschrieben:

mysql -u username -p dbname < dateiname

oder

mysql -u username -pMeinPasswort dbname < dateiname

Datenbank sichern mit mysqldump

Alle Datenbanken sichern

Basiskommando

mysqldump -u root -p --all-databases > alldb.sql

oder

mysqldump -u root -p --opt --all-databases > alldb.sql
mysqldump -u root -p --all-databases --skip-lock-tables > alldb.sql

zurückimportieren

mysql -u root -p < alldb.sql

Datenbank sichern

Kurzanleitung zur Anlage einer Database und einer Tabelle in MySQL


Werden mehrere SQL-Kommandos benötigt, empfiehlt es sich, diese in einer einfachen ASCII-Textdatei abzulegen. Dann können sie leicht editiert und (eventuell geändert) wiederholt eingelesen werden. Deshalb erstellen wir eine Datei 'MeineDb.sql' mit folgendem Inhalt:

-- SQL-Datei für MySQL
-- Beim ersten Laden muss die folgende Zeile auskommentiert sein,
-- bei wiederholten Versuchen muss sie aktiviert sein ('--' entfernen):
-- DROP DATABASE MeineDb;
CREATE DATABASE MeineDb;
SHOW databases;
USE MeineDb;
CREATE TABLE MeineTestTabelle ( i INT, c CHAR(3), s VARCHAR(8), dt DATE );
CREATE TABLE MeineAdressen ( Name VARCHAR(16), Plz INT, Ort VARCHAR(16) );
SHOW tables;
INSERT INTO MeineTestTabelle VALUES ( 11, 'ABC', 'Blubb', '2000-01-01' );
INSERT INTO MeineTestTabelle VALUES ( 12, 'ab', 'Blabla', '2000-12-31' );
INSERT INTO MeineTestTabelle VALUES ( 42, 'xy', 'äöüß§€', '2005-06-06' );
SELECT * FROM MeineTestTabelle;
INSERT INTO MeineAdressen VALUES ( 'Achim',     52078, 'Aachen' );
INSERT INTO MeineAdressen VALUES ( 'Alexander', 52134, 'Herzogenrath' );
INSERT INTO MeineAdressen VALUES ( 'Helmut',    52066, 'Aachen' );
INSERT INTO MeineAdressen VALUES ( 'Josef',     52070, 'Aachen' );
INSERT INTO MeineAdressen VALUES ( 'Manfred',   52146, 'Würselen' );
INSERT INTO MeineAdressen VALUES ( 'Patrick',   52074, 'Aachen' );
INSERT INTO MeineAdressen VALUES ( 'Roland',    52134, 'Herzogenrath' );
INSERT INTO MeineAdressen VALUES ( 'Torsten',   52072, 'Aachen' );
INSERT INTO MeineAdressen VALUES ( 'Werner',    52066, 'Aachen' );
SELECT * FROM MeineAdressen;

Ausführen:

mysql -uroot -pmysqlpwd < MeineDb.sql 

Testen mit:

 mysql -uroot -pmysqlpwd MeineDb

  select * from MeineTestTabelle;

  \q

ergibt:

+------+------+--------+------------+
| i    | c    | s      | dt         |
+------+------+--------+------------+
|   11 | ABC  | Blubb  | 2000-01-01 |
|   12 | ab   | Blabla | 2000-12-31 |
|   42 | xy   | äöüß§€ | 2005-06-06 |
+------+------+--------+------------+

Der String 'äöüß§€' wird im Kommandozeilenfenster beim üblicherweise eingestellten Characterset falsch dargestellt, ist aber trotzdem korrekt gespeichert.