Mysql NodeJs和MariaDB,存储用户和密码

Mysql NodeJs和MariaDB,存储用户和密码,mysql,node.js,mariadb,Mysql,Node.js,Mariadb,我将在接下来的几天内使用节点连接器。我通常使用API,所以我对如何使用它有些困惑 问题是我应该在哪里保存我的MariaDB登录详细信息。我看了一下示例,但有些东西告诉我,在生产过程中,我不应该在代码中包含我的MariaDB登录详细信息: const mariadb = require('mariadb'); const pool = mariadb.createPool({host: 'mydb.com', user: 'myUser', connectionLimit: 5}); 这是罚款还

我将在接下来的几天内使用节点连接器。我通常使用API,所以我对如何使用它有些困惑

问题是我应该在哪里保存我的MariaDB登录详细信息。我看了一下示例,但有些东西告诉我,在生产过程中,我不应该在代码中包含我的MariaDB登录详细信息:

const mariadb = require('mariadb');
const pool = mariadb.createPool({host: 'mydb.com', user: 'myUser', connectionLimit: 5});

这是罚款还是安全问题?在这种情况下,什么是更好的解决方案?

您不应该在代码存储库中存储凭据,无论它是用于API还是数据库,因为任何协作者都可以访问您的数据库。最常见的方法是使用环境变量使其可配置,具体取决于代码在哪台机器上运行

如果您是从类似Linux的终端(如Bash)调用节点,则可以传递如下环境变量:

DB_HOST=mydb.com DB_USER=myUser节点myscript.js
在您的代码中,您可以通过
process.env
访问它:

const{
DB_HOST='localhost',//非敏感默认值
DB_USER='root',
}=process.env
const mariadb=require('mariadb')
constpool=mariadb.createPool({host:DB\u host,user:DB\u user,connectionLimit:5})
因为从长远来看,每次从终端调用脚本时设置环境变量都很繁琐,聪明人发明了dotenv(
.env
)文件的概念来存储可配置变量。除非已经定义了属性,否则包将查找此类文件并将其值应用于环境

使用它就像在项目根目录中创建一个名为
.env
的文件一样简单:

DB_HOST=mydb.com
DB_USER=myUser
重要提示:必须将此文件添加到您的
.gitignore
中,以避免将您的凭据暴露给意外的查看者

和修改上一个脚本:

require('dotenv').config()//在读取process.env之前,添加此命令以将缺少的内容应用于process.env
常数{
DB_HOST='localhost',
DB_USER='root',
}=process.env
const mariadb=require('mariadb')
constpool=mariadb.createPool({host:DB\u host,user:DB\u user,connectionLimit:5})

进一步阅读:

您应该将URL、用户名和密码等连接详细信息保存到生产环境中的环境变量中。您可以使用
dotenv
模块在dev环境中模拟这些变量

在项目的根目录中创建.env文件。以NAME=VALUE的形式在新行中添加特定于环境的变量。例如:

DB_HOST=localhost
DB_USER=root
DB_PASS=s1mpl3
使用NPM安装dotenv:
NPM安装dotenv--save dev

 const dotenv = require('dotenv')
 dotenv.config();
const mariadb = require('mariadb');
const pool = mariadb.createPool({host: process.env.DB_HOST, user:process.env.DB_USER, connectionLimit: 5});

避免将.env文件推送到代码存储库。使用.gitigonre

我不知道,谢天谢地,我还没有公开上传我的任何存储库!谢谢你的帮助!