設定後は、以下のコマンドで接続できるようになります。
mysql -h hostname -u remoteuser -p
※「remoteuser」というユーザ名にしています。
「hostname」はIP指定でも可能です。
MySQL:外部から接続できるようにする設定
まず、外部接続用のユーザを作成。(rootで接続できるようにしてもいいと思うけど、セキュリティを考慮して念のため。)
create user remoteuser identified by 'password';
※パスワードは'(シングルクォーテーション)で囲む必要があります。
ユーザに、外部から接続できる権限を付与する。
grant all privileges on *.* to remoteuser@"%" identified by 'password';
※privileges on databasename.tablename とデータベース・テーブル単位でのアクセス制限可。 また、@以降は「172.16.24.%」と、IPを指定する事ができる。
設定内容を反映させる。
flush privileges;
追加・編集したユーザの内容は、以下のコマンドで確認。
select user, host, password from mysql.user;
これで冒頭のコマンドで接続できるようになっています。
繋がらない場合、接続できるホストが制限されていないかを確認する。
my.cnf(Windowsの場合、my.ini)にて、以下の記述があるか確認。
bind-address = 127.0.0.1
先頭に「#」を付けてコメントアウトにするか、接続する端末のIPを追記する。
my.cnf は、環境により /etc にあったり /etc/mysql/ にあったりする事もあるので、「sudo find / -name "my.cnf"」などで検索を。
それでも繋がらない場合、ポートが待ち受けとなっているか確認する。(デフォルトは3306)確認コマンドは以下。
netstat -antu
LISTENでない場合、ファイアウォールの設定を見直す。
それでも繋がらない場合、クラウドのセキュリティ設定を確認する。
AWSならセキュリティグループのインバウンド設定にて、タイプ「MYSQL/Aurora」をルールに追加。
ルールの変更はAMI起動中でもOK。
権限を削除する場合は以下を実行。
revoke all privileges on . from remoteuser@"%" identified by 'password';
flush privileges;