==== 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: $ mysql -u root -p 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. 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> Das Erstellen eines neuen Benutzers ist vergleichsweise einfach. Ersetze in dem nachfolgendem Befehl einfach die Werte „benutzer“ und „passwort“: CREATE USER 'benutzer'@'%' IDENTIFIED BY 'passwort'; 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. CREATE DATABASE meineDB; Und nun gewähre deinem neuen Benutzer alle Rechte auf diese Datenbank. Ersetze wieder den Wert „benutzer“ durch deinen eigenen Benutzernamen: GRANT ALL PRIVILEGES ON meineDB . * TO 'benutzer'@'%'; Kurz zur Erklärung des o.s. Kommandos: GRANT ALL PRIVILEGES : Es werden alle verfügbaren Privilegien (Rechte) zugewiesen. Es gibt auch eingeschränkte Privilegien, dazu später mehr. ON ‚meineDB‘ . * : 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“. TO ‚benutzer’@’%‘ : 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: FLUSH PRIVILEGES; 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: USE mysql; Update user set host='%' where user='root'; FLUSH PRIVILEGES; % steht dabei für alle Hosts. Die Rechte eines Benutzers kann man anzeigen bzw. ändern durch folgende Befehle: select user,host from mysql.user; Rechte anzeigen: show grants for 'user'@'host'; Um Rechte zu ändern, erst alle Rechte entziehen: revoke all PRIVILEGES on *.* from 'user'@'host'; Dann die gewünschten Rechte zuweisen: grant SELECT,INSERT,UPDATE,DELETE ON `db`.* TO 'user'@'host'; um alle Rechte auf alle Datenbanken zu geben: grant ALL PRIVILEGES ON *.* TO 'user'@'host'; Am Ende noch tatsächlich zuweisen mit flush: flush PRIVILEGES ; 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: DROP USER 'benutzer'@'localhost'; 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]]