Главная >> Инструкции >> Создание пользователя MySQL

Создание пользователя MySQL

После того, как вы установили и настроили MySQL, вам необходимо создать базы данных, таблицы и пользователей. Конечно, вы можете сделать это от имени  суперпользователя root, но это не безопасно. Да и большинство приложений не позволят вам такой вольности, например, Phpmyadmin не даст авториrзоваться от имени суперпользователя.

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


Содержание статьи

Создание пользователя mysql

1. Как создать пользователя MySQL

Предположим, что база данных уже создана и называется test_database. Нам нужно открыть клиент базы данных. Для этого наберите в терминале:

mysql -u root -p

Теперь можно работать. Для создания пользователя используется команда CREATE USER, её синтаксис такой:

CREATE USER 'имя_пользователя'@'хост' IDENTIFIED BY 'пароль';

Кроме имени пользователя, здесь нужно задать хост, с которого может авторизоваться этот пользователь. Здесь может быть доменное имя, IP-адрес, адрес подсети или знак "%", который означает все возможные хосты. Это очень удобно, потому что вы можете создать пользователя, к которому можно будет подключится только локально или настроить отдельно права для локального или удалённого пользователя.

Например, давайте создадим локального пользователя test_user с паролем password:

CREATE USER 'test_user'@'localhost' IDENTIFIED BY 'password';

Или можно создать пользователя, который будет доступен со всех хостов:

CREATE USER 'test_user'@'%' IDENTIFIED BY 'password';

Смотрим наших пользователей:

SELECT User,Host FROM mysql.user;

Все пользователи созданы.

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, выполните:

GRANT SELECT,UPDATE,INSERT ON test_database . * TO 'test_user'@'localhost';

Дальше дадим этому же пользователю все права над этой базой данных:

GRANT ALL PRIVILEGES ON test_database . * TO 'test_user'@'localhost';

Теперь посмотрим привилегии нашего пользователя:

SHOW GRANTS FOR 'test_user'@'localhost';

Мы видим, что для всех баз данных и таблиц привелегий нет, но зато есть все привилегии для базы данных test_database. Вот так это работает. После обновления прав пользователя необходимо обновить таблицу прав пользователей MySQL  в памяти. Для этого выполните:

FLUSH PRIVILEGES;

3. Удаление прав пользователя MySQL

Чтобы отозвать права у пользователя MySQL, используйте команду REVOKE вместо GRANT. Её синтаксис похож на GRANT:

REVOKE привилегии ON база_данных . таблица FROM 'имя_пользователя'@'хост';

Например, заберём все права на базу данных test_database у нашего пользователя:

REVOKE ALL PRIVILEGES ON test_database . * FROM 'test_user'@'localhost';

4. Создание суперпользователя MySQL

Если вам необходимо создать пользователя со всеми правами MySQL на замену для root, то можно использовать такую конструкцию:

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

Даём все привилегии для пользователя test_user над всеми базами данными и всеми таблицами. Но наш пользователь не сможет давать права другим пользователям. Чтобы это исправить, нужно дать ему привилегию GRANT, а для этого используется такая команда:

GRANT ALL PRIVILEGES ON * . * TO 'test_user'@'localhost' WITH GRANT OPTION;

Теперь этот пользователь является суперпользователем для MySQL и, авторизовавшись от его имени в PhpMyAdmin, вы можете делать всё то же самое, что и с  помощью root.

Выводы

В этой статье мы рассмотрели, как создать пользователя MySQL в  Ubuntu или в любом другом дистрибутиве. Работа в командной строке с MySQL может показаться довольно сложной. Но сделать это надо всего один раз -после установки базы данных. А дальше можно выполнять все действия в Phpmyadmin.

Pеклама
Посмотреть детали

Anubis – это максимально легкое open-source решение, созданное специально для защиты небольших веб-ресурсов от бесконечного потока запросов от ботов и AI парсеров. Этот инструмент можно считать "ядерным вариантом", потому что он заставляет ботов выполнять вычисления похожие на майнинг криптовалюты. Но это неплохая альтернатива для тех, кто не может или не хочет использовать Cloudflare. Посмотреть детали

Creative Commons License
Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .

9 комментариев к “Создание пользователя MySQL”

  1. ничего обновлять ненадо. У вас черным по белому написано, что пользователь от которого вы выполянете запрос для создания суперпользователя НЕ ИМЕЕТ НА ЭТО РАЗРЕШЕНИЙ, т.е. нет прав на создание пользователя с такими правами.

    Ответить
  2. Привет. Создал сервак с мускулом, 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
    Как и что делать?

    Ответить
  3. Привет коллеги. Что хочется сказать. Промудохался с мускулом. Ничего не получилось. Получал кучу варнингов и установка юзера просто задолбала. Потом плюнул и просто поставил с первого тычка maria db. Что там разработчики мускула накосячили, не могу понять.

    Ответить

Оставьте комментарий