Пользователь с правами предоставления не может предоставлять права новому пользователю с новой базой данных.

Пользователь с правами предоставления не может предоставлять права новому пользователю с новой базой данных.

Я использую: mysql 5.5.43-0 на Ubuntu 14.04.1

Я пытаюсь создать нового пользователя-администратора (admin), которому разрешено выполнять следующие действия:

  • создание новых пользователей (dbuser1) с паролем - (разрешение "создать пользователя" -> работает)
  • b установить пароль для нового созданного пользователя - (разрешение "вставить/обновить таблицу mysql.user" -> работает)
  • c предоставить разрешение на использование для всех таблиц - (GRANT USAGE ON.К 'dbuser1'@'localhost' ИДЕНТИФИЦИРОВАНО ... -> работает)
  • d создание новой базы данных (db4user1) - (разрешение "создать" -> работает)
  • e предоставление всех привилегий - (GRANT ALL PRIVILEGES ON db4user1.* TO 'dbuser1'@'localhost';) - (предоставление разрешения для администратора -> не работает)

У меня возникла проблема с шагом e.

Mysql выдает следующую ошибку: #1044 - Отказано в доступе для пользователя 'admin'@'localhost' к базе данных 'db4user1'

Вопрос: Какие дополнительные разрешения/привилегии нужны моему администратору, чтобы выполнять вышеуказанные действия и ничего более?

Я думаю, что у моего пользователя-администратора были все разрешения на предоставление существующему пользователю доступа к новой созданной базе данных...

Но это не сработало.

Спасибо за вашу помощь

Стефан

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 - Доступ запрещен для пользователя 'admin'@'localhost' к базе данных 'db4user1'

решение1

Мне кажется, что вы хотите создать просто еще одного администратора, например default root, поэтому вы можете использовать простой синтаксис, например:

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

решение2

Минимальное требование для предоставления достаточных прав данному пользователю ( adminздесь), чтобы иметь возможность предоставить все привилегии для данной базы данных ( db4user1здесь), следующее:

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 ;

Почти всё...кроме:

  • Create(структурная область)
  • Select, Insert, Update, Delete(Область данных)

Отсюда, используя adminпользователя:

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

Признаюсь, я не нашел никаких документов по этому поводу. В прошлом я потратил много времени, проверяя все возможности методом исключения, одну за другой...

Связанный контент