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 相关文章推荐
发现的以前不知道的函数
Sep 19 Javascript
getElementById在任意一款浏览器中都可以用吗的疑问回复
May 13 Javascript
运用jquery实现table单双行不同显示并能单行选中
Jul 25 Javascript
基于JQuery实现滚动到页面底端时自动加载更多信息
Jan 31 Javascript
jquery.form.js框架实现文件上传功能案例解析(springmvc)
May 26 Javascript
原生js实现旋转木马轮播图效果
Feb 27 Javascript
解决React Native端口号修改的方法
Jul 28 Javascript
Javascript中弹窗confirm与prompt的区别
Oct 26 Javascript
js使用Promise实现简单的Ajax缓存
Nov 14 Javascript
微信小程序-form表单提交代码实例
Apr 29 Javascript
vue在App.vue文件中监听路由变化刷新页面操作
Aug 14 Javascript
JavaScript快速调试的两个技巧
Nov 04 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
使用VisualStudio开发php的图文设置方法
2010/08/21 PHP
PHP CURL 多线程操作代码实例
2015/05/13 PHP
php线性表的入栈与出栈实例分析
2015/06/12 PHP
php的无刷新操作实现方法分析
2020/02/28 PHP
如何在PHP中使用数组
2020/06/09 PHP
HTML5如何适配 iPhone IOS 底部黑条
2021/03/09 HTML / CSS
动态表格Table类的实现
2009/08/26 Javascript
获取焦点时,利用js定时器设定时间执行动作
2010/04/02 Javascript
基于jQuery制作迷你背词汇工具
2010/07/27 Javascript
js open() 与showModalDialog()方法使用介绍
2013/09/10 Javascript
javascript学习笔记(八)正则表达式
2014/10/08 Javascript
js实现class样式的修改、添加及删除的方法
2015/01/20 Javascript
jQuery实现表格行上移下移和置顶的方法
2015/05/22 Javascript
angularjs客户端实现压缩图片文件并上传实例
2015/07/06 Javascript
vue.js中引入vuex储存接口数据及调用的详细流程
2017/12/14 Javascript
vue实现侧边栏导航效果
2019/10/21 Javascript
Jquery+AJAX实现无刷新上传并重命名文件操作示例【PHP后台接收】
2020/05/29 jQuery
React实现全选功能
2020/08/25 Javascript
解决vuex改变了state的值,但是页面没有更新的问题
2020/11/12 Javascript
[14:51]DOTA2 HEROS教学视频教你分分钟做大人-卓尔游侠
2014/06/13 DOTA
Python中返回字典键的值的values()方法使用
2015/05/22 Python
python使用matplotlib画饼状图
2018/09/25 Python
pycharm恢复默认设置或者是替换pycharm的解释器实例
2018/10/29 Python
PyQt5图形界面播放音乐的实例
2019/06/17 Python
new_zeros() pytorch版本的转换方式
2020/02/18 Python
python安装dlib库报错问题及解决方法
2020/03/16 Python
canvas如何实现多张图片编辑的图片编辑器
2020/03/10 HTML / CSS
美国电子产品主要品牌的授权在线零售商:DataVision
2019/03/23 全球购物
Emma Bridgewater官网:英国餐具制造商
2019/11/24 全球购物
List, Set, Map是否继承自Collection接口?
2016/05/16 面试题
Exception类的常用方法
2012/06/16 面试题
小学家长评语大全
2014/04/16 职场文书
厉行勤俭节约倡议书
2014/05/16 职场文书
国际贸易求职信
2014/07/05 职场文书
七一讲话心得体会
2014/09/05 职场文书
2015世界地球日活动总结
2015/02/09 职场文书