Как создать базу данных MySQL и подключить ее к сайту
Создать базу данных MySQL можно через консоль или phpMyAdmin. Для сайта выберите utf8mb4, заведите отдельного пользователя и выдайте ему права только на свою базу. После этого создайте таблицу, проверьте подключение и сохраните резервную копию.
- Что понадобится перед созданием базы
- Создание базы данных через командную строку
- Создание базы данных в phpMyAdmin
- Кодировка и сравнение: почему utf8mb4
- Создание пользователя и выдача прав
- Создание первой таблицы
- Подключение базы к сайту
- Резервная копия и восстановление
- Удаление базы данных и пользователя
- Ошибки при создании базы и подключении к ней
Что понадобится перед созданием базы
Подготовьте сервер MySQL и учетную запись с правом создавать базы. Сервер может работать локально, на VPS или у хостинг-провайдера.
- Сервер MySQL. Узнайте его хост, порт и доступность удаленных подключений.
- Администратор. Локально для создания базы часто используют учетную запись
root. - Способ подключения. Подойдут клиент
mysql, phpMyAdmin или панель хостинга.
Для локальной установки скачайте MySQL Community Server. На хостинге возьмите имя сервера, порт, логин и пароль в панели управления.
Откройте терминал и войдите под администратором:
mysql -u root -pВведите пароль после приглашения клиента. При успешном входе появится строка mysql>. Для удаленного сервера добавьте -h <хост>, а для другого порта – -P <порт>.
Если терминального доступа нет, откройте phpMyAdmin из панели хостинга. Войдите с выданными учетными данными и перейдите к созданию базы.
Создание базы данных через командную строку
Командная строка подходит для локальной разработки, VPS и повторяемой настройки сервера. Выполните запрос в клиенте MySQL под администратором.
CREATE DATABASE IF NOT EXISTS `my_db`
CHARACTER SET utf8mb4
COLLATE utf8mb4_0900_ai_ci;Параметр IF NOT EXISTS не прерывает запрос, если база уже создана. Явные параметры кодировки сохраняют одинаковые настройки при переносе проекта.
Проверьте список баз:
SHOW DATABASES;В результате найдите строку my_db. Затем выберите базу и проверьте текущий контекст:
USE `my_db`;
SELECT DATABASE();Запрос SELECT DATABASE() должен вернуть my_db. После этого новые таблицы будут создаваться внутри выбранной базы.
Имя базы может содержать до 64 символов. Для нового проекта берите латинские буквы, цифры и подчеркивания, например shop_data. Дефис требует обратных кавычек:
CREATE DATABASE `shop-data`;Такое имя придется заключать в обратные кавычки в каждом запросе. Двойные кавычки для имени базы не используйте.
Создание базы данных в phpMyAdmin
phpMyAdmin подходит, когда хостинг не дает терминальный доступ. Откройте его через панель хостинга и войдите под учетной записью с правом создания баз.
- Откройте раздел, где перечислены базы данных.
- Введите
my_dbв поле имени базы. - Выберите сравнение для кодировки
utf8mb4. - Нажмите кнопку создания базы.
После сохранения имя базы появится в дереве слева. Откройте его и убедитесь, что список таблиц пуст.
Если форма не предлагает подходящее сравнение или нужного действия нет в интерфейсе, откройте редактор SQL и выполните запрос из предыдущего раздела. Появление my_db в списке баз подтвердит результат.
Кодировка и сравнение: почему utf8mb4
Кодировка задает набор символов, а сравнение определяет сортировку и правила сравнения строк. Для нового сайта выбирайте utf8mb4 и совместимое с ним сравнение.
| Кодировка | Что хранит | Когда выбирать |
|---|---|---|
utf8mb4 | Полный Unicode, включая четырехбайтовые символы | Для новых сайтов и приложений |
utf8mb3 | Подмножество Unicode без части четырехбайтовых символов | Только для совместимости со старым проектом |
В MySQL имя utf8 исторически обозначает utf8mb3. Такая кодировка не хранит часть символов и может заменить эмодзи вопросительными знаками.
В MySQL 8.x для новых баз используется utf8mb4 с сопоставлением utf8mb4_0900_ai_ci по умолчанию. Явные параметры в запросе сохраняют ожидаемый результат при переносе базы между серверами.
Посмотрите параметры созданной базы:
SELECT DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME
FROM information_schema.SCHEMATA
WHERE SCHEMA_NAME = 'my_db';Измените настройки по умолчанию для новых таблиц так:
ALTER DATABASE `my_db`
CHARACTER SET utf8mb4
COLLATE utf8mb4_0900_ai_ci;Команда не преобразует уже созданные таблицы. Для них задайте кодировку отдельно через ALTER TABLE после резервного копирования.
Создание пользователя и выдача прав
Сайт подключайте отдельным пользователем. Учетная запись root имеет административные права, поэтому ошибка приложения может затронуть другие базы.
Выполните команды под администратором:
CREATE USER 'site'@'localhost' IDENTIFIED BY 'замените_этот_пароль';
GRANT ALL PRIVILEGES ON `my_db`.* TO 'site'@'localhost';
SHOW GRANTS FOR 'site'@'localhost';Команда GRANT выдает доступ к объектам my_db. Пользователь не получает права на соседние базы. Замените пароль на собственный и не храните его в публичном репозитории.
Значение localhost разрешает вход с того же сервера. Значение % разрешает подключения с разных адресов и расширяет поверхность атаки. Используйте его только при реальной потребности и ограничивайте доступ правилами сети.
Если сайт и MySQL работают на разных серверах, создайте учетную запись с нужным хостом вместо localhost. В результате SHOW GRANTS появится строка с разрешением для my_db.*.
В phpMyAdmin откройте раздел учетных записей пользователей. Создайте учетную запись site с хостом localhost и паролем. В блоке прав выберите базу my_db, отключите глобальные права и сохраните изменения. Если нужного пункта нет, выполните приведенные SQL-команды под администратором.
Создание первой таблицы
Выберите базу командой USE, затем создайте таблицу пользователей. Пример показывает первичный ключ, автоинкремент и типы INT, VARCHAR и DATETIME.
USE `my_db`;
CREATE TABLE `users` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(100) NOT NULL,
`email` VARCHAR(190) NOT NULL,
`created_at` DATETIME NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;InnoDB поддерживает первичный ключ и транзакции. Поле id получает новое число автоматически, а NOT NULL запрещает пустое значение.
Проверьте структуру таблицы:
DESCRIBE `users`;Результат должен содержать поля id, name, email и created_at.
В phpMyAdmin откройте базу и выберите действие создания таблицы. Введите имя users и число столбцов. Для id включите первичный ключ и автоинкремент, затем задайте типы остальных полей. После сохранения таблица появится в дереве базы.
Подключение базы к сайту
Приложению нужны четыре параметра: хост, имя базы, пользователь и пароль. В примере это localhost, my_db, site и пароль из команды CREATE USER.
- Хост. Адрес сервера MySQL.
- Имя базы.
my_db. - Пользователь.
site. - Пароль. Значение, заданное для пользователя.
В WordPress укажите эти значения в файле wp-config.php. Фреймворки часто читают их из файла .env. Не добавляйте файл с паролем в Git и не выводите пароль в сообщениях об ошибках.
Проверьте подключение теми же данными в терминале:
mysql -u site -p -h localhost my_dbВведите пароль и выполните SHOW TABLES;. В списке должна появиться таблица users. Такой вход подтверждает имя базы, пользователя, пароль и хост.
В MySQL 8.x сервер по умолчанию использует плагин caching_sha2_password. Старые PHP-клиенты и драйверы могут не поддерживать этот способ аутентификации. Обновите драйвер или библиотеку подключения, если приложение получает ошибку входа.
Резервная копия и восстановление
Дамп сохраняет структуру и данные в SQL-файле. Сделайте копию перед удалением базы, переносом проекта и изменением схемы.
Дамп одной базы создается командой:
mysqldump -u root -p --single-transaction my_db > my_db.sqlДля одной таблицы добавьте ее имя:
mysqldump -u root -p my_db users > users.sqlСжатый файл создайте через gzip:
mysqldump -u root -p --single-transaction my_db | gzip > my_db.sql.gzВосстановите обычный файл в пустую базу:
mysql -u root -p my_db < my_db.sqlСжатый дамп передайте клиенту через gzip:
gzip -dc my_db.sql.gz | mysql -u root -p my_dbПосле импорта проверьте таблицы и структуру:
USE `my_db`;
SHOW TABLES;
DESCRIBE `users`;
SELECT COUNT(*) AS `rows_count` FROM `users`;В списке должна быть users, а DESCRIBE должен показать четыре столбца. Нулевое число строк допустимо, если таблица была пустой до создания дампа.
В phpMyAdmin выберите базу и откройте раздел экспорта. Режим «Быстрый» показывает минимум настроек, а режим «Обычный» – все доступные настройки. Выберите SQL и запустите выгрузку.
Для восстановления откройте нужную базу и перейдите к импорту. Выберите SQL-файл и запустите загрузку. После завершения откройте список таблиц и просмотрите users. Наличие таблицы и ожидаемых столбцов подтверждает рабочий импорт.
Большой файл может превысить лимит загрузки PHP или панели хостинга. В таком случае используйте команду mysql из терминала.
Ежедневный дамп можно запускать через cron:
0 3 * * * mysqldump --defaults-extra-file=/путь/к/.my.cnf --single-transaction my_db | gzip > /путь/к/резервным-копиям/my_db-$(date +\%Y-\%m-\%d).sql.gzПараметр --defaults-extra-file стоит сразу после имени команды. Файл настроек хранит учетные данные, поэтому ограничьте права на него и на каталог резервных копий.
Храните хотя бы одну копию дампа отдельно от сервера. Так сбой хостинга не уничтожит единственный файл восстановления.
Удаление базы данных и пользователя
Перед удалением сохраните дамп. Команда DROP DATABASE удаляет таблицы и данные без корзины.
DROP DATABASE IF EXISTS `my_db`;После удаления базы удалите пользователя, если он больше не нужен:
DROP USER IF EXISTS 'site'@'localhost';Имя базы заключайте в обратные кавычки. Двойные кавычки могут вызвать ошибку идентификатора.
Ошибки при создании базы и подключении к ней
| Ошибка | Причина | Действие |
|---|---|---|
ERROR 1007 | База с таким именем уже существует | Выполните SHOW DATABASES; или добавьте IF NOT EXISTS. |
ERROR 1044 | Пользователь не получил права на базу | Выдайте GRANT ALL PRIVILEGES ON `my_db`.* TO 'site'@'localhost';. |
ERROR 1045 | Не совпали пароль, пользователь или хост | Сверьте пару 'site'@'localhost' и задайте пароль через ALTER USER. |
Unknown collation | Сервер не знает сравнение из дампа | Замените в копии дампа сравнение на поддерживаемое сервером и повторите импорт. |
| Ошибка аутентификации PHP | Старый драйвер не поддерживает caching_sha2_password | Обновите драйвер или библиотеку подключения. |
| Вместо кириллицы вопросики | Клиент, таблица или соединение используют другую кодировку | Задайте utf8mb4 для базы, таблиц и соединения. |
Если база существует, но сайт не подключается, повторите вход от имени site. Затем сравните четыре параметра подключения с настройками приложения и проверьте хост учетной записи.
Популярное за неделю
- Как создать сайт самому в 2026: 4 способа + пошаговая инструкция 34 мин чтения
- Лучшие конструкторы для создания сайтов — плюсы, минусы и сравнения 22 мин чтения
- 7 бесплатных СУБД для управления базами данных 5 мин чтения
- Команды MySQL в консоли: от входа до бэкапа 15 мин чтения
- Модели баз данных: иерархическая, сетевая и реляционная 9 мин чтения
- Работа с датой и временем в MySQL 5 мин чтения
Комментарии