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 相关文章推荐
jQuery学习笔记之jQuery的DOM操作
Dec 22 Javascript
js检查页面上有无重复id的实现代码
Jul 17 Javascript
js拖拽一些常见的思路方法整理
Mar 19 Javascript
javascript引擎长时间独占线程造成卡顿的解决方案
Dec 03 Javascript
jQuery控制网页打印指定区域的方法
Apr 07 Javascript
js实现仿百度风云榜可重复多次调用的TAB切换选项卡效果
Aug 31 Javascript
JavaScript基础篇(6)之函数表达式闭包
Dec 11 Javascript
JavaScript lodash常见用法系列小结
Aug 24 Javascript
javascript 作用于作用域链的详解
Sep 27 Javascript
Vue 进入/离开动画效果
Dec 26 Javascript
Vue.js 利用v-for中的index值实现隔行变色
Aug 01 Javascript
微信小程序自定义底部导航带跳转功能
Nov 27 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初学者写及时补给skype用户充话费的小程序
2008/11/02 PHP
PHP 第二节 数据类型之转换
2012/04/28 PHP
php导入csv文件碰到乱码问题的解决方法
2014/02/10 PHP
php版微信公众号接口实现发红包的方法
2016/10/14 PHP
PHP从数组中删除元素的四种方法实例
2017/05/12 PHP
控制打印时页眉角的代码
2007/02/08 Javascript
javascript 可以拖动的DIV(二)
2009/06/26 Javascript
用Javascript实现Sleep暂停功能代码
2010/09/03 Javascript
原始XMLHttpRequest方法详情回顾
2013/11/28 Javascript
javascript实现文本域写入字符时限定字数
2014/02/12 Javascript
ExtJS4利根据登录后不同的角色分配不同的树形菜单
2014/05/02 Javascript
EasyUI的doCellTip实现鼠标放到单元格上提示单元格内容
2016/08/24 Javascript
JS获取多维数组中相同键的值实现方法示例
2017/01/06 Javascript
bootstrap daterangepicker双日历时间段选择控件详解
2017/06/15 Javascript
解决React Native端口号修改的方法
2017/07/28 Javascript
Vue.directive 自定义指令的问题小结
2018/03/04 Javascript
Javascript如何实现双指控制图片功能
2020/02/25 Javascript
vue Treeselect 树形下拉框:获取选中节点的ids和lables操作
2020/08/15 Javascript
Python  连接字符串(join %)
2008/09/06 Python
python中使用sys模板和logging模块获取行号和函数名的方法
2014/04/15 Python
Python数据结构之双向链表的定义与使用方法示例
2018/01/16 Python
python numpy数组复制使用实例解析
2020/01/10 Python
python利用os模块编写文件复制功能——copy()函数用法
2020/07/13 Python
PyCharm 解决找不到新打开项目的窗口问题
2021/01/15 Python
使用css3实现超炫的loading加载动画效果
2014/05/07 HTML / CSS
Nike爱尔兰官方网站:Nike.com (IE)
2018/03/12 全球购物
xxx同志考察材料
2014/02/07 职场文书
洗车工岗位职责
2014/03/15 职场文书
2014年秋季开学寄语
2014/08/02 职场文书
国庆横幅标语
2014/10/08 职场文书
幼师个人总结范文
2015/02/28 职场文书
2014年度个人工作总结范文
2015/03/09 职场文书
《我们的民族小学》教学反思
2016/02/19 职场文书
传单、海报早OUT了,另类传单营销方案送给你!
2019/07/15 职场文书
mysql 联合索引生效的条件及索引失效的条件
2021/11/20 MySQL
Python中Schedule模块使用详解 周期任务神器
2022/04/19 Python