我将使用 MariaDB Node 连接器在接下来的几天。我通常使用 API,所以我对如何使用它有点困惑。
问题特别在于我应该在哪里保存我的 MariaDB 登录详细信息。我看了一下例子 here , 但有些事情告诉我在生产期间我不应该在我的代码中包含我的 MariaDB 登录详细信息:
const mariadb = require('mariadb');
const pool = mariadb.createPool({host: 'mydb.com', user: 'myUser', connectionLimit: 5});
这很好还是安全问题?在这种情况下,更好的解决方案是什么?
最佳答案
无论是用于 API 还是数据库,您都不应该将凭据存储在代码存储库中,因为任何协作者都可以访问您的数据库。最常见的方法是使用环境变量使其可根据代码运行的机器进行配置。
如果您从类 Linux 终端(例如 Bash)调用 Node,您可以像这样传递环境变量:
DB_HOST=mydb.com DB_USER=myUser node myscript.js
在您的代码中,您将通过 process.env
访问它:
const {
DB_HOST = 'localhost', // a non-sensitive default value
DB_USER = 'root',
} = process.env
const mariadb = require('mariadb')
const pool = mariadb.createPool({host: DB_HOST, user: DB_USER, connectionLimit: 5})
因为从长远来看,每次从终端调用脚本时都设置环境变量是乏味的,聪明人发明了 dotenv (.env
) 文件的概念来存储可配置变量。 dotenv包将查找这样的文件并将其值应用于环境,除非已经定义了属性。
使用它就像在项目根目录中创建一个名为 .env
的文件一样简单:
DB_HOST=mydb.com
DB_USER=myUser
重要提示:必须将此文件添加到您的 .gitignore
以避免将您的凭据暴露给意外的查看者。
并修改之前的脚本:
require('dotenv').config() // Add this to apply missing things to process.env before we read from it
const {
DB_HOST = 'localhost',
DB_USER = 'root',
} = process.env
const mariadb = require('mariadb')
const pool = mariadb.createPool({host: DB_HOST, user: DB_USER, connectionLimit: 5})
关于mysql - NodeJs 和 MariaDB,存储用户和密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57970445/