Benutzer mit Berechtigungsvergabe können neuen Benutzern mit neuer Datenbank keine Berechtigungen erteilen.

Benutzer mit Berechtigungsvergabe können neuen Benutzern mit neuer Datenbank keine Berechtigungen erteilen.

Ich verwende: mysql 5.5.43-0 auf Ubuntu 14.04.1

Ich versuche einen neuen Admin-Benutzer (Admin) anzulegen, der folgende Dinge tun darf:

  • a) Anlegen eines neuen Benutzers (dbuser1) mit Passwort - (Berechtigung "Benutzer anlegen" -> funktioniert)
  • b Passwort für neu erstellten Benutzer festlegen - (Berechtigung „Einfügen/Aktualisieren der Tabelle mysql.user“ -> funktioniert)
  • c Nutzungsrechte für alle Tabellen - (GRANT USAGE ON.TO 'dbuser1'@'localhost' IDENTIFIZIERT DURCH ... -> funktioniert)
  • d neue Datenbank erstellen (db4user1) - (Berechtigung "Erstellen" -> funktioniert)
  • e Erteilen aller Rechte - (GRANT ALL PRIVILEGES ON db4user1.* TO 'dbuser1'@'localhost';) - (Berechtigungserteilung für Admin -> funktioniert nicht)

Ich hatte das Problem mit Schritt e.

Mysql zeigt den folgenden Fehler an: #1044 - Zugriff für Benutzer 'admin'@'localhost' auf Datenbank 'db4user1' verweigert

Frage: Welche zusätzlichen Berechtigungen/Privilegien benötigt mein Administrator, um die oben genannten Aktionen und nicht mehr auszuführen?

Ich glaube, mein Administratorbenutzer hatte alle Berechtigungen, um einem bestehenden Benutzer Zugriff auf eine neu erstellte Datenbank zu gewähren ...

Aber es hat nicht funktioniert.

Vielen Dank für Ihre Hilfe

Stephan

CREATE USER 'dbuser1'@'localhost' IDENTIFIED BY 'password1234'
SET PASSWORD FOR 'dbuser1'@'localhost' = PASSWORD('password5678')
GRANT USAGE ON *.* TO 'dbuser1'@'localhost' IDENTIFIED BY 'password5678' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;
CREATE DATABASE IF NOT EXISTS `db4user1`; 
GRANT ALL PRIVILEGES ON `db4user1`.* TO 'dbuser1'@'localhost'; 

-> #1044 - Zugriff für Benutzer „admin“@„localhost“ auf Datenbank „db4user1“ verweigert

Antwort1

Für mich sieht es so aus, als ob Sie lediglich einen weiteren Administrator wie den Standardadministrator erstellen möchten root. Sie können daher eine einfache Syntax wie diese verwenden:

GRANT ALL ON *.* TO admin@localhost IDENTIFIED BY 'passwd5678' WITH GRANT OPTION;

Antwort2

Die Mindestanforderung, um einem bestimmten Benutzer ( adminhier) ausreichende Rechte zu erteilen, um alle Berechtigungen für eine bestimmte Datenbank (hier) gewähren zu können, db4user1lautet:

GRANT DROP ,
REFERENCES ,
INDEX ,
ALTER ,
CREATE TEMPORARY TABLES ,
LOCK TABLES ,
CREATE VIEW ,
EVENT,
TRIGGER,
SHOW VIEW ,
CREATE ROUTINE,
ALTER ROUTINE,
EXECUTE ON  `db4user1` . * TO  'admin'@'localhost' WITH GRANT OPTION ;

Fast alles...außer:

  • Create(Strukturumfang)
  • Select, Insert, Update, Delete(Datenumfang)

Von hier aus verwenden Sie adminden Benutzer:

mysql> GRANT ALL PRIVILEGES ON db4user1.* TO 'dbuser1'@'localhost';
Query OK, 0 rows affected (0.00 sec)

Ich gebe zu, dass ich keine Dokumente dazu gefunden habe. Ich habe in der Vergangenheit viel Zeit damit verbracht, alle Möglichkeiten durch Ausschlussverfahren nacheinander zu testen ...

verwandte Informationen