无法在节点中使用 Knex.js migrate:latest 对用户进行身份验证
Can't authenticate user with Knex.js migrate:latest in Node
问题:
相关资料:Windows10、Node、knex、PostgreSQL
我正在尝试 运行 来自 cmd knex migrate:latest --env development
的 knex CLI 命令 migrate:latest。
我得到 "error: password authentication failed for user "
我的第一个问题是指定的用户 - 在我的 knexfile.js 配置文件中,我正在导出具有已定义连接的开发对象,其中定义了我的所有环境变量。
development: {
client: 'pg',
connection: {
host: "localhost",
port: process.env.DB_PORT,
username: process.env.DB_USER,
password: process.env.DB_PW,
database: process.env.DB_NAME
}
}
因此,尽管我尝试以 'postgres' 身份登录数据库,但 knex 正尝试以相关错误消息中的 Windows 用户身份登录我,这是我在我的个人电脑。我以该用户身份登录,使用该用户帐户安装了 PostgreSQL,并使用该用户初始化了数据库。
使用 psql,我可以使用在我的 knex 配置中指定的密码登录到在我的 knex 配置中指定的数据库。事实上,我为所有用户使用相同的密码以减少问题中的变量数量。
除了尝试以这种方式解决问题之外,我还将 pg_hba.conf 文件中的所有身份验证设置都设置为 'trust' - 但这也没有解决问题。
尝试将用户名和密码以及数据库名称硬编码到 knexfile 而不是使用 process.env.XXXX 并重试。
听起来您的环境变量没有正确传递到节点。
问题:
相关资料:Windows10、Node、knex、PostgreSQL
我正在尝试 运行 来自 cmd knex migrate:latest --env development
的 knex CLI 命令 migrate:latest。
我得到 "error: password authentication failed for user "
我的第一个问题是指定的用户 - 在我的 knexfile.js 配置文件中,我正在导出具有已定义连接的开发对象,其中定义了我的所有环境变量。
development: {
client: 'pg',
connection: {
host: "localhost",
port: process.env.DB_PORT,
username: process.env.DB_USER,
password: process.env.DB_PW,
database: process.env.DB_NAME
}
}
因此,尽管我尝试以 'postgres' 身份登录数据库,但 knex 正尝试以相关错误消息中的 Windows 用户身份登录我,这是我在我的个人电脑。我以该用户身份登录,使用该用户帐户安装了 PostgreSQL,并使用该用户初始化了数据库。
使用 psql,我可以使用在我的 knex 配置中指定的密码登录到在我的 knex 配置中指定的数据库。事实上,我为所有用户使用相同的密码以减少问题中的变量数量。
除了尝试以这种方式解决问题之外,我还将 pg_hba.conf 文件中的所有身份验证设置都设置为 'trust' - 但这也没有解决问题。
尝试将用户名和密码以及数据库名称硬编码到 knexfile 而不是使用 process.env.XXXX 并重试。
听起来您的环境变量没有正确传递到节点。