Как предоставить привилегию создания базы данных пользователю в MySQL

11

Следующая команда предоставляет все привилегии во всех базах данных для пользователя 'admin'. Но это не позволяет администратору создавать базу данных.

GRANT ALL ON * . * TO 'admin'@'localhost'; 

Как я могу предоставить доступ 'admin' для создания базы данных?

Когда я пытаюсь создать базу данных, я получаю следующую ошибку -

ОШИБКА 1044 (42000): доступ пользователя 'admin' @ 'localhost' к базе данных 'newdb' запрещен

Абхишек
источник
Вы использовали GRANT ALL ON *.* TO 'admin'@'localhost';? В вашем примере вы говорите, что вы запустили:, GRANT ALL ON * . * TO 'admin'@'hostname';но hostnameэто отличный хост, чем localhost.
пятницу
имя хоста 'localhost'.
Абхишек,
Вы были связаны как "root", когда запускали это GRANT?
Рик Джеймс
Да. Я был подключен как «root», когда запустил этот GRANT.
Абхишек
Вы пробовали flush privileges;как root?
dwjv

Ответы:

5

ВСЕ привилегии включают в себя «ВСЕ» из них, за исключением «С ГРАНТОВЫМ ВАРИАНТОМ» ... Таким образом, приведенная выше команда также позволит администратору создавать базу данных.

Вы можете показать ошибку, которую вы получаете. Обратите внимание, что в вышеупомянутом GRANT вы также не указали пароль для администратора.

Обновить:

Вы должны быть в состоянии сделать следующее:

войдите как root и создайте пользователя:

$] mysql -uroot -p
mysql> grant all privileges on *.* to 'admin'@'localhost';

войти в систему как администратор (без пароля):

$] mysql -uadmin -p
mysql> create database admin;

При входе в систему вы можете подтвердить свои права следующим образом:

mysql> show grants;

или

mysql> show grants for current_user();

mysql> select current_user() покажет вам, пользователь вы вошли как.

mysql_user
источник
Я добавил ошибку в свой вопрос.
Абхишек,
@abhishek обновить ответ .... кстати, какая команда вызывает вышеуказанную ошибку? Проверьте, какие гранты получает ваш пользователь? Вы уверены, что подключаетесь как администратор?
mysql_user
Да, я на 100% уверен, что подключаюсь как администратор.
Абхишек,
mysql> показать гранты; + ------------------------------------------------- ---------------------------- + | Гранты для admin @ localhost | + ------------------------------------------------- ---------------------------- + | ГРАНТОВОЕ ИСПОЛЬЗОВАНИЕ НА . TO 'admin' @ 'localhost', ОПРЕДЕЛЯЕМЫЙ ПАРОЛЕМ <секрет> | | ПРЕДОСТАВЛЯЙТЕ ВСЕ ПРИВИЛЕГИИ newdb. * TO 'admin' @ 'localhost' | + ------------------------------------------------- ---------------------------- + 2 ряда в наборе (0,00 с)
Абхишек
Обратите внимание, что у вас есть все привилегии только на mbdb ... так что вы не сможете работать с другими БД!
mysql_user
0

Новый пользователь не имеет права что-либо делать с базами данных. Фактически, если новый пользователь даже попытается войти в систему (с помощью пароля и пароля), он не сможет получить доступ к оболочке MySQL.

Поэтому вам необходимо предоставить пользователю доступ

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

Звездочки в этой команде относятся к базе данных и таблице (соответственно), к которым они имеют доступ - эта конкретная команда позволяет пользователю читать, редактировать, выполнять и выполнять все задачи во всех базах данных и таблицах.

После того, как вы завершили разрешения, которые вы хотите настроить для своих новых пользователей, всегда обязательно перезагрузите все привилегии.

FLUSH PRIVILEGES;

Теперь все изменения вступят в силу.

Mathew
источник
Права на сброс не требуются для команд GRANT.
mysql_user 15.09.15
Да ... я согласен .... Но FLUSH PRIVILAGES требуется, когда мы изменяем грант для таблиц напрямую, используя такие выражения, как INSERT, UPDATE или DELETE ... Спасибо @mysql_user
Мэтью