跳转到内容
无痕工具库 无痕工具库

Hostinger MySQL 数据库连接 Node.js 应用教程

本指南介绍如何将 Node.js 应用程序连接到托管在 Hostinger 上的 MySQL 数据库。

开始之前,请确认:

Hostinger 目前仅支持 MySQL 数据库。共享主机和托管主机方案不支持其他数据库引擎(PostgreSQL、MongoDB 等)。如果你的应用需要其他引擎,可以连接外部服务商——请参阅将 Supabase 数据库连接到 Hostinger Node.js 应用程序。

步骤 1 – 在 Hostinger 控制面板中创建 MySQL 数据库

  1. 登录 Hostinger 控制面板

  2. 进入 Websites → Dashboard→ Databases → Management

  3. 填写以下内容:

    • 数据库名称
    • 数据库用户名
    • 密码(请妥善保存)
  4. 点击 Create(创建)

Hostinger hPanel MySQL 管理页面,Create 按钮已高亮显示

创建完成后,请记下以下信息:

  • 数据库名称
  • 数据库用户名
  • 数据库密码
  • 数据库主机(在 Hostinger 上通常为 localhost)

步骤 2 – 配置环境变量

你的 Node.js 应用切勿将数据库凭据硬编码在代码中,请改用环境变量来管理这些凭据。

方案 A – 分离的环境变量(推荐,更清晰)

创建或更新你的 .env 文件:

DB_HOST=localhost
DB_PORT=3306
DB_USER=databaseuser
DB_PASSWORD=databasepassword
DB_NAME=databasename

Hostinger 部署设置中的环境变量部分已高亮显示,包括 MySQL_HOST 和 MySQL_PASSWORD 字段

方案 B – 单一数据库连接字符串

根据你的应用配置方式,你也可以定义一个数据库连接变量:

DATABASE_URL=mysql://databaseuser:databasepassword@localhost:3306/databasename

具体格式可能因你使用的库或框架而异。Hostinger 仅支持 MySQL,因此前缀必须是 mysql://。

本文将使用方案 A。

步骤 3 – 重新构建或重启应用程序

更新环境变量后,请务必重启应用程序,以便加载新值。

从 Hostinger 控制面板重启(推荐)

对于服务器端 Node.js 应用(如 Express.js、Next.js、NestJS),你可以直接在控制面板中重启:

  1. 在 Hostinger 控制面板中打开你的 Website Dashboard(网站控制面板)
  2. 点击 Restart(重启)
    Hostinger Website Dashboard,部署行中的 Running 状态已高亮显示

Restart 选项仅适用于服务器端 Node.js 应用程序。静态网站(React、Vue、Angular)不会运行持久的服务器进程,因此没有此选项。

备选方法:通过 SSH 重启

如果你希望通过命令行重启:

  • 连接到 SSH
  • 运行:cd domains/xx/public_html (将 xx 替换为你的域名)
  • 运行:touch tmp/restart.txt

步骤 4 – 确保你的应用包含数据库连接文件

在应用程序存储或读取数据之前,它必须包含一个专用的数据库连接文件。

该文件负责:

  • 从环境变量中读取数据库凭据
  • 建立与 MySQL 数据库的连接
  • 导出该连接,以便在整个应用程序中复用

将数据库逻辑集中在一个文件中,可以让应用更易于维护和调试。

典型的数据库连接文件结构

在大多数 Node.js 项目中,数据库连接文件位于以下类似目录中:

  • config/database.js
  • db.js
  • database/connection.js

具体文件名并不重要,只要在需要的地方将其导入即可。

默认 MySQL 连接文件示例(node.js)

下面是一个使用 mysql2 包的简单且常用的示例。

import mysql from "mysql2/promise";
const db = mysql.createPool({
host: process.env.DB_HOST,
port: process.env.DB_PORT || 3306,
user: process.env.DB_USER,
password: process.env.DB_PASSWORD,
database: process.env.DB_NAME,
});
export default db;

该文件会:

  • 从环境变量中读取凭据
  • 创建可复用的连接池
  • 避免每次查询都打开新连接

使用单一连接字符串的示例

如果你的应用使用单一数据库连接变量,连接文件可能如下所示:

import mysql from "mysql2/promise";
const db = mysql.createPool(process.env.DATABASE_URL);
export default db;

连接字符串的格式取决于数据库驱动程序。在 Hostinger 上,仅支持 MySQL,因此前缀必须是 mysql://。

连接字符串示例:

DATABASE_URL=mysql://databaseuser:databasepassword@localhost:3306/databasename

在应用程序中使用数据库连接

创建连接文件后,就可以在项目的任何地方导入并使用它。

示例:

import db from "./config/database.js";
const [rows] = await db.query("SELECT * FROM users");

这表明:

  • 数据库连接文件已正确设置
  • 你的应用程序可以与 MySQL 数据库通信

步骤 5 – 创建所需的数据库表

在存储数据之前,你的数据库必须包含所需的表和列。

SQL 表示例

CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL UNIQUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

你可以通过以下方式执行此 SQL:

  • 通过 Hostinger 控制面板中的 phpMyAdmin
  • 或从应用程序中以编程方式执行

phpMyAdmin SQL 编辑器,右下角的 Go 按钮已高亮显示

步骤 6 – 在生产环境中测试数据插入

  1. 打开你的线上 Node.js 应用程序

  2. 执行一个会存储数据的操作(例如提交表单)

  3. 使用 phpMyAdmin 检查数据库

  4. 确认:

    • 已创建新行
    • 值已正确存储

Restaurant Staff Manager 仪表板,显示 Add New Worker 表单和 Test Testing 的当前员工卡片 phpMyAdmin 中 restaurant_workers 表的行已选中,显示主机记录(host record)

常见问题与故障排除

❌ 用户访问被拒绝(Access denied for user)

  • 核对数据库用户名和密码
  • 确保该用户已分配到此数据库

❌ 无法连接到 MySQL 服务器

  • 确认主机设置为 localhost
  • 确保使用端口 3306

❌ 环境变量未加载

  • 重启 Node.js 应用程序
  • 确认 .env 已包含在运行环境中