Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在node.js中隐藏mysql数据库的连接详细信息?_Mysql_Node.js - Fatal编程技术网

如何在node.js中隐藏mysql数据库的连接详细信息?

如何在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({

我刚开始在node.js中使用mysql,我正在设置我的app.js项目,并试图隐藏我的连接详细信息,如我的ip、用户名、pw和db名称。我不知道如何隐藏我的连接细节,所以这就是我来这里的原因

我已尝试在我的
.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;