Verwalten der MySQL-Datenbank: Unterschied zwischen den Versionen

Aus
(vorerst genügend Aktionen beshcrieben)
 
(13 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
[[Kategorie: Stub]]
[[Kategorie: MySQL]]‏‎
[[Kategorie: MySQL]]‏‎
[[Kategorie: PhpMyAdmin]]
[[Kategorie: PhpMyAdmin]]
{{Baustelle|phpMyAdmin ist noch nicht beschrieben--[[Benutzer:EL Duderino|EL Duderino]] 15:23, 31. Mär. 2014 (CEST)}}
Dieser Artikel behandelt einige Kommandos von MySQL, die typischerweise nötig sind, wenn [[Übersicht über weitere Webanwendungen|Webanwendungen]] installiert werden sollen. Es werden sowohl die Kommandozeile als auch die grafische Oberfläche phpMyAdmin behandelt. Damit es funktioniert, muß [[Aktivieren von Web Station oder MySQL|MySQL aktiviert]] sein.
Dieser Artikel behandelt einige Kommandos von MySQL, die typischerweise nötig sind, wenn [[Übersicht über weitere Webanwendungen|Webanwendungen]] installiert werden sollen. Es werden sowohl die Kommandozeile als auch die grafische Oberfläche phpMyAdmin behandelt. Damit es funktioniert, muß [[Aktivieren von Web Station oder MySQL|MySQL aktiviert]] sein.


== Mit phpMyAdmin ==
== Administrieren ==
=== Mit phpMyAdmin ===
<span style="color:red;font-variant:small-caps;font-size:1.2em;border-color:red;border-style:dotted;display:block;padding:10px;">
<span style="color:red;font-variant:small-caps;font-size:1.2em;border-color:red;border-style:dotted;display:block;padding:10px;">
Hier fehlt noch der Inhalt.
Hier fehlt noch der Inhalt.
</span>
</span>
=== Installation von phpMyAdmin ===
Vgl. die [http://demo.phpmyadmin.net/master-config/ Online-Demo].
==== Installation von phpMyAdmin ====
Ist Thema [[Installation von phpMyAdmin|dieses Artikels]].
Ist Thema [[Installation von phpMyAdmin|dieses Artikels]].


=== Anlegen einer Datenbank ===
==== Anlegen einer Datenbank ====
=== Anlegen eines Nutzers ===
==== Anlegen eines Nutzers ====
=== Gewähren und Entziehen von Rechten ===
==== Gewähren und Entziehen von Rechten ====
=== Installation eines Daten-Schemas ===
==== Installation eines Daten-Schemas ====


== Auf der Kommandozeile ==
=== Auf der Kommandozeile ===
Zur Eingabe der SQL-Befehle gibt es zwei Wege: Einmal die interaktive MySQL-Kommandozeile, die über
Dieser Abschnitt setzt Kenntnisse der [[Die Kommandozeile|Kommandozeile]] voraus. Zur Eingabe der SQL-Befehle gibt es zwei Wege: Einmal die interaktive MySQL-Kommandozeile, die über
<pre>
<pre>
$ /usr/syno/mysql/bin/mysql -u root -pYourPassword
$ /usr/syno/mysql/bin/mysql -u root -pYourPassword
</pre>
</pre>
(Stand DSM 4.1) erreichbar ist ''(Kein Leerzeichen zwischen '''-p''' und dem Passwort eingeben!)''. Für den Einsatz in Skripten kann man MySQL mit dem Schalter '''-e''' auch direkt aus der Shell mitteilen, was gewünscht ist
(Stand DSM 4.1, mysql 5.1.x) erreichbar ist ''(Kein Leerzeichen zwischen '''-p''' und dem Passwort eingeben!)''. Für den Einsatz in Skripten kann man MySQL mit dem Schalter '''-e''' auch direkt aus der Shell mitteilen, was gewünscht ist
<pre>
<pre>
$ /usr/syno/mysql/bin/mysql -u root -pYourPassword -e "Kommando 1; Kommando 2; ..."
$ /usr/syno/mysql/bin/mysql -u root -pYourPassword -e "Kommando 1; Kommando 2; ..."
Zeile 27: Zeile 29:
oder die SQL-Befehle auf <tt>stdin</tt> übergeben. Da die Syntax der SQL-Befehle natürlich übereinstimmt, wird hauptsächlich der interaktive Modus beschrieben.
oder die SQL-Befehle auf <tt>stdin</tt> übergeben. Da die Syntax der SQL-Befehle natürlich übereinstimmt, wird hauptsächlich der interaktive Modus beschrieben.


=== Anlegen einer Datenbank ===
==== Anlegen und Löschen einer Datenbank ====
Eine Datenbank namens ''db'' wird so angelegt:
Eine Datenbank namens ''db'' wird so angelegt
<pre>
<pre>
mysql> CREATE DATABASE db;
mysql> CREATE DATABASE db;
</pre>
und so gelöscht:
<pre>
mysql> DROP DATABASE db;
</pre>
</pre>


=== Anlegen eines MySQL-Nutzers ===
==== Anlegen, Passwort ändern und Löschen eines MySQL-Nutzers ====
Ein Nutzer ''user'' mit dem Passwort ''password'' wird angelegt.
Ein Nutzer ''user'' mit dem Passwort ''password'' wird angelegt.
<pre>
<pre>
Zeile 39: Zeile 45:
</pre>
</pre>
Die Einschränkung ''@'localhost' '' bewirkt, daß ''user'' nicht über eine Netzwerkverbindung auf MySQL zugreifen kann. Statt '''IDENTIFIED BY''' kann auch '''IDENTIFIED BY PASSWORD''' benutzt werden, das Passwort muß dann aber als Hash vorliegen (kann mit '''SELECT PASSWORD''' errechnet werden, z.B. ergibt '''SELECT PASSWORD('password');''' den Hash ''2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19'').
Die Einschränkung ''@'localhost' '' bewirkt, daß ''user'' nicht über eine Netzwerkverbindung auf MySQL zugreifen kann. Statt '''IDENTIFIED BY''' kann auch '''IDENTIFIED BY PASSWORD''' benutzt werden, das Passwort muß dann aber als Hash vorliegen (kann mit '''SELECT PASSWORD''' errechnet werden, z.B. ergibt '''SELECT PASSWORD('password');''' den Hash ''2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19'').
<br />
Um ''user'' möglichst wenig Rechte zu geben, führt man
<pre style="overflow-x: scroll;">
mysql> GRANT USAGE ON *.* TO 'user'@'localhost' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;
</pre>
aus.
Dem '''existierenden''' Nutzer ''user'' das Passwort ''newpass'' zuweisen:
<pre>
mysql> SET PASSWORD FOR 'user'@'localhost' = PASSWORD('newpass');
</pre>


Um ''user'' möglichst wenig Rechte zu geben, führt man
Der Nutzer ''user'' wird hiermit gelöscht:
<pre>
<pre>
mysql> GRANT USAGE ON * . * TO 'user'@'localhost' IDENTIFIED BY 'password' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;
mysql> DROP USER 'user'@'localhost';
</pre>
</pre>
aus.


=== Gewähren und Entziehen von Rechten ===
==== Gewähren und Entziehen von Rechten ====
Um dem Benutzer ''user'' Privilegien für die Datenbank ''db'' zu geben, führt man aus:
Um dem Benutzer ''user'' Privilegien für die Datenbank ''db'' zu geben, führt man aus:
<pre>
<pre>
Zeile 54: Zeile 70:
Auch eine selektivere Auswahl der gewährten Privilegien ist möglich.
Auch eine selektivere Auswahl der gewährten Privilegien ist möglich.


=== Installation eines "Daten-Schemas" ===
==== Installation eines "Daten-Schemas" ====
Nutzt ein Programm MySQL, liegt oft ein "Datenbank-Schema" bei, das in eine Datenbank installiert werden muß (etwas präziser handelt es sich dabei um eine Datei mit SQL-Befehlen wie Tabellen anlegen etc.). Um ein Schema ''schema.sql'' in die Datenbank ''db'' zu installieren, gibt man auf der Shell
Nutzt ein Programm MySQL, liegt oft ein "Datenbank-Schema" bei, das in eine Datenbank installiert werden muß (etwas präziser handelt es sich dabei um eine Datei mit SQL-Befehlen wie Tabellen anlegen etc.). Um ein Schema ''schema.sql'' in die Datenbank ''db'' zu installieren, gibt man auf der Shell
<pre>
<pre>
Zeile 61: Zeile 77:
ein (der System Shell, nicht der MySQL Shell!). Um erfolgreich sein zu können, braucht ''user'' die nötigen Privilegien auf ''db'' (und muß das Passwort ''password'' haben).
ein (der System Shell, nicht der MySQL Shell!). Um erfolgreich sein zu können, braucht ''user'' die nötigen Privilegien auf ''db'' (und muß das Passwort ''password'' haben).


=== Weblinks ===
==== List der Nutzer und Datenbanken ====
Alle installierten Datenbanken werden angezeigt mit
<pre>
mysql> SHOW DATABASES;
</pre>
Eine Liste aller Nutzer kann man ansehen mit
<pre>
mysql> SELECT User, host FROM mysql.user;
</pre>
 
==== Anzeige der Variablen ====
Zeigt Liste der Variablen:
<pre>
mysql> SHOW VARIABLES;
</pre>
 
== Performance Tuning ==
MySQL, und besonders die InnoDB-Erweiterung, brauchen viel Speicher, um bei vielen Zugriffen performant arbeiten zu können.
=== MariaDB 5.5 ===
DSM 5 kommt mit MariaDB, das schneller arbeitet und sinnvollere Grundeinstellungen als MySQL hat. Hier [https://mariadb.com/kb/en/optimization-and-tuning/ weitere Informationen].
 
=== MySQL 5.1 ===
Die DSM-Versionen 4.x kommen mit MySQL 5.1. Dessen Grundeinstellungen sind sehr konservativ,
mit der folgenden Konfiguration kann man es beschleunigen.
Die Werte stammen aus der [http://dev.mysql.com/doc/refman/5.1/en/innodb-configuration.html offiziellen Referenz]
und beziehen sich auf eine Maschine mit 512 MB Speicher, bei mehr oder weniger Speicher sollten sie entsprechend angepasst werden.
Es sollte auch bedacht werden, wie viel Speicher noch verfügbar ist; vgl. den Ressourcen-Monitor im DSM.
 
Um diese Konfiguration zu verwenden, kopiert man sie in die Datei ''/etc/my.cnf''
und [[Grundlegende Befehle auf der Kommandozeile#mysql|resettet]] anschließend mysqld.
<pre>
[mysqld]
 
# Set buffer pool size to 50-80% of your computer's memory
innodb_buffer_pool_size=256M
innodb_additional_mem_pool_size=20M
 
#
# Set the log file size to about 25% of the buffer pool size
# Before you do that, the old log files have to be removed *safely*,
# see http://dev.mysql.com/doc/refman/5.1/en/innodb-data-log-reconfiguration.html
# The log buffer can be set without such precautions
#innodb_log_file_size=64M
innodb_log_buffer_size=8M
 
 
# see http://dba.stackexchange.com/questions/12611/is-it-safe-to-use-innodb-flush-log-at-trx-commit-2
#innodb-flush-log-at-trx-commit=2
 
skip-external-locking
max_connections=200
read_buffer_size=1M
sort_buffer_size=1M
#
# Set key_buffer to 5 - 50% of your RAM depending on how much
# you use MyISAM tables, but keep key_buffer_size + InnoDB
# buffer pool size < 80% of your RAM
key_buffer_size=32M
</pre>
 
== Weblinks ==
* [http://www.mysqltutorial.org/ MySQL Tutorial]
* [http://www.mysqltutorial.org/ MySQL Tutorial]
* [http://dev.mysql.com/doc/index.html Offizielle Referenz]
* [http://dev.mysql.com/doc/index.html Offizielle Referenz]

Aktuelle Version vom 17. April 2014, 16:12 Uhr

‏‎

Diese Seite ist unvollständig oder wird noch erstellt.

Notizen: phpMyAdmin ist noch nicht beschrieben--EL Duderino 15:23, 31. Mär. 2014 (CEST)

Dieser Artikel behandelt einige Kommandos von MySQL, die typischerweise nötig sind, wenn Webanwendungen installiert werden sollen. Es werden sowohl die Kommandozeile als auch die grafische Oberfläche phpMyAdmin behandelt. Damit es funktioniert, muß MySQL aktiviert sein.

Administrieren

Mit phpMyAdmin

Hier fehlt noch der Inhalt. Vgl. die Online-Demo.

Installation von phpMyAdmin

Ist Thema dieses Artikels.

Anlegen einer Datenbank

Anlegen eines Nutzers

Gewähren und Entziehen von Rechten

Installation eines Daten-Schemas

Auf der Kommandozeile

Dieser Abschnitt setzt Kenntnisse der Kommandozeile voraus. Zur Eingabe der SQL-Befehle gibt es zwei Wege: Einmal die interaktive MySQL-Kommandozeile, die über

$ /usr/syno/mysql/bin/mysql -u root -pYourPassword

(Stand DSM 4.1, mysql 5.1.x) erreichbar ist (Kein Leerzeichen zwischen -p und dem Passwort eingeben!). Für den Einsatz in Skripten kann man MySQL mit dem Schalter -e auch direkt aus der Shell mitteilen, was gewünscht ist

$ /usr/syno/mysql/bin/mysql -u root -pYourPassword -e "Kommando 1; Kommando 2; ..."

oder die SQL-Befehle auf stdin übergeben. Da die Syntax der SQL-Befehle natürlich übereinstimmt, wird hauptsächlich der interaktive Modus beschrieben.

Anlegen und Löschen einer Datenbank

Eine Datenbank namens db wird so angelegt

mysql> CREATE DATABASE db;

und so gelöscht:

mysql> DROP DATABASE db;

Anlegen, Passwort ändern und Löschen eines MySQL-Nutzers

Ein Nutzer user mit dem Passwort password wird angelegt.

mysql> CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';

Die Einschränkung @'localhost' bewirkt, daß user nicht über eine Netzwerkverbindung auf MySQL zugreifen kann. Statt IDENTIFIED BY kann auch IDENTIFIED BY PASSWORD benutzt werden, das Passwort muß dann aber als Hash vorliegen (kann mit SELECT PASSWORD errechnet werden, z.B. ergibt SELECT PASSWORD('password'); den Hash 2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19).
Um user möglichst wenig Rechte zu geben, führt man

mysql> GRANT USAGE ON *.* TO 'user'@'localhost' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;

aus.

Dem existierenden Nutzer user das Passwort newpass zuweisen:

mysql> SET PASSWORD FOR 'user'@'localhost' = PASSWORD('newpass');

Der Nutzer user wird hiermit gelöscht:

mysql> DROP USER 'user'@'localhost';

Gewähren und Entziehen von Rechten

Um dem Benutzer user Privilegien für die Datenbank db zu geben, führt man aus:

mysql> GRANT ALL PRIVILEGES ON `db` TO 'user'@'localhost';
mysql> FLUSH PRIVILEGES;

Auch eine selektivere Auswahl der gewährten Privilegien ist möglich.

Installation eines "Daten-Schemas"

Nutzt ein Programm MySQL, liegt oft ein "Datenbank-Schema" bei, das in eine Datenbank installiert werden muß (etwas präziser handelt es sich dabei um eine Datei mit SQL-Befehlen wie Tabellen anlegen etc.). Um ein Schema schema.sql in die Datenbank db zu installieren, gibt man auf der Shell

$ /usr/syno/mysql/bin/mysql -u user -D db -ppassword < schema.sql

ein (der System Shell, nicht der MySQL Shell!). Um erfolgreich sein zu können, braucht user die nötigen Privilegien auf db (und muß das Passwort password haben).

List der Nutzer und Datenbanken

Alle installierten Datenbanken werden angezeigt mit

mysql> SHOW DATABASES;

Eine Liste aller Nutzer kann man ansehen mit

mysql> SELECT User, host FROM mysql.user;

Anzeige der Variablen

Zeigt Liste der Variablen:

mysql> SHOW VARIABLES;

Performance Tuning

MySQL, und besonders die InnoDB-Erweiterung, brauchen viel Speicher, um bei vielen Zugriffen performant arbeiten zu können.

MariaDB 5.5

DSM 5 kommt mit MariaDB, das schneller arbeitet und sinnvollere Grundeinstellungen als MySQL hat. Hier weitere Informationen.

MySQL 5.1

Die DSM-Versionen 4.x kommen mit MySQL 5.1. Dessen Grundeinstellungen sind sehr konservativ, mit der folgenden Konfiguration kann man es beschleunigen. Die Werte stammen aus der offiziellen Referenz und beziehen sich auf eine Maschine mit 512 MB Speicher, bei mehr oder weniger Speicher sollten sie entsprechend angepasst werden. Es sollte auch bedacht werden, wie viel Speicher noch verfügbar ist; vgl. den Ressourcen-Monitor im DSM.

Um diese Konfiguration zu verwenden, kopiert man sie in die Datei /etc/my.cnf und resettet anschließend mysqld.

[mysqld]

# Set buffer pool size to 50-80% of your computer's memory
innodb_buffer_pool_size=256M
innodb_additional_mem_pool_size=20M

#
# Set the log file size to about 25% of the buffer pool size
# Before you do that, the old log files have to be removed *safely*,
# see http://dev.mysql.com/doc/refman/5.1/en/innodb-data-log-reconfiguration.html
# The log buffer can be set without such precautions
#innodb_log_file_size=64M
innodb_log_buffer_size=8M


# see http://dba.stackexchange.com/questions/12611/is-it-safe-to-use-innodb-flush-log-at-trx-commit-2
#innodb-flush-log-at-trx-commit=2

skip-external-locking
max_connections=200
read_buffer_size=1M
sort_buffer_size=1M
#
# Set key_buffer to 5 - 50% of your RAM depending on how much
# you use MyISAM tables, but keep key_buffer_size + InnoDB
# buffer pool size < 80% of your RAM
key_buffer_size=32M

Weblinks