Node使用Sequlize串連Mysql報錯:Access denied for user ‘xxx’@‘localhost’,sequlizemysql

來源:互聯網
上載者:User

Node使用Sequlize串連Mysql報錯:Access denied for user ‘xxx’@‘localhost’,sequlizemysql

前言

最近在工作中遇到問題,問題如下:

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環境變數只在當前終端下才有效,如果要另開一個終端來同步資料庫,那麼需要在另開的終端裡再設定一下環境變數。不然載入的資料庫參數是不一致的,也就是說串連資料庫的使用者名稱密碼是不對的。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對幫客之家的支援。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.