====== Создание базы данных и пользователя ====== --- //[[winogradov@list.ru|lonebuddha]] 2024/03/23 22:13// В этой инструкции мы рассмотрим, как в MySQL создать пользователя и базу, как удалить базу, как выдать пользователям привилегии. По умолчанию вам будет доступен пользователь root. Используйте его, чтобы выполнить первоначальную настройку: создать первую БД и других пользователей. ===== Создание базы данных ===== Подключитесь к MySQL под учётной записью root mysql -u root -p Посмотрите, какие базы уже хранятся на сервере: SHOW DATABASES; Даже если вы ещё ничего не делали, таблица не будет пустой. В ней отобразятся служебные БД. Удалять их не нужно. Чтобы создать базу данных MySQL, выполните: CREATE DATABASE my_timeweb; Нельзя, чтобы у двух и более БД были одинаковые имена. Если ещё раз создать базу my_timeweb, то появится сообщение об ошибке с кодом 1007. Чтобы предотвратить появление ошибки, можно в MySQL создать новую базу с помощью расширенного синтаксиса: CREATE DATABASE IF NOT EXISTS my_timeweb; В этом случае СУБД проверит условие. Если БД с таким именем не существует, то MySQL создаст её. Если же такая база была создана ранее, то ничего не изменится. ===== Удаление базы данных ===== Для удаления выполните: DROP DATABASE my_timeweb; У DROP DATABASE также есть расширенный синтаксис, который помогает избежать ошибок: DROP DATABASE IF EXISTS my_timeweb; Запрос будет выполнен только при наличии БД с таким именем. ===== Создание пользователя ===== 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 User 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'; Если учётная запись не имела никаких прав в этой БД, то ничего не изменится. {{tag>MySQL}}