UnhandledrejectionSequelizeAccessDeniedError:Accessdeniedforuser'lupeng'@'localhost'(usingpassword:YES)这是Node使用Sequlize连接时报的错误mysql数据。关键看冒号后面的错误:accessdenied,关键是accessdenied的错误,说明数据库连接有问题,数据库连接访问被拒绝,或者没有相应的操作权限,或者账??号密码错误。这样,问题就定位到了访问权限和账号密码错误两点。别忘了从其他方面找问题,那只会浪费时间。1、用户权限问题。权限问题从数据库开始。确认用户授权后,是否刷新权限列表。即使用grant命令授权用户后,要使用flushprivileges命令。这是很多人都会忽略的问题。如果用户授权没有问题,尝试重启mysql服务器。使用命令/etc/init.d/mysqlrestart重启mysql服务器。不同Linux版本重启命令可能不同。我这里是Debain系统。如果重启后问题没有解决,那么可能不是数据库用户权限的问题。2.账号密码问题账号密码错误。这个问题听起来很可笑,但是很多人在开发过程中都会忽略它。你为什么这么说?我使用config-lite模块来配置数据库参数,因为开发会在多个系统环境中切换,通过简单的环境变量配置可以使用config-lite模块加载不同的参数文件。具体使用可以参考:不同环境下的配置文件使用-Node实战-技术生活-SegmentFault。我的问题就在这里,打开一个终端运行项目npmruntest,package.json文件配置了测试运行脚本NODE_ENV=testsupervisor--harmony-iviews/./bin/www.打开另一个终端并运行数据库同步命令。同步命令单独写在一个js脚本中,数据连接方式(通用)在脚本中引用。连接方法如下:varSequelize=require('sequelize');//引入数据库配置文件varsqlConfig=require('config-lite')(__dirname).mysql;varsequelize=newSequelize(sqlConfig.database,sqlConfig.user,sqlConfig.password,{host:sqlConfig.host,dialect:'mysql',pool:{max:10,min:0,idle:10000}});module.exports=续集;所以在同步数据库的时候,一直报错如题,但是我觉得是对的,最后查了一下才发现问题所在:测试脚本中的NODE_ENV环境变量只在当前终端有效。如果要打开另一个终端同步数据库,需要在另一个终端设置环境变量。否则加载的数据库参数不一致,即连接数据库的用户名和密码不正确。超过
