После того, как вы установили и настроили MySQL, вам необходимо создать базы данных, таблицы и пользователей. Конечно, вы можете сделать это от имени суперпользователя root, но это не безопасно. Да и большинство приложений не позволят вам такой вольности, например, Phpmyadmin не даст авториrзоваться от имени суперпользователя.
Поэтому для каждой базы данных нужно создавать отдельных пользователей и настраивать для них права. В этой статье мы рассмотрим, как выполняется создание пользователя mysql, а также настройка его прав.
Содержание статьи
Создание пользователя mysql
1. Как создать пользователя MySQL
Предположим, что база данных уже создана и называется test_database. Нам нужно открыть клиент базы данных. Для этого наберите в терминале:
mysql -u root -p
Теперь можно работать. Для создания пользователя используется команда CREATE USER, её синтаксис такой:
CREATE USER 'имя_пользователя'@'хост' IDENTIFIED BY 'пароль';
Кроме имени пользователя, здесь нужно задать хост, с которого может авторизоваться этот пользователь. Здесь может быть доменное имя, IP-адрес, адрес подсети или знак "%", который означает все возможные хосты. Это очень удобно, потому что вы можете создать пользователя, к которому можно будет подключится только локально или настроить отдельно права для локального или удалённого пользователя.
Например, давайте создадим локального пользователя test_user с паролем password:
Или можно создать пользователя, который будет доступен со всех хостов:
Смотрим наших пользователей:
Все пользователи созданы.
2. Права пользователя MySQL
Создать пользователя - это ещё далеко не всё, теперь нужно назначить ему права. Для этого используется команда GRANT. У неё такой синтаксис:
GRANT привилегии ON база_данных . таблица TO 'имя_пользователя'@'хост';
Здесь можем дать определённые привилегии для опредёленного пользователя к базе данных или таблице. Если нужно дать права для всех баз данных или таблиц, используйте вместо названия звездочку - "*". Вот основные права пользователя MySQL, которые вы можете использовать:
- ALL PRIVILEGES - все, кроме GRANT;
- USAGE PRIVILEGES - никаких привилегий;
- SELECT - делать выборки из таблиц;
- INSERT - вставлять данные в таблицу;
- UPDATE - обновлять данные в таблице;
- DELETE - удалять данные из таблицы;
- FILE - разрешает читать файлы на сервере;
- CREATE - создавать таблицы или базы данных;
- ALTER - изменять структуру таблиц;
- INDEX - создавать индексы для таблиц;
- DROP - удалять таблицы;
- EVENT - обработка событий;
- TRIGGER - создание триггеров.
Также доступны такие привилегии администрирования баз данных:
- GRANT - изменять права пользователей;
- SUPER - суперпользователь;
- PROCESS - получение информации о состоянии MySQL;
- RELOAD - позволяет перезагружать таблицы привилегий;
- SHUTDOWN - позволяет отключать или перезапускать базу данных;
- SHOW DATABASES - просмотр списка баз данных;
- LOCK TABLES - блокирование таблиц при использовании SELECT;
- REFERENCES - создание внешних ключей для связывания таблиц;
- CREATE USER - создание пользователей;
Чтобы дать права пользователю MySQL на обновление и добавление записей для базы данных test_database, выполните:
Дальше дадим этому же пользователю все права над этой базой данных:
Теперь посмотрим привилегии нашего пользователя:
Мы видим, что для всех баз данных и таблиц привелегий нет, но зато есть все привилегии для базы данных test_database. Вот так это работает. После обновления прав пользователя необходимо обновить таблицу прав пользователей MySQL в памяти. Для этого выполните:
3. Удаление прав пользователя MySQL
Чтобы отозвать права у пользователя MySQL, используйте команду REVOKE вместо GRANT. Её синтаксис похож на GRANT:
REVOKE привилегии ON база_данных . таблица FROM 'имя_пользователя'@'хост';
Например, заберём все права на базу данных test_database у нашего пользователя:
4. Создание суперпользователя MySQL
Если вам необходимо создать пользователя со всеми правами MySQL на замену для root, то можно использовать такую конструкцию:
Даём все привилегии для пользователя test_user над всеми базами данными и всеми таблицами. Но наш пользователь не сможет давать права другим пользователям. Чтобы это исправить, нужно дать ему привилегию GRANT, а для этого используется такая команда:
Теперь этот пользователь является суперпользователем для MySQL и, авторизовавшись от его имени в PhpMyAdmin, вы можете делать всё то же самое, что и с помощью root.
Выводы
В этой статье мы рассмотрели, как создать пользователя MySQL в Ubuntu или в любом другом дистрибутиве. Работа в командной строке с MySQL может показаться довольно сложной. Но сделать это надо всего один раз -после установки базы данных. А дальше можно выполнять все действия в Phpmyadmin.
Друзья, у вас опечатка https://prnt.sc/v8w2xv
mysql> GRANT ALL PRIVILEGES ON * . * TO 'dbuser'@'localhost' WITH GRANT OPTION;
ERROR 1410 (42000): You are not allowed to create a user with GRANT
статью обновить пора.
Все получилось. Спасибо
"Для этого используется команда GRAT" - неверно.
"Для этого используется команда GRANT" - верно.
ничего обновлять ненадо. У вас черным по белому написано, что пользователь от которого вы выполянете запрос для создания суперпользователя НЕ ИМЕЕТ НА ЭТО РАЗРЕШЕНИЙ, т.е. нет прав на создание пользователя с такими правами.
А делать то что? Как дальше то работать, как суперпользователя делать?
Привет. Создал сервак с мускулом, php, phpmyadmin Во время установки создался пользователь phpmyadmin. Это произошло в псефдографике в терминале. Теперь есть только один пользователь без привелегий. Как поступить для создания суперпользователя? В терминальном сеансе из под sudo su при создании суперпользователя этой коммандой GRANT ALL PRIVILEGES ON * . * TO 'test_user'@'localhost'; выдаёт ошибку
ERROR 1410 (42000): You are not allowed to create a user with GRANT
Как и что делать?
Привет коллеги. Что хочется сказать. Промудохался с мускулом. Ничего не получилось. Получал кучу варнингов и установка юзера просто задолбала. Потом плюнул и просто поставил с первого тычка maria db. Что там разработчики мускула накосячили, не могу понять.
спасибо