Verwalten der MySQL-Datenbank: Unterschied zwischen den Versionen

Aus
(→‎Auf der Kommandozeile: initial import)
(vorerst genügend Aktionen beshcrieben)
Zeile 2: Zeile 2:
[[Kategorie: MySQL]]‏‎
[[Kategorie: MySQL]]‏‎
[[Kategorie: PhpMyAdmin]]
[[Kategorie: PhpMyAdmin]]
Dieser Artikel zeigt grundlegende Verwaltungsakte der MySQL-Datenbanken. Es werden sowohl die Kommandozeile als auch die grafische Oberfläche phpMyAdmin behandelt.
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 ==
<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>
== Mit phpMyAdmin ==
=== Installation von phpMyAdmin ===
=== Installation von phpMyAdmin ===
Ist Thema [[Installation von phpMyAdmin|dieses Artikels]].
Ist Thema [[Installation von phpMyAdmin|dieses Artikels]].
Zeile 21: Zeile 21:
$ /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) 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; ..."
</pre>
</pre>
oder die 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 einer Datenbank ===
Zeile 33: Zeile 33:
</pre>
</pre>


=== Anlegen eines Nutzers ===
=== Anlegen eines MySQL-Nutzers ===
Ein Nutzer ''user'' mit dem Passwort ''password'' wird angelegt. Die Einschränkung ''@'localhost' '' bewirkt, daß ''user'' nicht über eine Netzwerkverbindung auf MySQL zugreifen kann.
Ein Nutzer ''user'' mit dem Passwort ''password'' wird angelegt.
<pre>
<pre>
mysql> CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
mysql> CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
</pre>
</pre>
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'').


Um dem Nutzer möglichst wenig Rechte zu geben, führt man
Um ''user'' möglichst wenig Rechte zu geben, führt man
<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> 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;
Zeile 47: Zeile 47:


=== 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:
<pre>
<pre>
mysql> GRANT ALL PRIVILEGES ON `db` TO 'user'@'localhost';
mysql> GRANT ALL PRIVILEGES ON `db` TO 'user'@'localhost';
mysql> FLUSH PRIVILEGES;
mysql> FLUSH PRIVILEGES;
</pre>
</pre>
=== Installation eines Daten-Schemas ===
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
<pre>
$ /usr/syno/mysql/bin/mysql -u user -D db -ppassword < schema.sql
</pre>
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 ===
* [http://www.mysqltutorial.org/ MySQL Tutorial]
* [http://dev.mysql.com/doc/index.html Offizielle Referenz]

Version vom 30. Dezember 2012, 22:19 Uhr

‏‎ 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.

Mit phpMyAdmin

Hier fehlt noch der Inhalt.

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

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) 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 einer Datenbank

Eine Datenbank namens db wird so angelegt:

mysql> CREATE DATABASE db;

Anlegen 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' IDENTIFIED BY 'password' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;

aus.

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).

Weblinks