Назад | Перейти на главную страницу

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

Я использую: mysql 5.5.43-0 в ubuntu 14.04.1

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

У меня была проблема с шагом 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

Минимальное требование для предоставления достаточных прав данному пользователю (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)

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

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

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