如何在node.js中隐藏mysql数据库的连接详细信息?
我刚开始在node.js中使用mysql,我正在设置我的app.js项目,并试图隐藏我的连接详细信息,如我的ip、用户名、pw和db名称。我不知道如何隐藏我的连接细节,所以这就是我来这里的原因 我已尝试在我的如何在node.js中隐藏mysql数据库的连接详细信息?,mysql,node.js,Mysql,Node.js,我刚开始在node.js中使用mysql,我正在设置我的app.js项目,并试图隐藏我的连接详细信息,如我的ip、用户名、pw和db名称。我不知道如何隐藏我的连接细节,所以这就是我来这里的原因 我已尝试在我的.profile中添加详细信息,但不断收到身份验证错误。但是,当我在我的常规app.js文件中包含这些相同的连接细节时,它会工作并连接到数据库 以下是my app.js文件中显示的内容: var connection = mysql.createConnection({
.profile
中添加详细信息,但不断收到身份验证错误。但是,当我在我的常规app.js文件中包含这些相同的连接细节时,它会工作并连接到数据库
以下是my app.js文件中显示的内容:
var connection = mysql.createConnection({
host : 'my.ip.address.info',
user : 'username',
password : 'password',
database : 'databaseName'
});
console.log('Connected');
connection.connect();
我只是想隐藏我的连接细节,这样当我的网站在未来上线时,它就不会被窥探。我明白在app.js文件中留下这些连接细节不是正确的做法,所以我请求帮助!lol您可以创建一个
.env
文件来设置环境变量,并使用dotenv
包在process.env
中显示它们
创建一个文件,并将其命名为.env
,并设置变量
host=my-ip-address-info,
user=username,
password=password,
database=databaseName
然后,您可以通过以下方式访问它们:
var connection = mysql.createConnection({
host: process.env.host
user: process.env.username
password: process.env.password,
database: process.env.database
});
你必须用以下内容启动你的应用程序
node-r dotenv/config your_script.js
或者将以下内容添加到输入脚本的顶部
require('dotenv').config()代码>
我更喜欢第一种方法,因为这些环境变量应该由宿主提供者设置,因此不需要在代码中使用require
语句 我使用
在项目的根目录中创建.env文件
host=my.ip.address.info
user=username
password=password
database=databaseName
然后从你的代码
require('dotenv').config();
let host = process.env.host;
不要将.env文件提交给公共repo。谢谢,稍后我会尝试一下,但是我的主机提供商是如何做到这一点的?我使用的是digital ocean,他们也没有提供任何支持。哈哈,我将mySQL数据库与我的web服务器完全分离,我将用它来创建我的web应用程序。谢谢我不使用DO,但这里有一个关于“数字海洋环境变量”的快速谷歌搜索。如果你想把它们分开(好主意),那么创建一个connect
函数(或类似的函数),在其中传递参数。它似乎可以工作,但不完全有效。我一直收到一个错误:错误:getaddrinfo ENOTFOUND my db的ip addr,my db的ip addr,:3306在GetAddrInfoReqWrap.onlookup[as oncomplete](dns.js:56:26)我一直在试图解决这个问题,但没有用,我不知道为什么它会抛出这个错误,当我将代码恢复到公开连接详细信息的状态时,它会起作用,但当我尝试您的方法时,它会抛出那个错误。我似乎找不到解决方案:(原来它不需要更改为mysql.createPool,而是必须更改connection.connect();line到connection.connect(函数(err){});非常感谢您的原始答案!非常高兴!!!!它似乎在工作,但不完全lol我一直收到一个错误:错误:getaddrinfo ENOTFOUND我的服务器数据库的ip addr,我的服务器数据库的ip addr,:3306在GetAddrInfoReqWrap.onlookup[作为完成](dns.js:56:26我一直试图解决这个问题,但没有任何效果,我不知道为什么在我将代码还原到公开连接详细信息的状态时,它会抛出这个错误,它是有效的,但当我尝试你的方法时,它会抛出这个错误。我似乎找不到解决方案:(查看另一篇帖子:是的,这没有帮助,我也检查了这个。我想我必须公开我的连接详细信息,因为我花了3天的时间试图解决这个问题:/Ha!所以我找到了答案,或者说找到了一个解决办法。我不知道为什么,但我将mysql.createConnection()改为mysql.createPool();
require('dotenv').config();
let host = process.env.host;