#追記
var server = app.listen(8888, function(){ console.log("Node.js is listening to PORT:" + server.address().port); });
として
const connection = mysql.createConnection( { host: '127.0.0.1', user: 'root', password: 'pass', database: "express_test", port: 8888, }); connection.connect(function(err) { if (err) throw err; console.log("Connected!"); });
とすると、エラーは出なくなりましたが、全く接続までされません。console.log("Connected!");
が出ません。調べて見ると、mysqlのポートは3306で動いていました。このポートは閉じても良いのかどうなのか。まだよくわかりませんm
質問
express+node.jsでウェブアプリを開発しています。mysqlを接続するところで問題が発生しました。node appでexpressアプリを起動する際、下記のようにウェブサーバーのポートを3306で起動すると
var server = app.listen(3306, function(){ console.log("Node.js is listening to PORT:" + server.address().port); });
ローカルでは問題なかったのですが、本番環境(aws lightsail)ではポート3306はmysqlでしようしているようです。
$ sudo lsof -i :3306 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME mysqld.bi 3287 mysql 12u IPv4 17789 0t0 TCP localhost:mysql (LISTEN)
なので、node appでexpressアプリを起動する際のポート番号を3308にしました。
var server = app.listen(3308, function(){ console.log("Node.js is listening to PORT:" + server.address().port); });
そうすると、なぜかexpressからmysqlに接続する際、下記のようなエラーが出ます。
undefined:50 if (err) throw err; ^ Error: ER_ACCESS_DENIED_ERROR: Access denied for user 'root'@'127.0.0.1' (using password: YES)
expressからmysqlに接続するところは下記のように設定しています
const connection = mysql.createConnection( { host: 'localhost', user: 'root', port : 3306, password: 'pass', database: 'express_test' });
どうすれば、expressからmysqlに接続できますか?