it-swarm.com.de

Gewähren Sie ** alle ** Berechtigungen für die Datenbank

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 aus in die Datenbank einloggen, aber keine Tabellen erstellen.

Gewährung aller 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'
563
marioosh
GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'%' WITH GRANT OPTION;

So erstelle ich meine Superuser-Berechtigungen (obwohl ich normalerweise einen Host angeben würde).

WICHTIGE NOTIZ

Während diese Antwort das Problem des Zugriffs lösen kann, erstellt WITH GRANT OPTION einen MySQL-Benutzer, der die Berechtigungen anderer Benutzer bearbeiten kann

Mit dem GRANT OPTION-Privileg können Sie anderen Benutzern die Berechtigungen erteilen, die Sie selbst besitzen. 

Aus Sicherheitsgründen sollten Sie diese Art von Benutzerkonto nicht für Prozesse verwenden, auf die die Öffentlichkeit Zugriff hat (d. H. Eine Website). Es wird empfohlen, dass Sie einen Benutzer mit Datenbankberechtigungen erstellen für diese Art der Verwendung.

844
diagonalbatman

Dies ist eine alte Frage, aber ich glaube nicht, dass die akzeptierte Antwort sicher ist. Es ist gut für das Erstellen eines Super-Benutzers, aber nicht gut, wenn Sie Berechtigungen für eine einzelne Datenbank erteilen möchten.

grant all privileges on mydb.* to [email protected]'%' identified by 'mypasswd';
grant all privileges on mydb.* to [email protected] identified by 'mypasswd';

% scheint die Socket-Kommunikation nicht zu umfassen, für die die localhost ist. WITH GRANT OPTION ist nur für den Superbenutzer gut, ansonsten besteht normalerweise ein Sicherheitsrisiko.

Hoffe das hilft.

490
akostadinov

Dies wird für manche Menschen hilfreich sein:

Von der MySQL-Befehlszeile aus:

CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';

An diesem Punkt hat newuser leider keine Berechtigung, etwas mit den Datenbanken zu tun. Wenn ein neuer Benutzer sich sogar anzumelden versucht (mit dem Kennwort und dem Kennwort), kann er die MySQL-Shell nicht erreichen. 

Daher müssen Sie als Erstes dem Benutzer Zugriff auf die Informationen geben, die er benötigt.

GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';

Die Sternchen in diesem Befehl beziehen sich auf die Datenbank bzw. die Tabelle, auf die sie zugreifen können. Mit diesem Befehl können Benutzer alle Aufgaben in allen Datenbanken und Tabellen lesen, bearbeiten, ausführen und ausführen. 

Nachdem Sie die Berechtigungen festgelegt haben, die Sie für Ihre neuen Benutzer einrichten möchten, müssen Sie immer alle Berechtigungen erneut laden.

FLUSH PRIVILEGES;

Ihre Änderungen werden jetzt wirksam.

Weitere Informationen: http://dev.mysql.com/doc/refman/5.6/de/grant.html

Wenn Sie mit der Befehlszeile nicht vertraut sind, können Sie einen Client wie MySQL Workbench , Navicat oder SQLyog verwenden.

107
user3008525

1. Erstellen Sie die Datenbank 

CREATE DATABASE db_name;

2. Erstellen Sie den Benutzernamen für die Datenbank Datenbankname 

GRANT ALL PRIVILEGES ON db_name.* TO 'username'@'localhost' IDENTIFIED BY 'password';

3. Verwenden Sie die Datenbank 

USE db_name;

4. Sie befinden sich schließlich in der Datenbank db_name und führen dann die Befehle aus, z.

28
Bhavnesh

Diese SQL gewährt auf alle Datenbanken nur grundlegende Berechtigungen. Sie sind für Drupal oder Wordpress ausreichend und erlauben aus einem einzigen Entwickler-Konto einen lokalen Account. 

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, 
    INDEX, ALTER, CREATE TEMPORARY TABLES 
ON *.* TO 'username'@'localhost' IDENTIFIED BY 'password';
20
s6712
GRANT ALL PRIVILEGES ON mydb.* TO [email protected] IDENTIFIED BY 'mypasswd';

Funktioniert für Privilegien im Schema :) 

Optional: Nach mypasswd können Sie WITH GRANT OPTION hinzufügen.

13
Dutch Glory

Hallo, ich habe diesen Code verwendet, um den Superuser in MySQL zu haben

GRANT EXECUTE, PROCESS, SELECT, SHOW DATABASES, SHOW VIEW, ALTER, ALTER ROUTINE,
    CREATE, CREATE ROUTINE, CREATE TEMPORARY TABLES, CREATE VIEW, DELETE, DROP,
    EVENT, INDEX, INSERT, REFERENCES, TRIGGER, UPDATE, CREATE USER, FILE,
    LOCK TABLES, RELOAD, REPLICATION CLIENT, REPLICATION SLAVE, SHUTDOWN,
    SUPER
        ON *.* TO [email protected]'%'
    WITH GRANT OPTION;

und dann

FLUSH PRIVILEGES;
12
gastonnina

Ich konnte es nur durch Hinzufügen von GRANT OPTION zum Laufen bringen, ohne dass die Fehlermeldung immer verweigert wurde

GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'localhost' WITH GRANT OPTION;
12
GnanaPrakash

Nur Zugriff vom Remote-Server auf die Mydb-Datenbank

GRANT ALL PRIVILEGES ON mydb.* TO 'root'@'192.168.2.21';

Zugriff vom Remote-Server auf alle Datenbanken.

GRANT ALL PRIVILEGES ON * . * TO 'root'@'192.168.2.21';
5
Developer

Um alle Berechtigungen in der Datenbank zu erteilen: mydb für den Benutzer: myuser, führen Sie einfach Folgendes aus:

GRANT ALL ON mydb.* TO 'myuser'@'localhost';

oder:

GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'localhost';

Das Schlüsselwort PRIVILEGES ist nicht erforderlich.

Ich weiß auch nicht, warum die anderen Antworten darauf hinweisen, dass der IDENTIFIED BY 'password' am Ende des Befehls steht. Ich glaube, dass es nicht erforderlich ist.

0
pgmank