Ubuntu下Node.js连接MySQL数据库实战(Express+原生mysql模块)

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

本文旨在解决在Ubuntu环境下使用Node.js和Express框架连接MySQL数据库的问题。内容涵盖MySQL服务的安装与基础配置、Node.js项目初始化、原生mysql模块的使用以及简单的增删改查逻辑实现,适合初学者参考。

目标与环境准备

本教程的目标是在Ubuntu系统上搭建一个基于Node.js和Express的Web应用,并通过原生mysql模块实现对MySQL数据库的连接和数据查询。开发环境要求已安装Ubuntu操作系统及基本的命令行操作能力。

第一步:安装与配置MySQL服务

首先需要在系统中安装MySQL服务端。打开终端,执行以下命令进行安装:

sudo apt-get install mysql-server

安装过程中一路回车确认即可。在安装完成后,系统通常会提示设置root用户的密码。请牢记设置的密码,后续连接数据库需要用到。

第二步:创建数据库与数据表

进入MySQL控制台进行数据库的配置。使用root用户登录:

mysql -uroot -p<your_password>

登录成功后,依次执行以下SQL语句来创建数据库、选择数据库以及建立测试用的用户信息表:

  1. 创建数据库:
    create database my_box;
  2. 切换到该数据库:
    use my_box;
  3. 创建用户信息表:创建一个包含自增ID、用户名和密码的表。
    create table user_info (
      id int(11) not null auto_increment,
      username varchar(30) not null,
      password varchar(30) not null,
      primary key (id)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  4. 插入测试数据:
    insert into user_info values(1,'testuser','123456');

第三步:初始化Node.js项目与安装依赖

在文件系统中创建一个项目文件夹(如 myapp),并在其中初始化Node.js项目,这将生成 package.json 文件并创建 node_modules 目录。

mkdir myapp
cd myapp
npm init

接着,安装本项目所需的三个核心依赖:用于构建Web应用的 express,用于连接MySQL的 mysql,以及用于解析POST请求体的 body-parser。

npm install express mysql body-parser --save

第四步:封装数据库操作逻辑

为了保持代码结构清晰,建议在项目中新建 models 文件夹,将数据库相关的逻辑单独封装。例如,在 models/user.js 中定义User模型:

var mysql = require('mysql');

// 连接配置
var connection = mysql.createConnection({
  host : 'localhost',
  user : 'root',
  password : '<your_password>', // 替换为实际密码
  database : 'my_box'
});

function User(user) {
  this.username = user.username;
  this.password = user.password;
}

// 根据用户名获取用户信息的方法
User.getUserByUsername = function(username, callback) {
  var selectSql = 'select * from user_info where username = ?';
  connection.query(selectSql, [username], function(err, res) {
    if(err) {
      console.log('getUserByUsername err:' + err);
      return;
    }
    console.log('Get name success');
    callback(err, res);
  });
};

module.exports = User;

第五步:实现Express应用主逻辑

在项目的根目录创建 app.js 文件。虽然示例中未涉及复杂的路由,但需处理首页渲染和注册接口的POST请求,以验证数据库连接是否成功。

var express = require('express');
var bodyParser = require('body-parser');
var app = express();
var User = require('./models/user');

// 启用 POST 参数解析
app.use(bodyParser.urlencoded({ extended: false }));

// 根路径,返回静态HTML
app.get('/', function(req, res) {
  res.sendfile('views/index.html');
});

// 注册接口,处理表单提交
app.post('/reg', function(req, res) {
  var username = req.body.username;
  
  // 调用模型方法查询数据库
  User.getUserByUsername(username, function(err, results) {
    if (err) {
      res.send('Error: ' + err);
      return;
    }
    
    if (results.length > 0) {
      res.send('Found user: ' + JSON.stringify(results[0]));
    } else {
      res.send('User not found');
    }
  });
});

// 启动服务,监听3000端口
app.listen(3000, function() {
  console.log('App listening on port 3000!');
});

第六步:前端页面与运行测试

在 views 目录下创建 index.html,提供一个简单的表单用于提交用户名:

<!DOCTYPE html>
<html>
<head>
  <title>My Box</title>
</head>
<body>
  <form action="/reg" method="post">
    <input type="text" name="username" placeholder="输入用户名"/>
    <input type="submit" value="Submit"/>
  </form>
</body>
</html>

启动Node.js应用:

node app.js

在浏览器中访问 http://localhost:3000。在输入框中输入之前创建的测试用户名(如 testuser)并提交,若页面返回了对应的用户信息JSON,则说明连接成功。

Node.js连接数据库的优势与注意事项

在使用Node.js进行后端开发时,其非阻塞IO模型在处理高并发I/O密集型任务时具有显著优势,特别适合实时应用系统。然而,由于Node.js是单线程模型,一旦主进程崩溃可能导致整个服务中断,因此在生产环境中需注意错误处理和进程管理。

以上就是Node.js通过Express连接MySQL数据库的详细内容,更多关于Node.js实战优化的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。