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 相关文章推荐
利用js判断浏览器类型(是否为IE,Firefox,Opera浏览器)
Nov 22 Javascript
JavaScript将取代AppleScript?
Sep 18 Javascript
Jquery代码实现图片轮播效果(一)
Aug 12 Javascript
深入理解$.each和$(selector).each
May 15 Javascript
js插件dropload上拉下滑加载数据实例解析
Jul 27 Javascript
浅谈JavaScript 中有关时间对象的方法
Aug 15 Javascript
Vue组件化通讯的实例代码
Jun 23 Javascript
利用vue+elementUI实现部分引入组件的方法详解
Nov 22 Javascript
js动态引入的四种方法
May 05 Javascript
JavaScript中引用vs复制示例详析
Dec 06 Javascript
js编写简易的计算器
Jul 29 Javascript
VUE使用axios调用后台API接口的方法
Aug 03 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
php中将地址生成迅雷快车旋风链接的代码[测试通过]
2011/04/20 PHP
PHP 利用Mail_MimeDecode类提取邮件信息示例
2014/01/26 PHP
动态加载图片路径 保持JavaScript控件的相对独立性
2010/09/03 Javascript
Web跨浏览器进程通信(Web跨域)
2013/04/17 Javascript
Javascript拓展String方法小结
2013/07/08 Javascript
window.onresize 多次触发的解决方法
2013/11/08 Javascript
js实现文章文字大小字号功能完整实例
2014/11/01 Javascript
jquery.gridrotator实现响应式图片展示画廊效果
2015/06/23 Javascript
超漂亮的Bootstrap 富文本编辑器summernote
2016/04/05 Javascript
JS弹出窗口插件zDialog简单用法示例
2016/06/12 Javascript
javascript实现随机生成DIV背景色
2016/06/20 Javascript
jQuery简单动画变换效果实例分析
2016/07/04 Javascript
全面了解addEventListener和on的区别
2016/07/14 Javascript
js仿小米官网图片轮播特效
2016/09/29 Javascript
老生常谈JavaScript中的this关键字
2016/10/01 Javascript
jQuery通过ajax快速批量提交表单数据
2016/10/25 Javascript
如何写好你的JavaScript【推荐】
2017/03/02 Javascript
vue如何使用 Slot 分发内容实例详解
2017/09/05 Javascript
推荐VSCode 上特别好用的 Vue 插件之vetur
2017/09/14 Javascript
nodejs超出最大的调用栈错误问题
2017/12/27 NodeJs
Vue使用枚举类型实现HTML下拉框步骤详解
2018/02/05 Javascript
Vue实现一个无限加载列表功能
2018/11/13 Javascript
js new Date()实例测试
2019/10/31 Javascript
探索浏览器页面关闭window.close()的使用详解
2020/08/21 Javascript
原生js实现无缝轮播图效果
2021/01/28 Javascript
[03:40]DOTA2亚洲邀请赛小组赛第二日 赛事回顾
2015/01/31 DOTA
[01:30:15]DOTA2-DPC中国联赛 正赛 Ehome vs Aster BO3 第二场 2月2日
2021/03/11 DOTA
在Python的Django框架中simple-todo工具的简单使用
2015/05/30 Python
详解python持久化文件读写
2019/04/06 Python
Python pickle模块实现对象序列化
2019/11/22 Python
解决Django响应JsonResponse返回json格式数据报错问题
2020/08/09 Python
深入了解Python 方法之类方法 & 静态方法
2020/08/17 Python
浅谈Selenium+Webdriver 常用的元素定位方式
2021/01/13 Python
PHP如何防止SQL注入
2014/05/03 面试题
大学生毕业自我鉴定范文
2013/09/19 职场文书
企业授权委托书范本
2014/09/22 职场文书