#はじめに
このページは、谷ゼミ Advent Calender 2018 の18日目の投稿です。
vagrantとVirtualBoxを使って仮想環境を構築しており、
そこに作ったMySQLのデータベースに接続するためにNode.jsを使って接続を試みたのでその備忘録を記録しておきます。
ローカル端末がMacなのでそこから仮想環境のデータベースに接続する。
#目次
1 Node.jsとは?
2 構築してある仮想環境について
3 Node.jsを使う準備
4 MySQLに接続
5 終わりに
#Node.jsとは?
Node.jsはサーバサイドで動くJavaScriptである。
ここでJavaScriptは知っているけどNode.jsは知らない人は疑問に思うかもしれない。JavaScriptはブラウザ上で動くために開発されたプログラミング言語なので、サーバサイドで動かすイメージはないかもしれない。
実は、JavaScriptはPHPやJavaなどと同じようにサーバサイドでも動かせる。
サーバサイドJavaScriptと呼ばれるが、それがNode.jsである。
注意しておくが、サーバサイドでも動かせるがPHPなどとはまったく違うので一緒のものというわけではない。
#構築してある仮想環境について
既にvagrantとVirtualBoxで仮想環境を構築しているので今回はそれを使っていく。
仮想環境の構築の仕方、詳しい設定方法などは機会があればまた記事にしたいと思います。
######構築した環境
VirtualBox : 5.2.18
OS : Ubuntu 18.04 LTS
Webserver : Apache2.4.29
PHP : 7.2.10
MySQL : 5.7.24
#Node.jsを使う準備
######nvmとは
nvmとはnode version managerの略で、そのままnodeのバージョン管理(切り替え)を簡単に行うことができる。
gitをインストールしてなかったらインストールする
$ brew install git
nvmをインストール
$ git clone https://github.com/creationix/nvm.git ~/.nvm
パスを通す
$ source ~/.nvm/nvm.sh
nvmのバージョンを確認
$ nvm --version
0.33.11
インストールできるバージョンを確認
$ nvm ls-remote
v0.1.14
v0.1.15
v0.1.16
...
v11.1.0
v11.2.0
v11.3.0
v11.4.0
インストールする
$nvm install v11.0.0
バージョン確認
$ node -v
v11.0.0
.bash_profileにコードを追加
if [[-s ~./nvm/nvm.sh]];
then source ~/.nvm/nvm.sh
fi
#MySQLに接続
node-mysqlをインストール
$ npm install mysql
sample.jsを作成
IPアドレス,ユーザー名,パスワード,ポート番号,データベース名,テーブル名は自分が利用したいものを書いてください。
'use strict';
let mysql = require('mysql');
let connection = mysql.createConnection({
host : 'IPアドレス',
user : 'ユーザー名',
password : 'パスワード',
port : ポート番号,
database: 'データベース名'
});
connection.connect();
connection.query('SELECT * from テーブル名 LIMIT 2;', (err, rows, fields) => {
if (err) throw err;
console.log(rows);
});
connection.end();
対象のSQLサーバーでユーザーにアクセス権限付与しておく必要などもあります。
今回はその設定などは仮想環境構築と同じく省略します。機会があれば・・・。
ということでsample.jsを実際に実行すると
$ node sample.js
[ RowDataPacket { id: 1, name: 'テストグラノーラ1', price: 200 },
RowDataPacket { id: 2, name: 'テストグラノーラ2', price: 300 } ]
となり、Macのターミナルから実行することで仮想環境のデータベースに接続し、表示させることができました。
#終わりに
今回はNode.jsでmysql接続を行いました。
Node.jsについての勉強し始めたばかりなので不備などあったら申し訳ありません。これをもとにさらに勉強していきたいと思います。
はじめての投稿でもあるので、お手柔らかにお願いします。