После того, как вы установили и настроили 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
Создать пользователя — это ещё далеко не всё, теперь нужно назначить ему права. Для этого используется команда GRAT. У неё такой синтаксис:
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.