User Tools

Site Tools


edv:alt:mysql_datenbank_einrichten

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

edv:alt:mysql_datenbank_einrichten [2023/01/15 11:47] – ↷ Seite von edv:alt:mysql_datenbank_einrichten nach edv_intern_smart_home:edv:alt:mysql_datenbank_einrichten verschoben zwergeredv:alt:mysql_datenbank_einrichten [2023/01/19 22:19] (current) – created - external edit 127.0.0.1
Line 1: Line 1:
 +==== Erstellen eines Benutzers in MySQL ====
 +Zunächst starte die MySQL Konsole. Dazu öffne ein Terminal (bspw. PuTTY oder XTerm) und verbinde dich auf den Server mit deiner MySQL Installation (10.30.0.16). Wir benutzen den Benutzer ‚root‘ auf deiner MySQL Installation. Alternativ nutze deinen Benutzernamen. Hast du den Benutzer mit einem Kennwort versehen, so nutze folgendes Kommando:
 +<code>$ mysql -u root -p</code>
 +Du wirst dann nach einem Kennwort gefragt. Nach der Eingabe solltest du den MySQL Prompt sehen. Hast du kein Kennwort gesetzt, so verzichte auf den Parameter ‚-p‘ und du wirst nicht nach einem Kennwort gefragt.
 +<code bash>root@mysql:~# mysql -u root -p
 +Enter password:
  
 +Welcome to the MySQL monitor. Commands end with ; or \g.
 +Your MySQL connection id is 98
 +Server version: 5.5.47-0+deb8u1 (Debian)
 +
 +Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
 +
 +Oracle is a registered trademark of Oracle Corporation and/or its
 +affiliates. Other names may be trademarks of their respective
 +owners.
 +
 +Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 +
 +mysql></code> 
 +Das Erstellen eines neuen Benutzers ist vergleichsweise einfach. Ersetze in dem nachfolgendem Befehl einfach die Werte „benutzer“ und „passwort“:
 +<code sql> CREATE USER 'benutzer'@'%' IDENTIFIED BY 'passwort'; </code>
 +Damit hast du einen Benutzer erstellt, der allerdings noch keine Berechtigungen auf irgendeine Datenbank oder Tabelle hat. Zu Testzwecken erstelle nun eine neue Datenbank, auf die der Benuter später zugreifen darf.
 +<code sql> CREATE DATABASE meineDB; </code>
 +Und nun gewähre deinem neuen Benutzer alle Rechte auf diese Datenbank. Ersetze wieder den Wert „benutzer“ durch deinen eigenen Benutzernamen:
 +<code sql> GRANT ALL PRIVILEGES ON meineDB . * TO 'benutzer'@'%'; </code>
 +Kurz zur Erklärung des o.s. Kommandos:
 +<code sql>GRANT ALL PRIVILEGES</code> : Es werden alle verfügbaren Privilegien (Rechte) zugewiesen. Es gibt auch eingeschränkte Privilegien, dazu später mehr.
 +<code sql>ON ‚meineDB‘ . * </code>: Hiermit wird genauer spezifiziert, auf welche Bereiche die Rechte zugewiesen werden sollen. Möglichist auch ‚* . *‘, um einem Benutzer zum Beispiel alle Rechte einzuräumen oder die Einschränkung auf einzelne Tabellen einer Datenbank, wie z.B. “meineDB‘ . ‚meineTabelle“.
 +<code sql>TO ‚benutzer’@’%‘ </code>: Hierbei handelt es sich um den Benutzer, der diese Rechte erhalten soll.
 +Das '%' steht dafür, dass der Benutzer auch von anderen Rechner auf die Datenbank zugreifen darf, normalerweise steht hier 'localhost'.
 +MySQL hält die Rechte normalerweise im Speicher vor, damit nicht jedes Mal, wenn sich ein Benutzer an der Datenbank anmeldet (was im Zweifel sehr oft sein kann), langsame I/O Operationen durchgeführt werden müssen. Um diese Kopie der Privilegien im Arbeitsspeicher zu updaten, solltest du nach jeder Änderung einmal das Kommando:
 +<code sql> FLUSH PRIVILEGES; </code>
 +ausführen. Vergisst du das Kommando, kann es sein das du dich mit den neuen (oder geänderten) Zugangsdaten noch nicht an dem Datenbankserver anmelden kannst.
 +==== Weitere Privilegien in MySQL ====
 +Neben dem oben genutzten ‚ALL PRIVILEGES‘ kannst du einem Benutzer auch andere Sets an Privilegien in deinem MySQL Server zuweisen. Da sind beispielsweise folgende:
 +  * ALL PRIVILEGES : Ein Wildcard für alle Rechte auf das gewählte Datenbankobjekt, mit einem *.* auf alle Datenkbanken. ACHTUNG!: Damit ein Benutzer anderen Benutzern Rechte einräumen kann, muss ihm separat das Recht GRANT OPTION zugewiesen werden!
 +  * CREATE : Erlaubt einem Benutzer, neue Datenbanken zu erstellen
 +  * DROP : Erlaubt einem Benutzer, Datenbanken zu löschen
 +  * DELETE : Erlaubt einem Benutzer, einzelne Zeilen in einer Tabelle zu löschen
 +  * INSERT : Erlaubt einem Benutzer, neue Zeilen in eine Tabelle zu schreiben
 +  * SELECT : Leseberechtigungen auf eine Datenbank oder Tabelle
 +  * UPDATE : Erlaubnis, eine Zeile zu aktualisieren
 +  * GRANT OPTION : Erlaubt einem Benutzer, die Rechte anderer Benutzer zu setzen oder zu widerrufen
 +Der genaue Syntax ist in der Dokumentation von MySQL sehr gut beschrieben. Du findest sie unten.
 +
 +Um einem Nutzer im Nachhinein den Zugriff von anderen PHP-Servern zu erlauben, gibt man folgenden Befehl ein:
 +<code sql>USE mysql; Update user set host='%' where user='root'; FLUSH PRIVILEGES;</code>
 +% steht dabei für alle Hosts.
 +
 +Die Rechte eines Benutzers kann man anzeigen bzw. ändern durch folgende Befehle:
 +<code sql>select user,host from mysql.user;</code>
 +Rechte anzeigen:
 +<code sql>show grants for 'user'@'host';</code>
 +Um Rechte zu ändern, erst alle Rechte entziehen:
 +<code sql>revoke all PRIVILEGES on *.* from 'user'@'host';</code>
 +Dann die gewünschten Rechte zuweisen:
 +<code sql>grant SELECT,INSERT,UPDATE,DELETE ON `db`.* TO 'user'@'host';</code>
 +um alle Rechte auf alle Datenbanken zu geben:
 +<code sql>grant ALL PRIVILEGES ON *.* TO 'user'@'host';</code>
 +Am Ende noch tatsächlich zuweisen mit flush:
 +<code sql>flush PRIVILEGES ;</code>
 +
 +Details hier:
 +[[http://dev.mysql.com/doc/refman/5.0/en/user-account-management.html|http://dev.mysql.com/doc/refman/5.0/en/user-account-management.html]]
 +
 +Einen Benutzer kannst du genauso einfach löschen, wie anlegen. Nutze dazu folgenden Befehl:
 +<code sql> DROP USER 'benutzer'@'localhost'; </code>
 +Versichere dich, dass du die Privilegien neu geladen hast, nach jeder Änderung an den Rechtetabellen.
 +
 +Quelle: [[https://gridscale.io/community/knowledgebase/wie-erstelle-ich-einen-mysql-benutzer-und-weise-ihm-rechte-zu/|Wie erstelle ich einen MySQL Benutzer und weise ihm Rechte zu]]