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.buildFragment使用方法及思路分析
Jan 07 Javascript
js将iframe中控件的值传到主页面控件中的实现方法
Mar 11 Javascript
js全屏显示显示代码的三种方法
Nov 11 Javascript
ext combobox动态加载数据库数据(附前后台)
Jun 17 Javascript
JS制作手机端自适应缩放显示
Jun 11 Javascript
jQuery实现类似老虎机滚动抽奖效果
Aug 06 Javascript
Bootstrap教程JS插件弹出框学习笔记分享
May 17 Javascript
基于js对象,操作属性、方法详解
Aug 11 Javascript
Vuejs第六篇之Vuejs与form元素实例解析
Sep 05 Javascript
jQuery创建及操作xml格式数据示例
May 26 jQuery
VUE+elementui面包屑实现动态路由详解
Nov 04 Javascript
小程序实现上传视频功能
Aug 18 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
如何使用脚本模仿登陆过程
2006/11/22 PHP
php header Content-Type类型小结
2011/07/03 PHP
PHP设计模式之调解者模式的深入解析
2013/06/13 PHP
PHP根据传来的16进制颜色代码自动改变背景颜色
2014/06/13 PHP
PHP生成唯一ID之SnowFlake算法
2016/12/17 PHP
PHP如何获取当前主机、域名、网址、路径、端口等参数
2017/06/09 PHP
PHP错误提示It is not safe to rely on the system……的解决方法
2019/03/25 PHP
Swoole实现异步投递task任务案例详解
2019/04/02 PHP
CSS+JS构建的图片查看器
2006/07/22 Javascript
用JS实现的一个include函数
2007/07/21 Javascript
JavaScript 脚本将当地时间转换成其它时区
2009/03/19 Javascript
jquery 分页控件实现代码
2009/11/30 Javascript
javascript中的变量是传值还是传址的?
2010/04/19 Javascript
将json当数据库一样操作的javascript lib
2013/10/28 Javascript
推荐 21 款优秀的高性能 Node.js 开发框架
2014/08/18 Javascript
Eclipse引入jquery报错如何解决
2015/12/01 Javascript
javaScript中定义类或对象的五种方式总结
2016/12/04 Javascript
jq checkbox 的全选并ajax传参的实例
2017/04/01 Javascript
微信小程序实现点击按钮修改字体颜色功能【附demo源码下载】
2017/12/05 Javascript
通过jquery toggleClass()属性制作文章段落更改背景颜色
2018/05/21 jQuery
详解如何在vue项目中使用layui框架及采坑
2019/05/05 Javascript
layui默认选中table的CheckBox复选框方法
2019/09/19 Javascript
js用正则表达式筛选年月日的实例方法
2021/01/04 Javascript
聊聊vue 中的v-on参数问题
2021/01/29 Vue.js
[05:49]DOTA2-DPC中国联赛 正赛 Elephant vs LBZS 选手采访
2021/03/11 DOTA
python抓取京东商城手机列表url实例代码
2013/12/18 Python
Flask框架学习笔记(一)安装篇(windows安装与centos安装)
2014/06/25 Python
Python对象体系深入分析
2014/10/28 Python
Python的dict字典结构操作方法学习笔记
2016/05/07 Python
解决tensorflow1.x版本加载saver.restore目录报错的问题
2018/07/26 Python
django如何实现视图重定向
2019/07/24 Python
keras实现VGG16 CIFAR10数据集方式
2020/07/07 Python
Python实现列表索引批量删除的5种方法
2020/11/16 Python
三月雷锋月活动总结
2014/07/03 职场文书
2014年行政部工作总结
2014/11/19 职场文书
学校开除通知书
2015/04/25 职场文书