Ich habe eine Datenbank erstellt, zum Beispiel 'mydb'.
CREATE DATABASE mydb CHARACTER SET utf8 COLLATE utf8_bin;
CREATE USER 'myuser'@'%' IDENTIFIED BY PASSWORD '*HASH';
GRANT ALL ON mydb.* TO 'myuser'@'%';
GRANT ALL ON mydb TO 'myuser'@'%';
GRANT CREATE ON mydb TO 'myuser'@'%';
FLUSH PRIVILEGES;
Jetzt kann ich mich von überall in die Datenbank einloggen, aber keine Tabellen erstellen.
So gewähren Sie alle Berechtigungen für diese Datenbank und (in Zukunft) Tabellen. Ich kann keine Tabellen in der 'mydb'-Datenbank erstellen. Ich bekomme immer:
CREATE TABLE t (c CHAR(20) CHARACTER SET utf8 COLLATE utf8_bin);
ERROR 1142 (42000): CREATE command denied to user 'myuser'@'...' for table 't'
mysql
mariadb
mysql-error-1142
Marioosh
quelle
quelle
FLUSH PRIVILEGES
?flush privileges
wird nicht benötigt, wenn Siegrant
Befehle verwenden. x4FLUSH PRIVILEGES;
nur , wenn Sie die Berechtigungstabellen direkt wie die Verwendung von Aussagen zu ändernINSERT
,UPDATE
oderDELETE
Antworten:
Auf diese Weise erstelle ich meine "Super User" -Rechte (obwohl ich normalerweise einen Host angeben würde).
WICHTIGE NOTIZ
Während diese Antwort das Problem des Zugriffs lösen kann,
WITH GRANT OPTION
wird ein MySQL-Benutzer erstellt , der die Berechtigungen anderer Benutzer bearbeiten kann .Aus Sicherheitsgründen sollten Sie diese Art von Benutzerkonto nicht für Prozesse verwenden, auf die die Öffentlichkeit Zugriff hat (z. B. eine Website). Es wird empfohlen, einen Benutzer mit nur Datenbankberechtigungen für diese Art der Verwendung zu erstellen .
quelle
myuser
ihren eigenen benutzerdefinierten Benutzernamen ersetzt werden sollten.Dies ist eine alte Frage, aber ich denke nicht, dass die akzeptierte Antwort sicher ist. Es ist gut zum Erstellen eines Superusers, aber nicht gut, wenn Sie Berechtigungen für eine einzelne Datenbank gewähren möchten.
%
scheint nicht die Socket-Kommunikation abzudecken, für die daslocalhost
ist.WITH GRANT OPTION
ist nur gut für den Superuser, sonst ist es in der Regel ein Sicherheitsrisiko.Das Update für MySQL 5.7+ scheint Folgendes zu warnen:
Das Einstellen des Passworts sollte daher mit separaten Befehlen erfolgen. Dank Kommentar von @ beängstigend-wombat.
Hoffe das hilft.
quelle
WITH GRANT OPTION
und Ausrichten einer angegebenen Datenbank anstelle von all (*
).unix sockets
. Bei Verwendung vonlocalhost
myslq client unter Linux wird versucht, einen Unix-Socket anstelle einer TCP-Verbindung zum Server zu verwenden.Dies wird für einige Leute hilfreich sein:
Über die MySQL-Befehlszeile:
Leider hat der neue Benutzer zu diesem Zeitpunkt keine Berechtigung, etwas mit den Datenbanken zu tun. Wenn sich newuser sogar versucht, sich anzumelden (mit dem Passwort, dem Passwort), kann er die MySQL-Shell nicht erreichen.
Daher müssen Sie dem Benutzer zunächst Zugriff auf die benötigten Informationen gewähren.
Die Sternchen in diesem Befehl beziehen sich auf die Datenbank bzw. die Tabelle, auf die sie zugreifen können. Mit diesem speziellen Befehl kann der Benutzer alle Aufgaben in allen Datenbanken und Tabellen lesen, bearbeiten, ausführen und ausführen.
Wenn Sie die Berechtigungen festgelegt haben, die Sie für Ihre neuen Benutzer einrichten möchten, müssen Sie immer alle Berechtigungen neu laden.
Ihre Änderungen werden nun wirksam.
Weitere Informationen: http://dev.mysql.com/doc/refman/5.6/en/grant.html
Wenn Sie mit der Befehlszeile nicht vertraut sind, können Sie einen Client wie MySQL Workbench , Navicat oder SQLyog verwenden
quelle
flush privileges
wird nicht benötigt, wenn Siegrant
Befehle verwenden. x4GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost' IDENTIFIED BY 'my_password' WITH GRANT OPTION;
(seltsam ..., aber wahr)1. Erstellen Sie die Datenbank
2. Erstellen Sie den Benutzernamen für die Datenbank Datenbankname
3. Verwenden Sie die Datenbank
4. Schließlich befinden Sie sich in der Datenbank db_name und führen die Befehle wie Erstellen, Auswählen und Einfügen von Operationen aus.
quelle
username
dass alle Berechtigungen aktiviert sein sollen,db_name
jedoch nicht dieDROP db_name;
Berechtigungen?Diese SQL gewährt alle Datenbanken, aber nur grundlegende Berechtigungen. Sie reichen für Drupal oder Wordpress und ermöglichen es einem Entwicklerkonto für lokale Projekte.
quelle
Funktioniert für Berechtigungen für Schema :)
Optional: nachdem
mypasswd
Sie hinzufügen könnenWITH GRANT OPTION
quelle
Ich konnte es nur durch Hinzufügen zum Laufen bringen
GRANT OPTION
, ohne dass immer die Erlaubnis verweigert wurdequelle
Hallo, ich habe diesen Code verwendet, um den Superuser in MySQL zu haben
und dann
quelle
flush privileges
wird nicht benötigt, wenn Siegrant
Befehle verwenden. x4GRANT
variiert zwischen den Versionen von MySQL.Nur Zugriff vom Remote-Server auf die MyDB-Datenbank
Zugriff vom Remote-Server auf alle Datenbanken.
quelle
Um
mydb
dem Benutzer alle Berechtigungen in der Datenbank zu erteilen: Führen Siemyuser
einfach Folgendes aus:oder:
Das
PRIVILEGES
Schlüsselwort ist nicht erforderlich.Ich weiß auch nicht, warum die anderen Antworten darauf hindeuten, dass
IDENTIFIED BY 'password'
das Ende des Befehls gesetzt wird. Ich glaube, dass es nicht erforderlich ist.quelle