見出し画像

【GCP】VM借りてそこにMySQLサーバーを立ててみる

という訳で挑戦していきます。

1・GCPプロジェクトを立てます

立てます。今回は既に立ててあるプロジェクトを使います。

2・ComputeEngineAPIをオンにして、VMインスタンスを作成

します。
インスタンスの作成ボタンはGUIを見ればどーんと書いてあるので簡単です。

インスタンスの設定がちょっと分かりづらいですが、とりあえず下記の設定で立ててみます。

名前:(任意の名前)
ラベル:なし
リージョン:us-central1 / ゾーン:us-central1-a
マシンの構成:シリーズE2・マシンタイプe2-small
ブートディスク:新しいバランス永続ディスク10GB/OSをUbuntsに変更
IDとAPIへのアクセス:(デフォルト設定のまま)
(その他の設定はひとまずデフォルトのままで)

OSをUbuntsにしたのは社内で使ってる人が居て聞きやすかったからなのでお好みで。ただ、WindowsServerにすると一気にお値段が倍以上になる。

3・GUIからインスタンスに接続する

とりあえずVMインスタンス管理画面の「接続」欄のSSHって書いてあるところをクリック。ブラウザからSSH接続が出来る。

以下のコマンドはOSがUbuntsの場合

$ cat /etc/os-release

して、OSのバージョンを確認する。

4・mySQLをインストールする

$ sudo apt install mysql-server

でmySQLをインストールする。途中続行して良いか聞かれるのでy。一分くらいで終わる。

なんかエラーになったら、

$ sudo apt-get update

してもう一回SQLのインストールを走らせる。

終わったら

$ systemctl status mysql
$ mysql --version

で起動していることとバージョンを確認

$ sudo mysql_secure_installation

でルートのパスワードを設定する。パスワードは忘れないように。
コマンド入れると「パスワードが強固かどうか確認するプラグイン入れる?」って聞かれるので、お好みで。
その後、任意のパスワードを設定する。

このとき、「SET PASSWARD has no significance for user 'root'@'localhost' as the authentication method used dosen't store authentication data in the MySQL server.」って怒られて二進も三進も行かなくなったら、一旦SSH接続を切って再接続し、

$ sudo mysql

して、

ALTER USER `root`@`localhost` IDENTIFIED WITH mysql_natice_password by 'hoge'

でパスワードを設定してからもう一回

$ sudo mysql_secure_installation

をやりなおす。

アノニマスユーザーを消去するかどうか聞かれる。プロジェクトのセキュリティ具合に応じてどっちでも。(本番運用始める前にアノニマスユーザーは消してねって書いてある)

アノニマスユーザー消すよって言うと、次はrootユーザーがlocalhost以外からログインするの禁止しとく?って聞かれるのでこちらも状況に応じて。

自動でテストDB作られるけど消す??って聞かれる。適当に答える。

最後に、権限テーブル更新して変更を今すぐ反映する?(Reloading the privilage tables will ensure that all changes made so far will take effect immedinately.)って聞かれるので、y。

これで設定完了

5・mySQLサーバーにrootユーザーとしてログインしてみる

$ mysql -u root -p

成功すればOK。

6・外部からmySQLに接続出来るようにする

mysqlのアクセス設定を編集する

$ sudo vi /etc/mysql/mysql.conf.d/mysql.cnf

してコンフィグファイルをviで開く。viの操作は、ふだんLinuxを使わない人間にとってはおそろしく癖があるので、コマンドリストを検索してください。
コンフィグファイルの[mysqld]の項目内にある、 bind-address = 127.0.0.1 の行をコメントアウトします。

接続テスト用のDBと、アクセス用のユーザーを作る

create database db-test default character set utf8mb4;
create user 'testuser'@'%' identified by 'user-no-password';
grant all privileges on db-test.* to 'testuser'@'%';
flush privileges;

DB作ってー、ユーザー作ってー、権限付与してー、再読込。

一度SQLからquitして、ターミナルで

$ mysql -u testuser -p db-test

で接続してみて接続出来ればOK。

VMのポートを開放する

手順1:VMインスタンスにネットワークタグを付与
VMインスタンスの一覧画面でインスタンス名をクリック>画面上部の「編集」をクリックして、「ネットワークタグ」セクションを探す。
任意のタグ名を設定する。後でファイアウォールルールをこのVMだけに適用するための目印にするだけなので、わかりやすい名前ならなんでも大丈夫。

手順2:ファイアウォールルールを作成
GCPコンソール>VPCネットワーク>ファイアウォール>ファイアウォールルールの作成を選択。
わかりやすい任意の名前を設定して、トラフィックの方向は上り、一致したときに許可にして、ターゲットを「指定されたターゲットタグ」にしておき、先ほど設定したタグを入力する。
送信元IPv4範囲に、アクセス元となるIPアドレスを設定。0.0.0.0/0を設定すれば全解放。
で、プロトコルとポートの欄の「tcp」欄に「3306」を設定。

7・MySQLWorkBenchから接続してみる

MySQLWorkBenchを立ち上げて、新しい接続を作成。
VMインスタンス一覧に書いてある外部IPを設定し、先ほど作成したtestuserのユーザー名とパスワードを入力してテスト接続してみる。
これで繋がる。やったねーーー!

この記事が気に入ったらサポートをしてみませんか?