
Цель урока: Научиться выполнять базовые, но самые важные административные задачи внутри сервера баз данных. Мы освоим SQL-команды для создания новой базы данных, создания нового пользователя и, что самое главное, для выдачи этому пользователю строго ограниченных прав только на его базу данных.
Часть 1: Теория. Принцип изоляции
Представьте, что ваш сервер MariaDB - это большой банк с множеством сейфовых ячеек.
-
База данных (Database): Это отдельная, изолированная сейфовая ячейка. Данные одного сайта (например, site_one_db) хранятся в одной ячейке и никак не пересекаются с данными другого сайта (site_two_db), которые лежат в соседней. Для каждого сайта всегда создается своя собственная, отдельная база данных.
-
Пользователь (User): Это клиент банка. Но в отличие от root-пользователя БД, у которого есть мастер-ключ от всех ячеек, обычный пользователь - это простой клиент.
-
Привилегии (Privileges): Это ключ от конкретной ячейки, который вы выдаете клиенту.
Золотое правило безопасности:
Никогда не используйте root-пользователя БД в конфигурационных файлах ваших сайтов! Это все равно что оставить мастер-ключ от всего банка под ковриком. Если ваш сайт взломают, злоумышленник получит доступ ко всем базам данных на сервере.
Правильный подход - это принцип наименьших привилегий:
-
Для сайта site_one мы создаем отдельную базу данных site_one_db.
-
Для этого же сайта мы создаем отдельного пользователя site_one_user с надежным паролем.
-
Мы выдаем пользователю site_one_user ключ (привилегии) только от его сейфовой ячейки site_one_db. Он не сможет даже "посмотреть" на существование других ячеек.
Часть 2: Практика. Работа в консоли mariadb
Все следующие шаги выполняются внутри консоли сервера баз данных.
Шаг 1: Вход в консоль
Подключаемся к серверу баз данных от имени root.
# Эта команда работает без пароля, так как мы используем unix_socket аутентификацию
mariadb
Ваша командная строка изменится на MariaDB [(none)]>.
Шаг 2: Создание новой базы данных
Давайте создадим базу данных для нашего будущего сайта. Назовем ее my_website_db.
Синтаксис: CREATE DATABASE [имя_базы_данных];
CREATE DATABASE my_website_db;
-
CREATE DATABASE: Команда SQL.
-
my_website_db: Имя, которое мы придумали.
-
;: Точка с запятой в конце - обязательна!
Ответ сервера: Query OK, 1 row affected ... означает, что все прошло успешно.
Проверка:
SHOW DATABASES;
Теперь в списке баз данных, помимо системных, вы должны увидеть и вашу новую my_website_db.

Шаг 3: Создание нового пользователя
Теперь создадим "клиента" для этой базы. Назовем его my_website_user. Ему нужно задать надежный пароль.
Синтаксис: CREATE USER '[имя_пользователя]'@'localhost' IDENTIFIED BY '[пароль]';
CREATE USER 'my_website_user'@'localhost' IDENTIFIED BY 'a_very_strong_password';
Разбор команды:
-
CREATE USER 'my_website_user': Создаем пользователя. Имя пользователя принято брать в одинарные кавычки.
-
@'localhost': Это очень важная часть! Она означает, что этот пользователь сможет подключаться к серверу баз данных только "изнутри", с этого же сервера (с localhost). Это максимально безопасный вариант. Веб-сервер и база данных находятся на одной машине, поэтому внешнего доступа ему не нужно.
-
IDENTIFIED BY '...': Задаем пароль для этого пользователя. Замените a_very_strong_password на свой собственный, сложный пароль.
Шаг 4: Выдача привилегий (выдаем ключ от ячейки)
Сейчас наш my_website_user существует, но он ничего не может делать. Он как клиент, который зарегистрировался в банке, но еще не получил ключ от ячейки.
Синтаксис: GRANT [какие_права] ON [какая_база_данных].* TO '[пользователь]'@'localhost';
GRANT ALL PRIVILEGES ON my_website_db.* TO 'my_website_user'@'localhost';
Разбор команды:
-
GRANT ALL PRIVILEGES: "Выдать все права". Это стандартная практика для пользователя, который должен полностью управлять своим сайтом. Он сможет создавать таблицы, читать, записывать, обновлять и удалять данные.
-
ON my_website_db.*: "На все (*) таблицы внутри базы данных my_website_db". Мы даем ему полный контроль, но только в пределах его собственной "сейфовой ячейки".
-
TO 'my_website_user'@'localhost': "Кому именно" мы выдаем эти права.
Шаг 5: Применение изменений
Чтобы сервер баз данных немедленно "узнал" о новых правах, нужно выполнить специальную команду.
FLUSH PRIVILEGES;
Шаг 6: Выход из консоли root
Наша административная работа закончена.
exit;
Часть 3: Практика. Проверка работы нового пользователя
Давайте убедимся, что наш новый пользователь работает, но при этом ограничен в правах.
Шаг 1: Попытка входа под новым пользователем
Теперь попробуем подключиться, используя имя нового пользователя и его пароль.
# mariadb -u [имя_пользователя] -p
mariadb -u my_website_user -p
-
-u: Указывает имя пользователя.
-
-p: Говорит клиенту, что мы будем вводить пароль.
Система запросит Enter password:. Введите тот пароль, который вы задали на Шаге 3.
Если все верно, вы войдете в консоль, и строка приглашения будет выглядеть так: MariaDB [(none)]>.
Шаг 2: Проверка прав
-
Попробуем посмотреть все базы данных:
SHOW DATABASES;Результат: Вы увидите только information_schema и вашу my_website_db. Вы не видите системные базы (mysql, performance_schema) и базы других пользователей. Это доказывает, что изоляция работает!

-
Выберем нашу базу для работы:
USE my_website_db;Командная строка изменится на MariaDB [my_website_db]>.
-
Попробуем создать в ней таблицу (у нас есть на это права):
CREATE TABLE test_table (id INT);Команда должна выполниться с Query OK.
-
Попробуем создать другую базу данных (у нас нет на это прав):
CREATE DATABASE another_db;Вы получите ошибку: ERROR 1044 (42000): Access denied for user 'my_website_user'@'localhost' to database 'another_db'. Это идеальный результат! Система не дала нашему пользователю выйти за пределы его "песочницы".
Шаг 5: Выход
exit;
Часть 4: Заключение
Поздравляю! Вы освоили фундаментальные принципы управления доступом в MySQL/MariaDB. Это один из важнейших навыков для обеспечения безопасности ваших веб-приложений. Вы научились:
-
Следовать принципу изоляции: отдельная база и отдельный пользователь для каждого сайта.
-
Использовать SQL-команду
CREATE DATABASEдля создания новой базы. -
Использовать
CREATE USERдля создания пользователя, ограниченного подключением с localhost. -
Использовать
GRANTдля выдачи пользователю прав только на его собственную базу данных. -
Проверять на практике, что ограничения прав действительно работают.
На следующем, 49-м уроке, мы научимся делать резервные копии (бэкапы) наших баз данных. Мы освоим утилиту mysqldump, которая позволяет создавать полный "снимок" базы данных в виде текстового файла, и научимся восстанавливать базу из этого файла.
Перейти к просмотру - УРОК №49.
Промо-код: PROMO15 - скидка 15%!
Введите при оформлении первого заказа на сайте: Hosting-VDS.com

