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 常见学习网站与参考书
Nov 09 Javascript
js 禁用只读文本框获得焦点时的退格键
Apr 25 Javascript
学习Bootstrap组件之下拉菜单
Jul 28 Javascript
JS+CSS实现的日本门户网站经典选项卡导航效果
Sep 27 Javascript
SpringMVC框架下JQuery传递并解析Json格式的数据是如何实现的
Dec 10 Javascript
javascript每日必学之运算符
Feb 16 Javascript
微信小程序 底部导航栏目开发资料
Dec 05 Javascript
jQuery读取XML文件的方法示例
Feb 03 Javascript
微信小程序获取手机号授权用户登录功能
Nov 09 Javascript
详解ng-alain动态表单SF表单项设置必填和正则校验
Jun 11 Javascript
利用Vue的v-for和v-bind实现列表颜色切换
Jul 17 Javascript
vue 给数组添加新对象并赋值
Apr 20 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
BBS(php & mysql)完整版(五)
2006/10/09 PHP
PHP 危险函数全解析
2009/09/09 PHP
Discuz 6.0+ 批量注册用户名
2009/09/13 PHP
PHP根据IP判断地区名信息的示例代码
2014/03/03 PHP
php中adodbzip类实例
2014/12/08 PHP
thinkphp中的url跳转用法分析
2016/07/12 PHP
PHP登录(ajax提交数据和后台校验)实例分享
2016/12/29 PHP
Javascript页面添加到收藏夹的简单方法
2013/08/07 Javascript
使用javascript实现ListBox左右全选,单选,多选,全请
2013/11/07 Javascript
JS冒泡事件的快速解决方法
2013/12/16 Javascript
解析如何利用iframe标签以及js制作时钟
2016/12/08 Javascript
微信小程序 连续旋转动画(this.animation.rotate)详解
2017/04/07 Javascript
如何在 Vue.js 中使用第三方js库
2017/04/25 Javascript
JavaScript实现微信红包算法及问题解决方法
2018/04/26 Javascript
Node.js log4js日志管理详解
2018/07/31 Javascript
深入理解Vue父子组件生命周期执行顺序及钩子函数
2018/08/12 Javascript
这应该是最详细的响应式系统讲解了
2019/07/22 Javascript
[01:15:36]加油刀塔第二期网络版
2014/08/09 DOTA
连接Python程序与MySQL的教程
2015/04/29 Python
详解详解Python中writelines()方法的使用
2015/05/25 Python
python random从集合中随机选择元素的方法
2019/01/23 Python
Python判断对象是否为文件对象(file object)的三种方法示例
2019/04/26 Python
基于python实现高速视频传输程序
2019/05/05 Python
Python制作词云图代码实例
2019/09/09 Python
初次部署django+gunicorn+nginx的方法步骤
2019/09/11 Python
用Python自动清理系统垃圾的实现
2021/01/18 Python
CSS3属性box-shadow使用详细教程
2012/01/21 HTML / CSS
CSS3实现红包抖动效果
2020/12/23 HTML / CSS
莫斯科的韩国化妆品店:Sifo
2019/12/04 全球购物
环保建议书500字
2014/05/14 职场文书
出纳岗位职责
2015/01/31 职场文书
销售辞职信范文
2015/03/02 职场文书
大学毕业生自我评价
2015/03/02 职场文书
2015年学校关工委工作总结
2015/04/03 职场文书
导游词之徐州-云龙山
2019/09/29 职场文书
javascript条件式访问属性和箭头函数介绍
2021/11/17 Javascript