В этой инструкции мы рассмотрим, как в MySQL создать пользователя и базу, как удалить базу, как выдать пользователям привилегии.
По умолчанию вам будет доступен пользователь root. Используйте его, чтобы выполнить первоначальную настройку: создать первую БД и других пользователей.
Приведенные команды подойдут для управления MySQL, развернутой на сервере. Если же вы пользуетесь облачной базой данных, пользователь и сама база будут созданы автоматически при создании БД в панели управления.
Подключитесь к MySQL под учётной записью root:
mysql -u root -p
Посмотрите, какие базы уже хранятся на сервере:
SHOW DATABASES;
Даже если вы ещё ничего не делали, таблица не будет пустой. В ней отобразятся служебные БД. Удалять их не нужно.
Чтобы создать базу данных MySQL, выполните:
CREATE DATABASE my_timeweb;
Вместо my_timeweb
укажите имя, которое необходимо задать новой БД.
Чтобы убедиться, что новая база появилась на сервере, ещё раз выполните:
SHOW DATABASES;
В таблице отобразится название БД, которую вы только что создали.
Нельзя, чтобы у двух и более БД были одинаковые имена. Если ещё раз создать базу my_timeweb
, то появится сообщение об ошибке с кодом 1007.
Чтобы предотвратить появление ошибки, можно в MySQL создать новую базу с помощью расширенного синтаксиса:
CREATE DATABASE IF NOT EXISTS my_timeweb;
В этом случае СУБД проверит условие. Если БД с таким именем не существует, то MySQL создаст её. Если же такая база была создана ранее, то ничего не изменится.
Для удаления выполните:
DROP DATABASE my_timeweb;
Вместо my_timeweb
укажите имя БД, которую следует удалить.
У DROP DATABASE
также есть расширенный синтаксис, который помогает избежать ошибок:
DROP DATABASE IF EXISTS my_timeweb;
Запрос будет выполнен только при наличии БД с таким именем.
DROP DATABASE
удалит БД и связанные с ней данные. Интерфейс командной строки MySQL не предложит вам подтвердить действие. Поэтому применяйте DROP DATABASE
с осторожностью.
dbaas
MySQL предлагает удобную систему управления юзерами и их привилегиями. Можно менять права доступа, разрешать и запрещать выполнение действий на сервере.
Чтобы в MySQL создать пользователя, авторизуйтесь как root и выполните в консоли:
CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
После выполнения этой команды пользователь с именем user получит доступ к экземпляру MySQL с локальной машины (localhost). Прямой доступ с других хостов будет запрещён. Для идентификации будет использован пароль.
Если нужно указать не конкретный хост, а целый пул, используйте знак %
. Например:
CREATE USER 'sub_user'@'10.0.%' IDENTIFIED BY 'password;
Запись 10.0.%
указывает на то, что получить доступ к MySQL можно с любого клиента, IP-адрес которого начинается с «10.0.».
Вы можете использовать подстановочный знак на любом уровне IP-адреса в определении хоста. Чтобы юзер был доступен со всех хостов, используйте запись 'user'@'%'
.
Чтобы посмотреть список учетных записей, выполните:
SELECT * FROM mysql.user;
Удалить учётную запись MySQL можно командой DROP USER
:
DROP USER 'user'@'localhost';
Будьте осторожны, команда выполняется без дополнительного подтверждения.
Без привилегий пользователь может подключиться к серверу MySQL, но не может работать с данными и выполнять другие действия.
В этой таблице — привилегии, которые часто выдают пользователям. Более подробный список смотрите в документации.
Привилегия |
Что может делать пользователь |
ALTER |
Менять структуру таблицы или БД |
CREATE |
Создавать новые БД и таблицы |
DELETE |
Удалять строки в таблице |
INSERT |
Добавлять строки в таблицу |
SELECT |
Читать данные из таблицы |
UPDATE |
Обновлять данные в таблице |
DROP |
Удалять БД |
Для выдачи прав нужно выполнить команду GRANT
. Например:
GRANT SELECT, INSERT ON my_timeweb.* TO 'user'@'localhost';
Выполнять эту команду нужно из-под учётной записи root, так как у неё есть привилегия на GRANT
. После применения такого запроса user сможет читать и добавлять строки в таблицы БД my_timeweb
.
Чтобы выдать пользователю все права, кроме тех, что есть у root, выполните:
GRANT ALL PRIVILEGES ON my_timeweb.* TO 'user'@'localhost';
Чтобы отозвать привилегии, используйте команду REVOKE
. У неё такой же синтаксис, как у GRANT
. Но результат будет противоположным.
Например, если вы хотите отозвать привилегии SELECT
и INSERT
у user в базе данных my_timeweb
, введите следующее:
REVOKE SELECT, INSERT ON my_timeweb.* FROM 'user'@'localhost';
Если учётная запись не имела никаких прав в этой БД, то ничего не изменится.
Разверните MySQL в облаке за минуту
Как создать БД в MySQL:
CREATE DATABASE IF NOT EXISTS [database_name];
Как удалить БД:
DROP DATABASE IF EXISTS [database_name]
Как создать нового пользователя MySQL:
CREATE USER 'user'@'host' IDENTIFIED BY 'password';
Как удалить пользователя:
DROP USER 'user'@'host';
Это минимальный набор запросов, который поможет в MySQL создать базу данных и пользователя. Особенности использования этих и других возможностей СУБД подробно описаны в документации MySQL.
Вы также можете использовать для управления графический интерфейс. Его предоставляют такие инструменты, как PhpMyAdmin или MySQL Workbench. В их документации подробно описаны действия для создания и работы с БД и пользователями.
Что бы выданные права вступили в силу, нужно воспользоваться командой FLUSH PRIVILEGES;
Согласно документации MySQL, выполнение FLUSH PRIVILEGES необходимо только при изменении прав напрямую в таблице mysql.db (однако этот способ является небезопасным и не рекомендуется).
При выдаче прав через GRANT, а также при выполнении команд REVOKE, SET PASSWORD, и RENAME USER команда FLUSH PRIVILEGES не требуется. Изменения применятся автоматически.