19.04.2023

MySQL FAQs

MS SQL Server / MSDE
MySQL Server
PostqreSQL
Pervasive PSQL
sonstiges

Navigation:


Links:
MySQL Documentation
MySQL Daten bearbeiten
Download Connector/ODBC

Seitenanfang

Server Installation

MySQL Community Server Download

MySQL Installer herunterladen und ausführen

MySQL
Choosing a Setup Type: Custom
Select Products and Features:
MySQL Server 64Bit
Applications | MySQL Workbench

Benötigte Komponenten
Visual Studio 2013 Redistributable - für MySQL Server bei einem 64Bit Server wird die 32 und 64 Bit Version benötigt
Visual Studio 2015 Redistributable - für Workbench

Type and Networking
Config Type: Server Machine
TCP/IP Port: 3306

- MySQL Service unter Windwos manuell anlegen, zweites Beispiel mit Angabe des Service Namens und Vorgabe der Konfigurationsdatei

mysqld --install
mysqld --install MySQL57 --defaults-file="C:\ProgramData\MySQL\MySQL Server 5.7\my.ini"

- MySQL Service unter Windows entfernen, Service darf beim entfernen nicht gestartet sein

mysqld --remove
mysqld --remove MySQL57
Usage: mysqld [OPTIONS]
NT and Win32 specific options:
  --install                     Install the default service (NT).
  --install-manual              Install the default service started manually (NT).
  --install service_name        Install an optional service (NT).
  --install-manual service_name Install an optional service started manually (NT).
  --remove                      Remove the default service from the service list (NT).
  --remove service_name         Remove the service_name from the service list (NT).
  --enable-named-pipe           Only to be used for the default server (NT).
  --standalone                  Dummy option to start as a standalone server (NT).

-Ausgabe der Optionen von mysqld und Parameter der my.ini (Windows) mit Defaulteinstellungen

mysqld --verbose --help

- MySQL Initialisierung, erstellt das data Verzeichnis, z.B. beim verwenden der .zip Version

mysqld --initialize		[with random root password]
mysqld --initialize-insecure	[without random root password]

 

[mysqld]
# set basedir to your installation path
basedir="C:/Program Files/MySQL"

# set datadir to the location of your data directory
datadir="C:/ProgramData/MySQL/MySQL Server 5.7/Data"
Seitenanfang

Befehle und Dateien

Datei Beschreibung
/etc/mysql/my.cnf Linux - Server Konfigurationsdatei
/etc/mysql/mariadb.conf.d/50-server.cnf Linux MariaDB - Server Konfigurationsdatei
   
   
   

- Beispiel Linux MariaDB Server Konfigurationsdatei (gekürzt)

# /etc/mysql/mariadb.conf.d/50-server.cnf
# in Eckigen Klammern die Sektionen der Konfigurationsdatei
#
# this is read by the standalone daemon and embedded servers
[server]

# nur fuer mysqld/mariadb Server
[mysqld]

#
# * Basic Settings
#
user            = mysql
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
port            = 3306
basedir         = /usr
datadir         = /var/lib/mysql
tmpdir          = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking
...
[mysqld-X.X]
[mariadb]
[mariadb-X.X]
# MariaDB 5.3 and higher
[client-server]
# MariaDB 10.1 and higher or MariaDB galera builds
[galera] ...

Werte

Kilobyte [kB] Mebibyte [MiB]
52428800 50M
54525952 52M
104857600 100M
419430400 400M

 

Befehl Beschreibung
mysqladmin Client zum Administrieren des SQL Servers
mysqldump Datenbank Backup Programm
mysqlimport Daten Import
mysqlshow Client zum Anzeigen der Datenbank, Tabellen und Spalten
mysqlcheck Tabellen bearbeiten, reparieren, optimieren
mysql_upgrade Upgrade von MySQL zu MariaDB
mysqld --verbose --help Variablen anzeigen
mysql -uroot -p -A -e"SHOW GLOBAL VARIABLES;" > settings.txt Variablen in Datei speichern
   
mysql -u <SQLUserName> -p <Passwort> interaktiv Anmelden
Interaktiv
nach Anmeldung mit mysql -u <SQLUserName> -p <Passwort>
Systemverwaltung
SELECT @@version; Version des Servers
SELECT version(); Version des Servers
STATUS; Information zur Version, gewählte Datenbank, u.a.
SHOW GLOBAL VARIABLES LIKE '%version%'; Globale Variablen anzeigen, gefiltert nur DBVersion
   
Parameter anzeigen
SHOW VARIABLES LIKE '%size%'; System Variablen anzeigen
SHOW SESSION VARIABLES LIKE '%size%'; Sitzungs Variablen anzeigen
SHOW GLOBAL VARIABLES LIKE '%size%'; Globale Variablen anzeigen
   
   
   
   

 

 

 

 

Seitenanfang

Administration

Seitenanfang

Anmeldung am Server mit dem MySQL Command-Line Tool

- am MySQL Server interaktiv anmelden

mysql -u <user> -p

Beispiel: wird kein Benutzer angegeben, wird versucht den aktuellen Benutzer zu verwenden.

mysql -u root -p datenbank
mysql -u'root' -p datenbank
mysql -u"root" -p datenbank
Seitenanfang

Datenbank sichern/wiederherstellen

- angegebene Datenbank sichern

mysqldump -u<user> -p<passwort> datenbank > datenkank.sql

- alle Datenbank als Textdatei sichern

mysqldump -p -A -x --add-drop-database > mysqlbackup.sql

Option -x sperrt die Datenbank bei der Sicherung

- angegebene Datenbank wiederherstellen

mysql -u<user> -p<passwort> datenbank < datenkank.sql

- alle Datenbanken aus Textdatei wiederherstellen

mysql -u<user> -p<passwort> < backup.sql

- interaktiv Datenbank wiederherstellen
am Server anmelden | neue Datenbank anlegen | neue Datenbank auswählen | Daten aus Datei zurückspielen

mysql -u root -p
CREATE DATABASE example_db;
USE example_db;
SOURCE /var/log/mysql/dump.sql
Seitenanfang

Benutzerverwaltung, Passwort Reset

- Passwort setzen

mysqladmin password [new-password]
mysqladmin password "geheim"
mysqladmin -uroot -p'aktuellesPasswort' password 'neuesPasswort'

- Passwort entfernen

mysqladmin password ""

- MySQL Passwort zurücksetzen

vergessenes Kennwort zurücksetzen, ubuntu Wiki

service mysql stop
mysqld_safe --skip-grant-tables &
# mysql
use mysql;
update user set password=PASSWORD("geheim")
where user='root';
flush privileges;
exit;
killall mysqld_safe
service mysql start

unter Debian

in der Datei /etc/mysql/debian.cnf ist das Kennwort für den Benutzer debian-sys-maint im Klartext hinterlegt, anmelden wie folgt

mysql -u debian-sys-maint -p
use mysql;
update user set password=PASSWORD("geheim")
where user='root';
flush privileges;
exit;
Seitenanfang

Datenbank Verwaltung

- Datenbank erstellen

mysqladmin -u root -p create datenbank

- Datenbank löschen

mysqladmin -u root -p drop datenbank

- mysqladmin Kommandos die ausgeführt werden können

  create databasename   Create a new database
  debug                 Instruct server to write debug information to log
  drop databasename     Delete a database and all its tables
  extended-status       Gives an extended status message from the server
  flush-hosts           Flush all cached hosts
  flush-logs            Flush all logs
  flush-status          Clear status variables
  flush-tables          Flush all tables
  flush-threads         Flush the thread cache
  flush-privileges      Reload grant tables (same as reload)
  kill id,id,...        Kill mysql threads
  password [new-password] Change old password to new-password in current format
  ping                  Check if mysqld is alive
  processlist           Show list of active threads in server
  reload                Reload grant tables
  refresh               Flush all tables and close and open logfiles
  shutdown              Take server down
  status                Gives a short status message from the server
  start-slave           Start slave
  stop-slave            Stop slave
  variables             Prints variables available
  version               Get version info from server

- Version des MySQL Servers anzeigen, Laufzeit, u.a.

mysqladmin -u root -p version

- Datenbank anzeigen
alle Datenbanken des Server auflisten | angegebene Datenbank anzeigen

mysqlshow -u root -pPasswort
mysqlshow -u root -pPasswort <DatenbankName>
mysqlshow -u root -pPasswort <DatenbankName> <Tabelle>

- Parameter -v -v zählt die Tabellen und deren Einträge

mysqlshow -u root -pPasswort <DatenbankName> -v -v
# mysqlshow -u root -pPasswort -v -v
mysqlshow: [Warning] Using a password on the command line interface can be insecure.
+--------------------+--------+--------------+
|     Databases      | Tables |  Total Rows  |
+--------------------+--------+--------------+
| information_schema |     61 |        13701 |
| mysql              |     31 |         2808 |
| performance_schema |     87 |        37177 |
| sys                |    101 |         3761 |
+--------------------+--------+--------------+
4 rows in set.

 

Seitenanfang

Interaktiv ausführen

MySQL 5.7 Reference Manual

Seitenanfang

Benutzerverwaltung/Benutzerrechte

 

einen neuen MySQL Benutzer anlegen, mit Passwort

CREATE USER 'Benutzer' IDENTIFIED BY 'PassWort';

User mit allen Rechten setzen

GRANT ALL ON *.* TO 'benutzer'@'localhost' IDENTIFIED BY "geheim" WITH GRANT OPTION;

User hat Rechte für die Datenbank sample_db

GRANT ALL ON sampel_db.* TO 'benutzer'@'localhost' IDENTIFIED BY "geheim";

User löschen

DROP USER 'Benutzer'@'localhost';

Passwort eines Benutzers ändern/zurücksetzen (als root)

SET PASSWORD FOR 'benutzer'@'localhost' = PASSWORD('NewPassword');
FLUSH PRIVILEGES;

Benutzer umbenennen

RENAME USER 'Benutzer'@'localhost' TO 'user'@'localhost';
Seitenanfang

Datenbank Verwaltung

- alle Datenbanken anzeigen

show databases;

- alle Tabellen der Datenbank anzeigen

show tables from <DB-Name>;

- Tabellen der gewählten Datenbank anzeigen
Syntax:

SELECT Fields FROM Tables WHERE [Bedingung] [Ergänzungen]
use <DB-Name>;
select * from information_schema.tables;

- Felder einer Tabelle anzeigen

SHOW TABLES FROM databases;
USE databases;
SHOW FIELDS FROM table;

Syntax:

SHOW COLUMNS FROM mytable FROM mydb;
oder
SHOW COLUMNS FROM mydb.mytable;
oder
DESC mytable;

Beispiel

SHOW COLUMNS FROM wp_options FROM wordpress;
SHOW COLUMNS FROM wordpress.wp_options;

 



 Seitenanfang

Datenintegrität prüfen / reparieren / optimieren

MySQL 5.7 Reference Manual

- alle Tabellen und alle Datenbanken checken

mysqlcheck -u root -p -c --all-databases

- angegebene Datenbank checken

mysqlcheck -u root -p -c <Datenbank>
# mysqlcheck -u root -p -c zarafa
Enter password:
zarafa.abchanges                                   OK
zarafa.acl                                         OK
zarafa.changes                                     OK
zarafa.clientupdatestatus                          OK
zarafa.deferredupdate                              OK
zarafa.hierarchy                                   OK
zarafa.indexedproperties                           OK
zarafa.lob                                         OK
zarafa.mvproperties                                OK
zarafa.names                                       OK
zarafa.object                                      OK
zarafa.objectmvproperty                            OK
zarafa.objectproperty                              OK
zarafa.objectrelation                              OK
zarafa.outgoingqueue                               OK
zarafa.properties                                  OK
zarafa.receivefolder                               OK
zarafa.searchresults                               OK
zarafa.settings                                    OK
zarafa.singleinstances                             OK
zarafa.stores                                      OK
zarafa.syncedmessages                              OK
zarafa.syncs                                       OK
zarafa.tproperties                                 OK
zarafa.users                                       OK
zarafa.versions                                    OK

- bestimmte Tabelle der angegebenen Datenbak checken

mysqlcheck -u root -p -c <Datenbank> <Tabelle>
# mysqlcheck -u root -p -c zarafa users
Enter password:
zarafa.users                                       OK

- Tabelle einer Datenbak reparieren (--repair)

mysqlcheck -u root -p -r <Datenbank> <Tabelle>

- Tabelle einer Datenbak optimieren (--optimize)

mysqlcheck -u root -p -o <Datenbank> <Tabelle>

 

Seitenanfang

Fehlersuche

Fehlermeldung:
ERROR 1449 (HY000) at line xxxx: The user specified as a definer ('username'@'localhost') does not exist

mysql> grant all on *.* to 'username'@'localhost' identified by 'password' with grant option;
FLUSH PRIVILEGES;

 

Seitenanfang

sonstiges

ct Artikel

- MySQL Datenbank auf Passwort Problem testen

$ for i in `seq 1 1000`; do mysql -u root --password=bad -h 127.0.0.1 2>/dev/null; done

- MySQL Verbindung testen

nc -vz localhost 3306

Sicherungsscript

-MySQL Sicherung aller Datenbanken des Servers

#!/bin/bash
#
# MySQL Server Sicherung
#
USER='Benutzer'
PASS='Passwort'
VERZ=/home/bachup
#
if [ ! -d $VERZ ]; then
        echo -e \\n Backup Verzeichnis $VERZ wird angelegt. \\n
        mkdir -p $VERZ
fi
#
mysqldump -u$USER -p$PASS -A -x -E --add-drop-database | \
 bzip2 > $VERZ/mysql-db_$(date +%Y-%m-%d_%H-%M-%S).sql.bz2
#
echo -e \\n
ls $LS_OPTIONS -SAhl --group-directories-first $VERZ
echo -e \\n \\t \\t "\033[0;33mMySQL Sicherung im $VERZ angelegt\033[0m" \\n

- Wiederherstellen der Datenbanken

man muss aufpassen, das man nicht alle Dateien im Verzeichnis entpackt, am einfachsten, die Datei direkt angeben.

bzip2 -d mysql-db_*.sql.bz2
mysql -u<user> -p<passwort> < mysql-db_*.sql

Debian Upgrade und Wechsel von MySQL auf MariaDB

nach einem Upgrade von Debian 8 auf 9 und den damit verbunden wechsel von MySQL auf MariaDB müssen die Datenbanken geprüft werden.

mysql_upgrade -u root -p