前回記事までで出来上がったAWS上のMySQLに、Nodejsから接続確認をしてみたいと思います。
前々回記事までで、AWS上のCentOSに、Nodejs実行環境が構築できている状態です。
コード準備
任意のプロジェクトに以下を配置します。
const connection以下は、MySQLに設定したユーザとパスワード、データベース名をいれます。
app.js
const express = require('express');
const mysql = require('mysql');
const app = express();
app.use(express.static('public'));
app.use(express.urlencoded({extended: false}));
const connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'Passw0rd!',
database: 'list_app'
});
connection.connect((err) => {
if (err) {
console.log('error connecting: ' + err.stack);
return;
}
console.log('success');
});
app.get('/', (req, res) => {
connection.query(
'SELECT * FROM items',
(error, results) => {
console.log(results);
res.render('hello.ejs');
}
);
});
app.listen(3000);
hellow.ejs
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Hello World</title>
<script src="/send_url.js"></script>
</head>
<body>
<h1>Hello World</h1>
</body>
</html>
プロジェクトを起動する
MySQLクライアントのアップデートをしてくださいとのエラーになりました・・・
# node app.js
error connecting: Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requestd by server; consider upgrading MySQL client
at Handshake.Sequence._packetToError (/data/proj/node_modules/mysql/lib/protocol/sequences/Sequence.js:4:14)
調べてみるとこんな記事が。
とりあえず解決させたかったので、認証プラグインの変更をしてみました。
mysql> SELECT user, host, plugin FROM mysql.user;
+------------------+-----------+-----------------------+
| user | host | plugin |
+------------------+-----------+-----------------------+
| prog01 | % | caching_sha2_password |
| mysql.infoschema | localhost | caching_sha2_password |
| mysql.session | localhost | caching_sha2_password |
| mysql.sys | localhost | caching_sha2_password |
| root | localhost | caching_sha2_password |
+------------------+-----------+-----------------------+
5 rows in set (0.00 sec)
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Passw0rd!';
mysql> SELECT user, host, plugin FROM mysql.user;
+------------------+-----------+-----------------------+
| user | host | plugin |
+------------------+-----------+-----------------------+
| prog01 | % | caching_sha2_password |
| mysql.infoschema | localhost | caching_sha2_password |
| mysql.session | localhost | caching_sha2_password |
| mysql.sys | localhost | caching_sha2_password |
| root | localhost | mysql_native_password |
+------------------+-----------+-----------------------+
5 rows in set (0.00 sec)
データベース接続に成功しました。
[root@ip-172-31-1-181 proj]# node app.js
success