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 动态添加样式规则 W3C校检
Dec 25 Javascript
基于jQuery的js分页代码
Jun 10 Javascript
javascript:void(0)的作用示例介绍
Oct 28 Javascript
jqGrid增加时--判断开始日期与结束日期(实例解析)
Nov 08 Javascript
判断日期是否能跨月查询的js代码
Jul 25 Javascript
JS中完美兼容各大浏览器的scrolltop方法
Apr 17 Javascript
JS中传递参数的几种不同方法比较
Jan 20 Javascript
详解使用angular-cli发布i18n多国语言Angular应用
May 20 Javascript
微信小程序实现多选功能
Nov 04 Javascript
js使用文件流下载csv文件的实现方法
Jul 15 Javascript
uni-app使用countdown插件实现倒计时
Nov 01 Javascript
Vue如何实现组件间通信
May 15 Vue.js
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代码判断设备是手机还是平板电脑(两种方法)
2015/10/19 PHP
Zend Framework连接Mysql数据库实例分析
2016/03/19 PHP
Yii 框架使用数据库(databases)的方法示例
2020/05/19 PHP
JavaScript使用prototype定义对象类型
2007/02/07 Javascript
JAVASCRIPT对象及属性
2007/02/13 Javascript
修改jquery里的dialog对话框插件为框架页(iframe) 的方法
2010/09/14 Javascript
js动态在form上插入enctype=multipart/form-data的问题
2012/05/24 Javascript
jquery下checked取值问题的解决方法
2012/08/09 Javascript
jquery插件制作 图片走廊 gallery
2012/08/17 Javascript
js中replace的用法总结
2013/12/27 Javascript
通过复制Table生成word和excel的javascript代码
2014/01/20 Javascript
jquery根据属性和index来查找属性值并操作
2014/07/25 Javascript
jQuery实现可拖拽的许愿墙效果【附demo源码下载】
2016/09/14 Javascript
在 Node.js 中使用 async 函数的方法
2017/11/17 Javascript
JavaScript模块详解
2017/12/18 Javascript
JS中常用的消息框总结
2018/02/24 Javascript
基于vue中对鼠标划过事件的处理方式详解
2018/08/22 Javascript
js的各种数据类型判断的介绍
2019/01/19 Javascript
详解Vue的watch中的immediate与watch是什么意思
2019/12/30 Javascript
vue自定义组件(通过Vue.use()来使用)即install的用法说明
2020/08/11 Javascript
[36:41]完美世界DOTA2联赛循环赛FTD vs Magma第一场 10月30日
2020/10/31 DOTA
python正则表达式的使用
2017/06/12 Python
Python使用pickle模块储存对象操作示例
2018/08/15 Python
用python生成(动态彩色)二维码的方法(使用myqr库实现)
2019/06/24 Python
python 控制Asterisk AMI接口外呼电话的例子
2019/08/08 Python
Pytorch 实现冻结指定卷积层的参数
2020/01/06 Python
Python autoescape标签用法解析
2020/01/17 Python
如何解决tensorflow恢复模型的特定值时出错
2020/02/06 Python
Opencv+Python识别PCB板图片的步骤
2021/01/07 Python
CSS3实现曲线阴影和翘边阴影
2016/05/03 HTML / CSS
科尔士百货公司官网:Kohl’s
2016/07/11 全球购物
英国家具、照明、家居用品网上商店:Wayfair.co.uk
2020/02/13 全球购物
英语专业学生个人求职信
2014/01/28 职场文书
工作过失检讨书
2014/02/23 职场文书
2015年英语教研组工作总结
2015/05/23 职场文书
vue递归实现树形组件
2022/07/15 Vue.js