現在conoHa VPSにMySQLの環境を作り外部からアクセスしようとしていました。しかし、ここで問題が...
リモート接続するためのセットアップってどうやるん?
しかも何や。記事まねても全然うまくいかないやん...orz
ってことなのですが、バージョン8にメジャーアップデートにあたり、コマンドの変更があったようなので共有します。
で、今回はroot権限をどこからでも接続する権限を与えます。
sshにてリモートサーバにアクセス
まずははじめに、コマンドラインでsshを使ってリモートサーバに入ります。今回はルートとして入ります。
$~ ssh root@xxx.xxx.x.xxx #@以降はアドレス
Enter password: **********
~~ 以下略 ~~
[root@xxx-xxx-x-xxx]#
このようにログイン先の情報とともに表示されます。
【本題】権限を与える
まずはMySQLを起動しまして、以下のコマンドを打ちます。
mysql> CREATE USER 'root'@'%' IDENTIFIED BY 'your-password';
Query OK, 0 rows affected (0.01 sec)
mysql> GRANT all PRIVILEGES
-> ON *.* TO 'root'@'%'
-> WITH GRANT OPTION;
まずは1つ目のコマンドでユーザーを作ります。(コレが8.0.x以降の仕様なのでドツボにハマるやつ!!)
そして2つ目のコマンドにて、権限を付与してきます。ただ、今回は見易さのため複数行にしましたが、1行でも問題はないです。(大文字小文字もあまり気にしなくて良かったりもする)
あと、'%'ってんはアクセスするIPアドレスを書くところであって、今回はどこからでもアクセスできる(どのPCからでも)を想定するので**'%'**を指定して全てを許可します。
あと、***.***の部分はデータベースとテーブルの設定ですが、こちらも全てにアクセスができると想定してこちらにしています。任意のデータベースを許可したければ '任意の名前'.*とでもすれば良いでしょう。
一応コレで下準備は完了ってところですかね。
基本的には問題ないのですが、僕が使ってみたconoHa VPSとかだと、ファイヤウォールの設定が必要なので今回は省略。
ドツボにハマるのはきっとここなので注意。
実際にマイナーバージョンでのコマンド打ってみる
実際にマイナーバージョンでのコマンドを実行してみますか。(愚行)
あと小文字でやってみた。
mysql> grant all privileges on
-> *.* to root@"%" identified by 'your-password'
-> with grant option;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'identified by 'your-password'
with grant option' at line 2
まあこうなってわからないよね。SQL構文チェックしようねって言われるわけだけど、記事も少なかったし、ここはドツボにハマりかけるのかなと思います。
まとめ
ルートとして外部からどこでもどのデータベースのアクセスを許可するには以下のコマンドを打ちましょう。
mysql> CREATE USER 'root'@'%' IDENTIFIED BY 'your-password';
Query OK, 0 rows affected (0.01 sec)
mysql> GRANT all PRIVILEGES
-> ON *.* TO 'root'@'%'
-> WITH GRANT OPTION;
他にも外部サーバの設定のよって動かないことがあるので、それはまた紹介しますが。 今回はバージョン8.0.xでの変更点に触れました。
快適なデータベースライフを!!