nodejs+sequelize实现sqlite3开启密码认证

nodejs+sequelize实现sqlite3开启密码认证

背景:最近项目中使用了sqlite3,但是免费版sqlite3是不支持账户密码登录的,数据库文件就很危险,任何人都可以轻易的查看数据库内容。因此希望sqlite3可以有一个认证

实现方法也很简单,安装一个第三方库就可以

npm i --save @journeyapps/sqlcipher

js中sequelize连接:

const sequelize = new Sequelize({
dialect: ‘sqlite’,
storage:’./ttt.db’,
logging: false,
password: config.mysql.password, //密码
dialectModulePath: ‘@journeyapps/sqlcipher’, //此处指定
// timezone: ‘+08:00’,
});

注意仅仅是多了dialectModulePath参数,写死即可
如果使用sequelize ORM 初始化该数据库,会自动生成对应的数据库文件,ttt.db会自动创建
此时ttt.db应该是加密过的数据库
依旧可以使用sqlite3命令行登录数据库,但你会发现,执行任何关于数据的操作都会报错:
Error: file is not a database,如此处我想新建一张表
CREATE TABLE main.COMPANY2(
ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
SALARY REAL
);
在这里插入图片描述此时可以借助图形化界面软件sqlitebrowser查看数据:
在这里插入图片描述
注意sqlitebrowser版本,参考https://sqlitebrowser.org/dl/#windows
我是ubuntu 20.0.4系统,使用以下命令安装
sudo apt-get --purge remove sqlitebrowser
sudo add-apt-repository -y ppa:linuxgndu/sqlitebrowser
sudo apt-get update
sudo apt-get install sqlitebrowser

安装好后直接输入sqlitebrowser就可以打开
在这里插入图片描述打开刚才创建的ttt.db文件,会叫你输入密码,正确输入密码后就可以查看/修改数据了。
当然这个图形界面也支持打开非加密数据库的

https://github.com/lovelykd/sqlcipher-cli
据说使用这个库可以实现命令行操作数据库
Installation

#assume that you already installed node
npm i -g sqlcipher-cli

Usage

Connect to the database with your secret key

sqlcipher-cli -d test.db -s secretkey

Type the query string (it should end with ‘;’)

Database connected

select * from user;
[ { id: 1, name: ‘123’ } ]

Type quit to exit

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值