Гид по технологиям

Как подключить Node.js к MySQL

5 min read Базы данных Обновлено 03 Jan 2026
Подключение Node.js к MySQL — руководство
Подключение Node.js к MySQL — руководство

Кратко

Это пошаговое руководство показывает, как подключить Node.js к MySQL: установка сервера, создание простого приложения, настройка пула соединений и базовые меры безопасности. Подойдёт для локальной разработки и как основа для продакшн-конфигураций.

Набор современных кабелей и разъёмов на полке

Прежде чем начать

Поскольку примеры используют локальный MySQL-сервер, установите MySQL на вашей машине. Затем создайте пустую базу данных и убедитесь, что у вас есть имя пользователя и пароль.

Важно: используйте отдельный пользователя для разработки и другой — для продакшна. Не храните пароли в исходном коде.

Создание Node-приложения

В терминале выполните команду, чтобы создать новую папку для приложения:

mkdir node-mysql  

Перейдите в папку node-mysql и инициализируйте проект через npm:

cd node-mysql  
npm init -y  

В результате появится package.json, где будут храниться зависимости проекта.

Подключение Node к MySQL

Для работы с MySQL из Node часто используют пакет mysql2. Установите его так:

npm install mysql2  

Чтобы подключиться, нужны параметры: host, port, user, database и password. Пример конфигурации для базы nodedb на локальном сервере:

const config = {  
    host: "localhost",  
    port: 3306,  
    database: "nodedb",  
    user: "root",  
    password: "********",  
}  

Ниже полный пример создания одиночного соединения. Этот подход годится для простых скриптов или однопоточных задач.

const mysql = require("mysql2")  
   
const config = {  
    host: "localhost",  
    database: "db_name",  
    user: "mysql_username",  
    password: "mysql_password",  
    connectionLimit: 100,  
}  
   
const connection = mysql.createConnection(config)  
   
connection.connect(function(err) {  
    if (err) throw(err);  
    console.log("Connected!");  
});  

Когда вы передаёте параметры в mysql.createConnection(), вы получаете объект соединения. Он позволяет выполнять операции: создание, удаление и чтение таблиц.

Пример создания таблицы:

connection.connect(function(err) {  
    if (err) throw err;  
    console.log("Connected!");  
   
    let createUser = `CREATE TABLE users (user_id INT(100), user_name VARCHAR(255), email VARCHAR(255))`;  
   
    connection.query(createUser, function(err, results, fields) {  
        if (err) {  
            console.log(err.message);  
        }  
    });  
});  

Этот запрос создаст таблицу users в подключённой базе. Синтаксис можно адаптировать для вашей схемы.

Примечание: одиночное соединение подходит, если у приложения небольшой объём запросов и отсутствует высокая конкуренция пользователей.

Использование пула соединений

Открытие и закрытие соединений ресурсоёмко. Пул соединений поддерживает набор открытых соединений и переиспользует их при запросах. Это уменьшает задержки и нагрузку на сервер базы.

Пример создания пула:

const mysql = require("mysql2");  
    
const config = {  
    host: "localhost",  
    database: "db_name",  
    user: "mysql_username",  
    password: "mysql_password",  
    connectionLimit: 100,  
}  
   
const pool = mysql.createPool(config);  
   
pool.query("SELECT * FROM some_table", (err, data) => {  
    if (err) throw(err)  
    console.log(data);  
});  

Не забудьте заменить параметры конфигурации на значения вашей среды.

Безопасное подключение к MySQL

mysql2 упрощает подключение Node-приложения к MySQL. Но соединение — это только начало. Хранение и доступ к данным должны быть защищены.

Рекомендации по безопасности:

  • Используйте сильные пароли и уникальные учётные записи.
  • Ограничьте удалённые подключения по IP, если это возможно.
  • Не давайте лишних привилегий — принцип минимальных прав.
  • Храните секреты в переменных окружения или в vault, а не в репозитории.
  • Используйте SSL/TLS для подключения к удалённым серверам.
  • Логируйте и мониторьте неудачные попытки подключения.

Важно: для продакшн-среды настройте отдельный пользовательский аккаунт с правами только на те таблицы и операции, которые требуются приложению.


Когда это не работает

  • Неправильные параметры подключения: проверьте host, порт, user, password и имя базы.
  • Сервер MySQL не запущен или блокируется firewall.
  • Переполнение лимита одновременных соединений (max_connections) на стороне сервера.
  • Ошибки прав доступа (причина — GRANT/REVOKE).

Как диагностировать: проверьте логи MySQL, используйте mysql CLI для попытки подключения и включите подробный лог в приложении.

Альтернативные подходы

  • Использовать пакет mysql (старый, меньше возможностей) или ORM уровня выше: Sequelize, TypeORM, Prisma.
  • Если нужна лёгкая работа с потоками/пулом в асинхронном стиле, выбирайте mysql2 с Promise API: require(‘mysql2/promise’).
  • Для больших систем — использовать промежуточный слой (API/микросервис) между приложением и базой.

Инструменты и приёмы (ментальные модели)

  • «Пул как пула прокладок»: представьте пул как набор готовых соединений. Возьми — поработай — верни в пул.
  • «Минимальные права»: давайте приложениям только те права, которые точно нужны.
  • «Тонкая схема»: нормализуйте данные, но не переусердствуйте в первых версиях.

Руководство по безопасности сервера MySQL

Короткий чек-лист для администраторов:

  • Отключить удалённые подключения для root.
  • Создать отдельного пользователя приложения с минимальными привилегиями.
  • Настроить бэкапы и их тестовое восстановление.
  • Включить шифрование соединений (TLS) при необходимости.
  • Ограничить доступ по IP и настроить firewall.

Чек-листы по ролям

Разработчик:

  • Проверить подключение локально с теми же переменными окружения.
  • Не коммитить секреты в VCS.
  • Использовать пул при высокой конкуренции.

Администратор БД:

  • Проверить max_connections и производительность.
  • Настроить пользователям минимальные привилегии.
  • Мониторить метрики (latency, slow queries).

Операции/DevOps:

  • Настроить секретное хранилище (vault, AWS Secrets Manager и т. п.).
  • Обеспечить резервное копирование и план восстановления.

Краткая методология внедрения

  1. Настройте и протестируйте локальный MySQL.
  2. Создайте учётную запись приложения с ограниченными правами.
  3. Реализуйте подключение и простые запросы локально.
  4. Замените строки подключения на переменные окружения.
  5. Переключитесь на пул соединений при нагрузке.
  6. Настройте мониторинг и бэкапы.

Критерии приёмки

  • Приложение успешно подключается к базе и выполняет CRUD-операции.
  • Нет утечек соединений — количество открытых соединений стабильно.
  • Пароли хранятся в безопасном хранилище, а не в репозитории.
  • Нагрузочные тесты показывают приемлемую латентность.

Тесты и проверка

  • Подключение: попытка подключиться через mysql2 и через mysql CLI.
  • Функциональность: операции CREATE/READ/UPDATE/DELETE на тестовой таблице.
  • Нагрузочное тестирование: симулировать N параллельных соединений и проверить отклик.
  • Безопасность: попытаться подключиться с неправильными учетными данными и проверить логи.

Шаблон конфигурации (пример .env)

DATABASE_HOST=localhost DATABASE_PORT=3306 DATABASE_USER=mysql_username DATABASE_PASS=mysql_password DATABASE_NAME=db_name CONNECTION_LIMIT=100

(Используйте реальное хранилище секретов в продакшне.)

Глоссарий — 1 строка на термин

  • Пул соединений: набор открытых соединений, переиспользуемых приложением.
  • Oдиночное соединение: один TCP-сеанс к базе данных.
  • ORM: объектно-реляционный маппер, библиотека для работы с БД на уровне объектов.

Итог

Подключение Node.js к MySQL несложно. Для небольших задач достаточно одиночного соединения. Для приложений с параллельными запросами используйте пул соединений. Обязательно применяйте базовые меры безопасности: минимальные привилегии, хранение секретов вне репозитория и шифрование при необходимости.

Важно: перед переводом решения в продакшн выполните тестирование под нагрузкой и настройте мониторинг.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

RDP: полный гид по настройке и безопасности
Инфраструктура

RDP: полный гид по настройке и безопасности

Android как клавиатура и трекпад для Windows
Гайды

Android как клавиатура и трекпад для Windows

Советы и приёмы для работы с PDF
Документы

Советы и приёмы для работы с PDF

Calibration в Lightroom Classic: как и когда использовать
Фото

Calibration в Lightroom Classic: как и когда использовать

Отключить Siri Suggestions на iPhone
iOS

Отключить Siri Suggestions на iPhone

Рисование таблиц в Microsoft Word — руководство
Office

Рисование таблиц в Microsoft Word — руководство