白猫のメモ帳

C#とかJavaとかJavaScriptとかHTMLとか機械学習とか。

さくらのVPSで遊ぶ -MySQL設定編-

(このシリーズは自分用の備忘録なので、割と適当です。)

設定編はアプリごとに分けようかと思う。
長い記事を書くと途中でくじけてしまうから。

さてさて。
今回はMySQLに必要な設定をしていく。

今回はターミナル上なのか、MySQLコンソール上なのかがわかりづらいので、
先頭に#とmysql>をつけておく。


①管理者ユーザへのパスワード設定

# mysql -u root

管理者ユーザには最初はパスワードがかかっていないので、パスなしでログインする。

mysql> update mysql.user set password=password('パスワード') where user = 'root';
mysql> flush privileges;
mysql> exit;

パスワードを設定して変更。

# mysql -u root -p
Enter password: 

パスワードを入力してログインできるか確認する。


②データベースの作成

アプリケーションで使うデータベースを作る。
OracleでいうところのスキーマMySQLではデータベースという。
ややこしい…。

mysql> create database sample;

f:id:Shiro-Neko:20160607135956j:plain

一応確認しておく。

mysql> show databases;

f:id:Shiro-Neko:20160607140555j:plain


②ユーザの作成

管理者ユーザをそのまま使うのは良くないので、新しいユーザを作成する。

mysql> create user test@localhost identified by 'password'

今回はローカルからでしかアクセスする必要がないので、localhostとしている。
後述するが、さくらVPSの場合は外からMySQLに接続する際にはSSHトンネルを使うので、localhostだけでいいと思う。

一応確認しておく。

mysql> select User,Host from mysql.user;

f:id:Shiro-Neko:20160607141325j:plain


③新しいユーザに新しいデータベースへの権限を付加

②で作ったユーザでログインして、show databasesコマンドを叩くと、
さっき作ったデータベースが見えない。
これはユーザに何も権限がないから。

f:id:Shiro-Neko:20160607141734j:plain

これでは悲しいので、いったんrootユーザでログインしなおして権限の設定をする。

mysql> grant all privileges on sample.* to test@localhost;

f:id:Shiro-Neko:20160607142407j:plain

これでsampleデータベースにアクセスできるようになる。
ログイン時に末尾にデータベース名をつけると、select databaseする必要がない。

# mysql -u test -p sample


④A5M2と連携する

テーブルの作成などはSQLの問題なので省略。
MySQLコンソールでクエリを叩くのはあまり好きではないので、
オブジェクトブラウザの「A5:SQL Mk-2」で接続できるようにしておく。

「データベース」―「データベースの追加と削除」-「追加」で「MySQL(直接接続)」を選択し、
「SSH2トンネル」タブで各情報を入力する。(接続方法はパスワード認証)

f:id:Shiro-Neko:20160607150445j:plain

「基本」タブに戻って、各情報を入力して(ホスト名:localhost、ポート番号:3306)
「テスト接続」ボタンをクリックすると「接続に成功しました」を表示される。

f:id:Shiro-Neko:20160607151823j:plain

これで「OK」ボタンをクリックすれば設定は完了。


おまけ:TeraTermSSH転送する

JDBC等で直接サーバのデータベースに接続したい場合、VPSの3306ポートにアクセスしてもつながらない。
その場合にはTeraTermなどのツールで、SSH通信を用いてポートをつないであげるとよい。

TeraTermVPSにログインした状態で、「設定」―「SSH転送」をクリック。

f:id:Shiro-Neko:20160607151131j:plain

「追加」ボタンをクリックして、ローカルのポートに3306、ポートに3306を指定する。
これでTeraTermを閉じるまでの間、localhostの3306ポートがVPSの3306ポートにつながった状態になる。

f:id:Shiro-Neko:20160607151924j:plain

今回はここまで。