2017-03-08 38 views
-1

當我嘗試從節點連接到運行在同一臺計算機(debian)上的MySql數據庫時,使用特定的用戶和密碼,我得到「訪問被拒絕」錯誤。 如果我嘗試使用相同的用戶並在數據庫和節點中設置無密碼,則一切正常。通過節點JS和Sequelize連接到MySql

從終端的WITH口令也連接工作正常。 我已經嘗試刪除用戶和數據庫並重新創建它們。但沒有任何工作。

這是我的節點代碼:

var http = require('http'); 
var fs = require('fs'); 
var Sequelize = require('sequelize') 
var sequelize = new Sequelize('mysql://user:[email protected]:3306/databasename'); 

http.createServer(function (req, res) { 
    console.dir(req.url); 
    sequelize.query("SELECT @@version;").spread(function(results, metadata) { 
     console.log(results); 
    }) 

    res.writeHead(200, {'Content-Type': 'text/html'}); 

    res.end('ok'); 
}).listen(8080); 

什麼我得到的控制檯上是這樣的:

Possibly unhandled Error: ER_ACCESS_DENIED_ERROR: Access denied for user 'user'@'localhost' (using password: YES) 
    at Handshake.Sequence._packetToError (/var/www/html/node/node_modules/mysql/lib/protocol/sequences/Sequence.js:30:14) 
    at Handshake.ErrorPacket (/var/www/html/node/node_modules/mysql/lib/protocol/sequences/Handshake.js:67:18) 
    at Protocol._parsePacket (/var/www/html/node/node_modules/mysql/lib/protocol/Protocol.js:197:24) 
    at Parser.write (/var/www/html/node/node_modules/mysql/lib/protocol/Parser.js:62:12) 
    at Protocol.write (/var/www/html/node/node_modules/mysql/lib/protocol/Protocol.js:37:16) 
    at Socket.ondata (_stream_readable.js:555:20) 
    at emitOne (events.js:101:20) 
    at Socket.emit (events.js:191:7) 
    at readableAddChunk (_stream_readable.js:176:18) 
    at Socket.Readable.push (_stream_readable.js:134:10) 
    -------------------- 
    at Protocol._enqueue (/var/www/html/node/node_modules/mysql/lib/protocol/Protocol.js:110:26) 
    at Protocol.handshake (/var/www/html/node/node_modules/mysql/lib/protocol/Protocol.js:42:41) 
    at Connection.connect (/var/www/html/node/node_modules/mysql/lib/Connection.js:81:18) 
    at ConnectorManager.connect (/var/www/html/node/node_modules/sequelize/lib/dialects/mysql/connector-manager.js:314:16) 
    at Object.create (/var/www/html/node/node_modules/sequelize/lib/dialects/mysql/connector-manager.js:138:19) 
    at createResource (/var/www/html/node/node_modules/generic-pool/lib/generic-pool.js:258:13) 
    at dispense (/var/www/html/node/node_modules/generic-pool/lib/generic-pool.js:250:9) 
    at Object.me.acquire (/var/www/html/node/node_modules/generic-pool/lib/generic-pool.js:316:5) 
    at CustomEventEmitter.fct (/var/www/html/node/node_modules/sequelize/lib/dialects/mysql/connector-manager.js:248:19) 
    at CustomEventEmitter.<anonymous> (/var/www/html/node/node_modules/sequelize/lib/emitters/custom-event-emitter.js:24:18) 

任何線索?

+0

密碼是否包含可能導致在URI中使用的問題的字符?百分號,&號,加號等 – robertklep

+0

不,沒有那樣的。我嘗試了與mysqljs相同,並得到相同的錯誤... – CPlusPlus

+0

因此'mysql -uuser -p databasename'的作品(輸入密碼後)? – robertklep

回答

0

好的,問題是,package.json不包含依賴項(mysql或sequelize)。我仍然不知道,爲什麼我可以連接到沒有密碼的數據庫。 但現在它工作。