要在Ubuntu云服务器上安装MySQL数据库,可以按照以下步骤进行:
#更新你的包列表
sudo apt-get update
#安装MySQL服务
sudo apt-get install mysql-server
#在安装过程中,系统将提示你输入root用户的密码。输入后,确认安装。
现在,MySQL已经安装完毕。可以通过以下命令启动MySQL服务:
sudo systemctl start mysql
#若要在系统启动时自启动MySQL,可以使用以下命令:
sudo systemctl enable mysql
然后,为了提高安全性,应该运行MySQL安全安装程序。这将帮助您更改某些默认的,不太安全的设置。
sudo mysql_secure_installation
现在,MySQL 已经在你的 Ubuntu 服务器上安装完毕。
接下来,可以连接到MySQL服务,并创建一个新的数据库和表单,步骤如下:
#打开MySQL命令行界面。
mysql -u root -p
#然后输入你的root密码。
#创建一个新的数据库,例如命名为myshop。
CREATE DATABASE myshop;
#切换到新建的数据库。
USE myshop;
#创建新的表,比如创建一个名为users的表单存放用户信息。
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
phonenumber VARCHAR(15) NOT NULL,
password VARCHAR(100) NOT NULL
);
上述代码将创建一个表有三个字段:
- id: 自动递增的主键。
- phonenumber: 存储用户的手机号码。
- password: 存储用户的密码。
就这样,已经在Ubuntu服务器上安装了MySQL并创建了一个用户表单。
注意:记得要定期备份数据库,并确保所有的敏感数据都进行了适当的加密处理。也可以使用sequelize等ORM库使得node.js操作数据库更为方便。
#添加一条数据记录
INSERT INTO users (id, phonenumber, password) VALUES (1, '13888888888', '123456');
#查看数据
SELECT * FROM users;
nodejs实现后端
首先npm安装一些依赖包,其中cors使跨域问题
npm install express mysql cors
然后创建一个server.js的后端脚本
import express from 'express';
import cors from 'cors';
import bodyParser from 'body-parser';
//import multiparty from 'connect-multiparty';
const app = express()
app.use(cors())
// 处理 x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: true }))
// 处理 mutipart/form-data
//app.use(multiparty())
// 处理 application/json
app.use(bodyParser.json())
//一个简单的测试接口
app.get('/test',(_req,res)=>{
res.send('测试用的接口')
})
//监听node服务器的端口号
app.listen(3000, () => {
console.log('恭喜你,服务器启动成功')
})
这是最简单的后端API测试,需要在命令行运行
npx ts-node ./server.js
然后就可以在浏览器中打开
http:localhost:3000/test
就可以在浏览器中看到返回的信息
测试用的接口
连接数据库
创建mysql.js文件,在其中连接mysql数据库,并且查询数据表单,这是一种简单实现
import mysql from 'mysql';
// 创建数据库连接
var connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : '123456',
port: '3001',
database : 'database'
});
// 数据库连接
connection.connect();
// 查询数据
connection.query('SELECT * FROM data', function (error, results, fields) {
if (error) throw error;
console.log('用户列表: ', results);
});
// 关闭连接
connection.end();
可以写的更通用
import mysql from 'mysql';
const db_config = {
host: 'localhost', //本地都是localhost
user: 'root', //账户名
password: '123456', //密码
port: '3001', //端口号
database: 'database' //数据库的名称
}
function conMysql(sql) {
//创建数据库连接池
let Myconnect = mysql.createConnection(db_config)
//开始连接数据库
Myconnect.connect(function (err) {
if (err) {
console.log(`myqsl连接失败:${err}!`)
} else {
console.log('恭喜哦,mysql连接成功哦')
}
})
//因为query查询是一个异步操作,所以用promise来操作
return new Promise((resolve, reject) => {
//query() 函数用于mysql语句查询
Myconnect.query(sql, (err, result) => {
if (err) {
reject(err)
} else {
let res = JSON.parse(JSON.stringify(result))
closeMysql(Myconnect) //调用函数关闭mysql连接
resolve(res)
}
});
})
}
//关闭mysql数据库的函数
function closeMysql(Myconnect) {
Myconnect.end((err) => {
if (err) {
console.log(`mysql关闭失败:${err}!`)
} else {
console.log('mysql关闭成功')
}
})
}
//导出conMysql函数
exports.conMysql = conMysql;
在这个过程中出现了一个问题,
Client does not support authentication protocol requested by server; consider upgrading MySQL client
这个问题是MySQL 8.0引入了新的默认认证插件caching_sha2_password,而旧版的客户端库并不支持这个认证协议,因此我们需要改变MySQL用户账号的认证方式。
可以试试以下步骤:
// 打开 MySQL 客户端,连接到MySQL服务器。
// 选择数据库,例如,数据库名是'test',那么可以输入: USE test;。
// 然后运行下面的SQL命令,用户名替换'user',密码替换'password':
ALTER USER 'user'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
// 最后,刷新权限
FLUSH PRIVILEGES;
这将把MySQL用户的认证方式改为 mysql_native_password,这种方式被大多数 MySQL 客户端所支持。
express部署文件服务
// 在后端服务的js文件中,执行以下命令
app.use('/files_service', express.static('./files'));
然后要修改nginx的配置文件
server {
...
location /files_service/ {
proxy_pass http://localhost:3001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto https;
}
}