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 相关文章推荐
javascript比较文档位置
Apr 08 Javascript
jquery之empty()与remove()区别说明
Sep 10 Javascript
js截取中英文字符串、标点符号无乱码示例解读
Apr 17 Javascript
JavaScript避免内存泄露及内存管理技巧
Sep 05 Javascript
采用自执行的匿名函数解决for循环使用闭包的问题
Sep 11 Javascript
jquery提示效果实例分析
Nov 25 Javascript
JavaScript获得url查询参数的方法
Jul 02 Javascript
javascript+canvas实现刮刮卡抽奖效果
Jul 29 Javascript
jQuery插件EasyUI校验规则 validatebox验证框
Nov 29 Javascript
js+css实现扇形导航效果
Aug 18 Javascript
小程序实现可拖动的悬浮按钮
Sep 07 Javascript
JavaScript 事件代理需要注意的地方
Sep 08 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
javascript中直接写php代码的方法
2013/07/31 Javascript
js获取系统的根路径实现介绍
2013/09/08 Javascript
JavaScript模拟深蓝vs卡斯帕罗夫的国际象棋对局示例
2015/04/22 Javascript
jquery获得当前html页面源码的方法
2015/07/14 Javascript
js中setTimeout的妙用--防止循环超时
2017/03/06 Javascript
基于jQuery实现手风琴菜单、层级菜单、置顶菜单、无缝滚动效果
2017/07/20 jQuery
基于jQuery中ajax的相关方法汇总(必看篇)
2017/11/08 jQuery
vue.js移动数组位置,同时更新视图的方法
2018/03/08 Javascript
vue中利用Promise封装jsonp并调取数据
2019/06/18 Javascript
vue实现滑动到底部加载更多效果
2020/10/27 Javascript
vue-cli和v-charts实现可视化图表过程解析
2019/10/08 Javascript
解决VUE自定义拖拽指令时 onmouseup 与 click事件冲突问题
2020/07/24 Javascript
vue-video-player 断点续播的实现
2021/02/01 Vue.js
python使用百度翻译进行中翻英示例
2014/04/14 Python
Python脚本实现DNSPod DNS动态解析域名
2015/02/14 Python
python并发编程之线程实例解析
2017/12/27 Python
python爬虫爬取网页表格数据
2018/03/07 Python
python实现简单遗传算法
2018/03/19 Python
python 执行shell命令并将结果保存的实例
2018/05/11 Python
基于anaconda下强大的conda命令介绍
2018/06/11 Python
TensorFlow的权值更新方法
2018/06/14 Python
python实现归并排序算法
2018/11/22 Python
Python判断两个文件是否相同与两个文本进行相同项筛选的方法
2019/03/01 Python
pyqt5实现绘制ui,列表窗口,滚动窗口显示图片的方法
2019/06/20 Python
python中的线程threading.Thread()使用详解
2019/12/17 Python
python使用正则来处理各种匹配问题
2019/12/22 Python
python3 字符串知识点学习笔记
2020/02/08 Python
Win10用vscode打开anaconda环境中的python出错问题的解决
2020/05/25 Python
凯特·丝蓓英国官网:Kate Spade英国
2016/11/07 全球购物
保加利亚服装和鞋类购物网站:Bibloo.bg
2020/11/08 全球购物
岗位标兵事迹材料
2014/05/17 职场文书
个人批评与自我批评范文
2014/10/17 职场文书
2014年卫生院工作总结
2014/12/03 职场文书
五年级上册复习计划
2015/01/19 职场文书
Java生成日期时间存入Mysql数据库的实现方法
2022/03/03 Java/Android
解决ubuntu安装软件时,status-code=409报错的问题
2022/12/24 Servers