【问题标题】:Connecting Sequelize to MySQL generating access denied error将 Sequelize 连接到 MySQL 生成访问被拒绝错误
【发布时间】:2019-09-15 02:44:48
【问题描述】:

我正在尝试将 Sequelize 连接到本地 mySql 实例。在测试中,我从 Sqlite 开始,它工作得很好。现在我正在切换到 MySql,在我的单元测试中出现访问被拒绝错误。这是一个加载 sequelize 模块的 node.js 项目,环境变量正在使用 .env 进行本地测试。 在项目中,我有一个初始化续集上下文的模型目录:

models/index.js

let sequelize = {};

if (typeof process.env !== 'undefined' && process.env.ENVIRONMENT === 'production') {
  sequelize = new Sequelize(process.env.DB_NAME, process.env.DB_USER, process.env.PASSWORD,
    { host: process.env.DB_HOST, dialect: process.env.MYSQLDIALECT, port: process.env.DB_PORT });
} else if(process.env !== 'undefined' &&  process.env.ENVIRONMENT === 'development') {
  sequelize = new Sequelize({dialect: process.env.DIALECT, storage: process.env.STORAGE});
} 

.env

ENVIRONMENT=production

DB_NAME='MYRDSDataStore'
DB_HOST=127.0.0.1
DB_PORT=3306
DB_USER='sqlserviceuser'
DB_PASSWORD='password'
MYSQLDIALECT='mysql'

SQLITEDIALECT='sqlite'
STORAGE='db.sqlite'

主机设置为 127.0.0.1 但我也尝试了 localhost 并收到相同的错误。

index.test.spec.js

describe('Create Audit Table and insert error object', ()=>{
    it('Creates audit table and inserts record',()=>{

        let errorObject ={
            errorCode: '300',
            event: 'POST',
            userName: 'testUser',
            message: 'Error message from test'
        }
            util.AuditLogger(errorObject)
            .then(()=>{
                model.Audit.findAll({
                attributes: ['errorCode']
                }).then((data)=>{
                expect(data).to.have.lengthOf.at.least(1);
            });
        });
    });         
}); 

当我运行单元测试时,出现以下异常:

Unhandled rejection SequelizeAccessDeniedError: Access denied for user 'sqlserviceuser'@'localhost' (using password: NO)

用户 sqlserviceuser 是我使用 sql workbench 创建并授予用户 dbo 角色的新用户(因此他们目前拥有完全访问权限)

在终端窗口中我尝试了以下命令:

mysql -h localhost -u sqlserviceuser -p MYRDSDataStore

输入这个然后提示我输入密码,然后我可以登录,然后是登录消息:

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 29
Server version: 8.0.15 MySQL Community Server - GPL 

任何人都可以就 Sequelize 失败的原因或我需要更改什么以允许 Sequelize 连接提供任何建议或想法吗?

谢谢

【问题讨论】:

  • DB_PASSWORD 是否实际设置为 sqlserviceuser 用户的密码?
  • 是的,我只是为本地测试设置了一个简单的密码。我看过一些特殊字符引起问题的帖子,所以作为测试,我只使用了一个基本字符密码“密码”,它不会在生产中使用

标签: mysql node.js sequelize.js


【解决方案1】:

sequelize = new Sequelize(process.env.DB_NAME, process.env.DB_USER, process.env.PASSWORD

->

sequelize = new Sequelize(process.env.DB_NAME, process.env.DB_USER, process.env.DB_PASSWORD

应该是这里的问题

【讨论】:

    猜你喜欢
    • 2015-06-21
    • 1970-01-01
    • 1970-01-01
    • 2021-02-03
    • 2018-05-19
    • 2016-02-07
    • 1970-01-01
    • 2010-10-04
    • 1970-01-01
    相关资源
    最近更新 更多