今天试着把项目的数据存储从 json 文件转到 mysql 中去。
mysql 安装
我是通过腾讯云的宝塔面板界面化安装的,安装完成后,试了一些命令确定安装成功。
# 查看 mysql 的状态
$ systemctl status mysqld
# 启动 mysql
$ systemctl start mysqld
# 使用 root 权限登录 mysql
$ mysql -u root -p
题外话,发现无论是 nginx 还是 mysql 的启动和查看状态都是用的 systemctl 命令。
$ systemctl start nginx
$ systemctl status nginx
mysql 连接
我的 node 项目用到的是 egg.js。文档非常友好,很细致的说明了如何连接数据库。
安装依赖库
$ npm i --save egg-mysql
开启插件
// config/plugin.js
exports.mysql = {
enable: true,
package: 'egg-mysql',
};
配置数据库信息
// config/config.${env}.js
exports.mysql = {
// 单数据库信息配置
client: {
// host
host: 'mysql.com',
// 端口号
port: '3306',
// 用户名
user: 'test_user',
// 密码
password: 'test_password',
// 数据库名
database: 'test',
},
// 是否加载到 app 上,默认开启
app: true,
// 是否加载到 agent 上,默认关闭
agent: false,
};
无法访问远程服务器
发现是我的腾讯云服务器的 3306 端口未开放,打开之后就好了。
找不到 ip 地址
我在配置 host 的时候多加了 http://
前缀,导致报错。查了资料后才知道只要 IP 号或者域名即可。
host: '101.33.37.183',
用户名写错
一开始用了 yang@localhost 这个用户名,后来发现 @localhost 后缀并不需要。
写一个 service 验证
const Service = require("egg").Service;
class DoneService extends Service {
async findAll() {
// 假如 我们拿到用户 id 从数据库获取用户详细信息
const user = await this.app.mysql.query("SELECT * FROM `done-tasks` WHERE 1", "");
return { user };
}
}
module.exports = DoneService;
最后
终于在不断地尝试后,连接上了服务器,即将插入第一条数据。后面多练习练习 mysql 语句。
网友评论