Ubuntu下Node.js连接MySQL数据库实战(Express+原生mysql模块)
本文旨在解决在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语句来创建数据库、选择数据库以及建立测试用的用户信息表:
- 创建数据库:
create database my_box; - 切换到该数据库:
use my_box; - 创建用户信息表:创建一个包含自增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; - 插入测试数据:
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实战优化的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









