Node.js 连接 MySQL 配置与基础操作指南

Dylan
Dylan
发布时间:2026-10-13 | 5人浏览过
原创

详细介绍在 Express 项目中使用 Node.js 原生 mysql 模块连接 MySQL 数据库的完整流程,包括环境配置、数据库初始化、连接测试以及数据插入的代码实现。

准备 MySQL 环境

首先需要确保系统中已安装并正确配置了 MySQL。如果是解压版 MySQL,需要编辑配置文件 my.ini 以设定基本路径和端口。

[mysqld]
basedir=D:/MySql 
datadir=D:/MySql/data 
port = 3306
socket = "/tmp/mysql.sock"

[client] 
password = 
port = 3306
socket = "/tmp/mysql.sock"
default-character-set = utf8 

注意:请将 basedir 和 datadir 修改为你实际安装的目录路径。

第1步:安装并启动 MySQL 服务

进入 MySQL 安装目录下的 bin 文件夹,打开命令行工具执行以下命令:

  1. 安装服务:
    mysqld -install
  2. 启动服务:
    net start mysql

第2步:首次登录与字符集修正

在命令行输入以下命令进入数据库(初次安装默认无密码):

mysql -uroot -p

直接回车即可。如果后续发现中文字符显示乱码,可以在可视化工具(如 Navicat)中右键点击对应数据库,进入属性设置,将字符集强制修改为 utf8。

在 Express 项目中集成 MySQL

第3步:安装 mysql 驱动

在 myapp 项目根目录下运行 npm 指令安装依赖:

npm install mysql

第4步:编写连接测试代码

修改 routes/index.js,引入模块并添加基本的查询逻辑。这将用于验证 Node.js 是否成功连接到 MySQL。

var express = require('express');
var router = express.Router();
var mysql = require('mysql'); // 调用MySQL模块

router.get('/', function(req, res) {
    res.render('index', { title: '孟星魂' });
    
    // 创建连接实例
    var connection = mysql.createConnection({
        host: '127.0.0.1', // 主机地址
        user: 'root',      // 用户名
        password: '111',   // 密码,若没有请保持为空字符串
        port: '3306',      // 端口号
        database: 'nodesample'
    });
    
    // 尝试连接
    connection.connect(function(err) {
        if (err) {
            console.log('[query] - :' + err);
            return;
        }
        console.log('[connection connect] succeed!');
    });
    
    // 执行简单的 SQL 测试查询
    connection.query('SELECT 1 + 1 AS solution', function(err, rows, fields) {
        if (err) {
            console.log('[query] - :' + err);
            return;
        }
        console.log('The solution is: ', rows[0].solution);
    });
    
    // 结束连接
    connection.end(function(err) {
        if (err) {
            return;
        }
        console.log('[connection end] succeed!');
    });
});

module.exports = router;

重启 Express 服务后,观察控制台输出。若打印出 succeed! 及正确的查询结果,说明连接库已就绪。

数据库表结构与数据操作

第5步:初始化数据库与用户表

在 Navicat 或其他 SQL 客户端中执行脚本,创建库和数据表。建议显式指定字符集以防乱码。

CREATE DATABASE IF NOT EXISTS nodesample CHARACTER SET UTF8;
USE nodesample;
SET FOREIGN_KEY_CHECKS=0;
DROP TABLE IF EXISTS `userinfo`;
CREATE TABLE `userinfo` (
 `Id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
 `UserName` varchar(64) NOT NULL COMMENT '用户名',
 `UserPass` varchar(64) NOT NULL COMMENT '用户密码',
 PRIMARY KEY (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户信息表';

第6步:执行数据插入操作

修改 routes/index.js,增加一个 INSERT 语句来向刚才创建的表中写入数据。这里使用了占位符 ?_placeholder_ 来处理参数以防止 SQL 注入风险。

// ...前面的配置不变...

// 定义 INSERT 语句,参数位置使用 ? 占位
var userAddSql = 'INSERT INTO userinfo(Id,UserName,UserPass) VALUES(0,?,?)';
var userAddSql_Params = ['Wilson', 'abcd']; // 对应的值

connection.query(userAddSql, userAddSql_Params, function(err, result) {
    if (err) {
        console.log('[INSERT ERROR] - ', err.message);
        return;
    }
    console.log('--------------------------INSERT----------------------------');
    console.log('INSERT ID:', result);
    console.log('-----------------------------------------------------------------\n\n');
});

// ...后面的end代码不变...

再次刷新页面,控制台应显示插入成功的日志。此时检查数据库内容,可以看到新增加的记录。

常见问题排查

  • 中文乱码:确保数据库、数据表以及连接的 charset 均设置为 utf8。
  • 拒绝访问:检查 createConnection 中的用户名、密码和 IP 地址配置是否正确。
  • 模块未找到:确认项目目录下已经通过 npm 安装了 mysql 依赖包。

以上就是 Node.js 结合 Express 连接 MySQL 数据库并进行基础操作的详细内容,更多关于 Node.js 数据库编程的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表