После того, как вы установили и настроили MySQL, вам необходимо создать базы данных, таблицы и пользователей. Конечно, вы можете сделать это от имени суперпользователя root, но это не безопасно. Да и большинство приложений не позволят вам такой вольности, например, Phpmyadmin не даст авториrзоваться от имени суперпользователя.
Поэтому для каждой базы данных нужно создавать отдельных пользователей и настраивать для них права. В этой статье мы рассмотрим, как выполняется создание пользователя mysql, а также настройка его прав.
Создание пользователя mysql
1. Как создать пользователя MySQL
Предположим, что база данных уже создана и называется test_database. Нам нужно открыть клиент базы данных. Для этого наберите в терминале:
Теперь можно работать. Для создания пользователя используется команда 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
Создать пользователя – это ещё далеко не всё, теперь нужно назначить ему права. Для этого используется команда 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, выполните:
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 в памяти. Для этого выполните:
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.
Нет похожих записей
alt=”Creative Commons License” width=”” />
Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна.