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中prototype为对象添加属性的误区介绍
Oct 15 Javascript
js实现目录定位正文示例
Nov 14 Javascript
原生JavaScript生成GUID的实现示例
Sep 05 Javascript
浅谈JavaScript对象的创建方式
Jun 13 Javascript
bootstarp modal框居中显示的实现代码
Feb 18 Javascript
react native实现往服务器上传网络图片的实例
Aug 07 Javascript
ionic3 懒加载
Aug 16 Javascript
React-Native之定时器Timer的实现代码
Oct 04 Javascript
解读vue生成的文件目录结构及说明
Nov 27 Javascript
Vue中函数防抖节流的理解及应用实现
Apr 24 Javascript
Node.js API详解之 vm模块用法实例分析
May 27 Javascript
js实现上传图片到服务器
Apr 11 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 mail 通过Windows的SMTP发送邮件失败的解决方案
2009/05/27 PHP
使用PHP计算两个路径的相对路径
2013/06/14 PHP
php堆排序(heapsort)练习
2013/11/13 PHP
CodeIgniter中使用cookie的三种方式详解
2014/07/18 PHP
又一个图片自动缩小的JS代码
2007/03/10 Javascript
js function定义函数使用心得
2010/04/15 Javascript
js隐藏与显示回到顶部按钮及window.onscroll事件应用
2013/01/25 Javascript
深入理解JQuery keyUp和keyDown的区别
2013/12/12 Javascript
javascript移出节点removeChild()使用介绍
2014/04/03 Javascript
jquery form 加载数据示例
2014/04/21 Javascript
jQuery控制的不同方向的滑动(向左、向右滑动等)
2014/07/18 Javascript
node.js中的fs.lchownSync方法使用说明
2014/12/16 Javascript
手机端图片缩放旋转全屏查看PhotoSwipe.js插件实现
2016/08/25 Javascript
JS实现仿百度文库评分功能
2017/01/12 Javascript
js实现控制文件拖拽并获取拖拽内容功能
2018/02/17 Javascript
vue webpack打包后图片路径错误的完美解决方法
2018/12/07 Javascript
JavaScript中this函数使用实例解析
2020/02/21 Javascript
[39:07]LGD vs VP 2018国际邀请赛淘汰赛BO3 第二场 8.21
2018/08/22 DOTA
Pycharm学习教程(3) 代码运行调试
2017/05/03 Python
python实现给微信公众号发送消息的方法
2017/06/30 Python
python扫描proxy并获取可用代理ip的实例
2017/08/07 Python
Python 解决中文写入Excel时抛异常的问题
2018/05/03 Python
Python中pip更新和三方插件安装说明
2018/07/08 Python
深入浅析Python代码规范性检测
2020/07/31 Python
python实现猜拳游戏项目
2020/11/30 Python
美国时装品牌:Nautica(诺帝卡)
2016/08/28 全球购物
全球地下的服装和态度:Slam Jam
2018/02/04 全球购物
菲律宾最大的网上花店和礼品店:PhilFlower.com
2018/02/09 全球购物
澳大利亚礼品卡商店:Gift Card Store
2019/06/24 全球购物
中专毕业个人的自荐信格式
2013/09/21 职场文书
幼儿教师研修感言
2014/02/12 职场文书
小学语文教学经验交流材料
2014/06/02 职场文书
暑期教师培训方案
2014/06/07 职场文书
2014年工会工作总结
2014/11/12 职场文书
学生病假条范文
2015/08/17 职场文书
CSS子盒子水平和垂直居中的五种方法
2022/07/23 HTML / CSS