ubuntu安装数据库

  要在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;
    }
}
  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值