Microsoft Azureと超高速WordPress仮想マシン「KUSANAGI」のMySQL接続

Azure仮想マシンKUSANAGI for Microsoft Azure)内のMySQL接続に苦戦していますが、

となっているので、MySQLに絞って調べていますがなかなか解決できません。 

KUSANAGI」の構成

そもそも「KUSANAGI」で仮想マシンを作成した場合、デフォルトでは

仮想マシン構成

※PHP7.0の利用は、WordPress4.4以上、および対応プラグインが必須です。

超高速WordPress仮想マシン「KUSANAGI」について – KUSANAGI

となるようです。

HipHop Virtual Machine(ヒップホップ・バーチャル・マシン、HHVM)

実行時コンパイラJIT)方式でPHP: Hypertext PreprocessorPHP)およびHackといったプログラミング言語を実行する、仮想機械型の処理系である。

HHVMで実行する場合、PHPやHackのコードは、JITコンパイルの過程でまず中間言語HipHopバイトコード (HHBC) に変換され、さらに動的にx64機械語へとコンパイル・最適化を行った上で実行される。

これに対し、公式のPHP実装であるZend Engineでは、PHPのコードを中間表現に変換した上で、中間表現をそのまま実行している。

HHVMはFacebook社が開発しており、Github上にあるソースコードPHP LicenseZend License英語版のもと公開されている。

HipHop Virtual Machine - Wikipedia

CentOS7を使っているということは、「KUSANAGI for Microsoft Azure」の仮想マシンイメージを使ってAzureで作成された仮想マシンは、Linux系の仮想マシンということが言えると思います。

ということで、MySQL を Linux VM にセットアップする | Microsoft DocsLinux を実行している Azure 仮想マシンMySQL をインストールして構成する方法が説明されていたので見てみることに。

MySQL起動はしている

MySQL を Linux VM にセットアップする | Microsoft Docs によると、

仮想マシンMySQL をインストールする

メモ

このチュートリアルを実行するには、Linux を実行する Microsoft Azure Virtual Machine が既に存在している必要があります。 続行する前に、Azure Linux VM チュートリアルを見て、VM 名を mysqlnode、ユーザー名を azureuser として、Linux VM を作成およびセットアップしてください。

この例では、MySQL ポートとしてポート 3306 を使用します。

となっていて、仮想マシンKUSANAGIで作成済みなので、Tera Termで仮想マシンに接続し、MySQLの状態を確認してみました。

f:id:ts0818:20170102135121j:plain

MySQL サーバーのサービスの状態を確認する

    service mysqld status

MySQL Server の既定のポートが実行されているかどうかを確認する

    netstat  –tunlp|grep 3306

結果としては、MySQLは問題なくインストールもされているし、MySQL ポートとしてポート 3306を使っているようです。

MySQLサーバーも存在し、起動もしているとなれば、あとはもう接続するだけですが、接続の仕方が分からんですたい、ということでもう少し調べてみました。 

MySQLはデフォルトでは外部ホストからの接続を許可しない

どうやら、MySQLは外部ホストからの接続を許可しないようになっているらしく、いままでローカル(Windows10のXAMPPのMySQLで作業することが多く)でほとんど済ませてきたので気づかなかったのですが、 今回は、Azureの仮想マシン内のMySQLに、ローカルからアクセスするわけです。

同一ホスト内アクセスの例

f:id:ts0818:20170102152352p:plain

外部ホストへのアクセスの例 

f:id:ts0818:20170102170909p:plain

  

MySQLに外部ホストから接続できるように設定する | WEBサービス創造記

ということで、Tera Termで仮想マシンにログインし、MySQLにアクセス。

アクセス先(MySQL)の情報は、デフォルトだとDocumentRootのwp-config.phpに記載されています。

※セキュリティのためにwp-config.phpの場所は変更したほうが良いようです。

はじめてのKUSANAGI | KUSANAGI MAGAZINE

f:id:ts0818:20170102174120j:plain

ユーザー名でアクセスできない場合は、ユーザー名rootで行ってみましょう。

    mysql -u root -p

MySQLのユーザー作成でハマったこと解決策メモ。 - 感謝のプログラミング 10000時間

f:id:ts0818:20170102173626j:plain

で、見てみると、hostが『localhost』はAzureで作成した仮想マシンKUSANAGI for Microsoft Azure)のこととして、『127.〇〇〇.〇〇.〇 』の部分は自分のパソコンIPアドレスなので、自分のパソコンから仮想マシンMySQLにアクセスできるということみたいですね。

そうじゃないんです、自分のパソコンのブラウザからphpmyadminでAzureの仮想マシンKUSANAGI for Microsoft Azure)MySQLにアクセスしたいんです!

KUSANGIにphpMyAdminは入っていない!?

そもそも、KUSANAGI for Microsoft AzureにはphpMyAdminが入っていないみたいです。(phpMyAdminMySQLにはセットでついてるもんだと思い込んでいたので、これは衝撃でした。考えてみればphpMyAdminGUIツールでMySQLを操作するためのものなので、コマンドでがりがりSQL操作ができる人には必要ないということですね、自分はphpMyAdmin欲しいですがセキュリティ的に難ありみたいです。) 

phpMyAdminですが、脆弱性を利用したハッキングが目立つため、特別理由がない限り最新バージョンをインストールするか、使わないのであればアンインストールするのが良いようです。

MySQLのバージョンとの対応は下記サイトへ

phpMyAdmin - Downloads

KUSANAGI(超高速WordPress仮想マシン)にphpMyAdminを導入する方法 | ryo.nagoya

で、MySQLのバージョンとphpのバージョンを確認。

    mysql --version
    php -v

f:id:ts0818:20170102182719j:plain

たぶん、最新のphpMyAdminが使えそうということで、まずは、DocumentRootまで移動します。

    cd /home/kusanagi/kusanagi_html/DocumentRoot

wgetコマンドでphpMyAdminのファイルをダウンロードします。 

f:id:ts0818:20170102184719j:plain

続いて、unzipコマンドで展開(解凍)します。 

    unzip phpMyAdmin-4.6.5.2-all-languages.zip

f:id:ts0818:20170102185544j:plain

実行すると、「phpMyAdmin-4.6.5.2-all-languages」というファイル名のディレクトリが展開されました。

f:id:ts0818:20170102185904j:plain

mvコマンドでフォルダ名を変更します。

    mv phpMyAdmin-4.6.5.2-all-languages phpMyAdmin

f:id:ts0818:20170102190350j:plain

フォルダ名が『phpMyAdmin』になりました。

f:id:ts0818:20170102190351j:plain

ブラウザから、『仮想マシンDNS名/phpMyAdmin/』 にアクセスするとお馴染みのログイン画面に。

f:id:ts0818:20170102190352j:plain

phpMyAdminにアクセス制限

ログインしようとしたところ、『502 Bad Gateway』というエラーが!下記サイトさんが原因について説明してくれてます。

502Bad Getewayの原因と意味について | ぷろめし|プログラミングよりも飯が好き

Gatewayまたは、プロキシに問題が発生している』ということらしく、KUSANAGIはNginxで動いているので(初期)、Nginxの設定ファイルを変えることで対応できるようです。

VimエディターでNginxの設定ファイルを編集します。

    vi /etc/nginx/conf.d/kusanagi_html_http.conf

「i」を押して、insartになったら編集できるモードになります。24行目ぐらいに

location /phpMyAdmin {
  allow 0.0.0.0/0;
  allow 自分のIP;
  deny all;
}

を追加します。『自分のIP』はパソコンのIPアドレスでOKです。

f:id:ts0818:20170102195940j:plain

ファイルの編集が済んだら「ESC」、「:wq」を入力して上書き保存します。

Nginxを再起動します。 KUSANAGIはCentOS7なので、

    systemctl restart nginx

コマンドを実行します。

f:id:ts0818:20170102200556j:plain

無事アクセスできました。

 

外部からアクセスできないか確認

aguse Gatewayから『仮想マシンDNS名/phpMyAdmin』にアクセスしてみて『403エラー』になればOKのようです。自分の場合は時間切れになったのですが。

なんとか、phpMyAdminでアクセスできるようになりました。

ただ、脆弱性の問題が・・・、これは職場の先輩に教えていただいたMySQL Workbenchに移行していくのが良いのかもしれないと思う今日この頃です。

phpMyAdmin 脆弱性 多数報告 : クロビス ブログ

JVNDB-2016-003434 - JVN iPedia - 脆弱性対策情報データベース

広告を非表示にする