Node使用Sequlize连接Mysql报错:Access denied for user ‘xxx’@‘localhost’


Posted in Javascript onJanuary 03, 2018

前言

最近在工作中遇到问题,问题如下:

Unhandled rejection SequelizeAccessDeniedError: Access denied for user 'lupeng'@'localhost' (using password: YES)

这是Node在使用Sequlize连接Mysql数据时报的错,关键看冒号后面的错误:访问拒绝,关键是访问拒绝的错误,说明数据库连接这里有问题,数据库连接访问拒绝,要么是没有相应的操作权限,要么是账号密码错误。

这样就把问题定位在访问权限以及账号密码错误两点上了,千万不要忘其他方面去找问题了,那样只会是浪费时间。

1. 用户权限的问题

权限问题从数据库着手,确认用户授权后,是否刷新的权限列表。也就是在使用Grant命令授权用户后,应该要使用flush privileges命令,这个是很多人会忽略的问题。

如果用户授权没有问题,那么尝试重启mysql服务器。使用命令/etc/init.d/mysql restart重启mysql服务器,不同Linux版本重启命令可能不一样,我这里是Debain系。

如果重启了问题还没有解决,那么可能就不是数据库用户权限的问题了。

2. 账号密码的问题

账号密码错误,这个问题听起来很扯,但是开发过程中,很多人会忽略掉。为什么这么说?我使用的是config-lite模块来配置数据库参数,因为会在多个系统环境中切换开发,使用config-lite模块可以通过简单的环境变量配置,来加载不同的参数文件。具体用法参照:不同环境下配置文件使用。

我的问题就出现在这里,打开一个终端运行项目npm run test,package.json文件里配置着test的运行脚本NODE_ENV=test supervisor --harmony -i views/ ./bin/www。另打开一个终端,运行数据库同步的命令,同步命令是单独写在一个js脚本中,脚本里引用了数据连接方法(通用的),连接方法如下:

var Sequelize = require('sequelize');
// 引入数据库配置文件
var sqlConfig = require('config-lite')(__dirname).mysql;
var sequelize = new Sequelize(sqlConfig.database, sqlConfig.user, sqlConfig.password, {
 host: sqlConfig.host,
 dialect: 'mysql',
 pool: {
 max: 10,
 min: 0,
 idle: 10000
 }
});
module.exports = sequelize;

于是在同步数据库的时候,总是如标题报错,然而觉得没错啊,最后检查才发现问题所在:运行test脚本里的NODE_ENV环境变量只在当前终端下才有效,如果要另开一个终端来同步数据库,那么需要在另开的终端里再设置一下环境变量。不然加载的数据库参数是不一致的,也就是说连接数据库的用户名密码是不对的。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
基于jquery完美拖拽,可返回拖动轨迹
Mar 29 Javascript
JavaScript通过RegExp实现客户端验证处理程序
May 07 Javascript
JS中自定义定时器让它在某一时刻执行
Sep 02 Javascript
jQuery实现复选框成对选择及对应取消的方法
Mar 03 Javascript
js+flash实现的5图变换效果广告代码(附演示与demo源码下载)
Apr 01 Javascript
JS实现将Asp.Net的DateTime Json类型转换为标准时间的方法
Aug 02 Javascript
knockoutjs动态加载外部的file作为component中的template数据源的实现方法
Sep 01 Javascript
基于jQuery实现滚动刷新效果
Jan 09 Javascript
vue-router 中router-view不能渲染的解决方法
May 23 Javascript
详解promise.then,process.nextTick, setTimeout 以及 setImmediate的执行顺序
Nov 21 Javascript
微信小程序实现随机验证码功能
Dec 20 Javascript
Electron+vue从零开始打造一个本地播放器的方法示例
Oct 27 Javascript
angularjs实现分页和搜索功能
Jan 03 #Javascript
vue引入ueditor及node后台配置详解
Jan 03 #Javascript
Node.js搭建小程序后台服务
Jan 03 #Javascript
基于js文件加载优化(详解)
Jan 03 #Javascript
jQuery 实现左右两侧菜单添加、移除功能
Jan 02 #jQuery
js 取消页面可以选中文字的功能方法
Jan 02 #Javascript
js阻止默认右键的下拉菜单方法
Jan 02 #Javascript
You might like
Zend Framework教程之Resource Autoloading用法实例
2016/03/08 PHP
Zend Framework处理Json数据方法详解
2016/12/09 PHP
HTML中Select不用Disabled实现ReadOnly的效果
2008/04/07 Javascript
jQuery参数列表集合
2011/04/06 Javascript
用JS判断IE版本的代码 超管用!
2011/08/09 Javascript
SOSO地图API使用(一)在地图上画圆实现思路与代码
2013/01/15 Javascript
jQuery使用before()和after()在元素前后添加内容的方法
2015/03/26 Javascript
JS实现日期时间动态显示的方法
2015/12/07 Javascript
jquery实现手机端单店铺购物车结算删除功能
2017/02/22 Javascript
AngularJS 限定$scope的范围实例详解
2017/06/23 Javascript
基于JavaScript实现飘落星星特效
2017/08/10 Javascript
关于vue-router的beforeEach无限循环的问题解决
2017/09/09 Javascript
jQuery 实现左右两侧菜单添加、移除功能
2018/01/02 jQuery
关于vue单文件中引用路径的处理方法
2018/01/08 Javascript
node.js文件上传重命名以及移动位置的示例代码
2018/01/19 Javascript
JS数组去重的6种方法完整实例
2018/12/08 Javascript
vue源码nextTick使用及原理解析
2019/08/13 Javascript
Vue+iview+webpack ie浏览器兼容简单处理
2019/09/20 Javascript
JS防抖和节流实例解析
2019/09/24 Javascript
Vue 打包的静态文件不能直接运行的原因及解决办法
2020/11/19 Vue.js
[01:04:05]VG vs Newbee 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Python中的ConfigParser模块使用详解
2015/05/04 Python
Python实现连接postgresql数据库的方法分析
2017/12/27 Python
django输出html内容的实例
2018/05/27 Python
python用fsolve、leastsq对非线性方程组求解
2018/12/15 Python
Python英文文本分词(无空格)模块wordninja的使用实例
2019/02/20 Python
浅谈pycharm使用及设置方法
2019/09/09 Python
Python如何使用paramiko模块连接linux
2020/03/18 Python
Python实现猜年龄游戏代码实例
2020/03/25 Python
基于SpringBoot构造器注入循环依赖及解决方式
2020/04/26 Python
python轮询机制控制led实例
2020/05/03 Python
《小山羊和小灰兔》教学反思
2014/02/19 职场文书
国旗下的讲话演讲稿
2014/05/08 职场文书
党员民主评议自我评价
2014/10/20 职场文书
市场部岗位职责范本
2015/04/15 职场文书
消防演习感想
2015/08/10 职场文书