Я использую: 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)
Признаюсь, я не нашел никаких документов по этому поводу. В прошлом я потратил много времени, проверяя все возможности методом исключения, одну за другой...