CentOS7にて外部サーバーからMySQLの接続を許可する

mysql_logo

この記事には広告を含む場合があります。

記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。

[さくらのVPS]外部サーバーからMySQLの接続を許可する

「さくらのVPS」のCentOS7にて、外部サーバーからのMySQL接続を許可する手順をご紹介します。
サーバーにインストールしたMySQLは、基本的には初期設定では外部サーバーからの接続を許可していません。そのため外部サーバーからMySQLに直接接続したいときは設定を調整する必要があります。

 

MySQLの設定

まず始めにMySQLユーザーの設定を追加します。
通常はMySQLユーザーを作成するとき、「hogehoge@localhost」のように「(ユーザー名)@localhost」で作成します。
localhostは接続を許可するホスト名の意味なので、外部サーバーからMySQLにアクセスときは「(ユーザー名)@(外部サーバーのIPアドレス)」のユーザーを作成します。
※「外部サーバーのIPアドレス」ではなく「外部サーバーのホスト名」でも問題ないですが、今回は「IPアドレス」に対する内容を記述します

使用する主要なMySQLコマンド

ユーザー一覧を確認するMySQLコマンド

select Host, User from mysql.user;

ユーザーの作成するMySQLコマンド

CREATE USER (ユーザー名)@(ホスト名) IDENTIFIED BY ‘(パスワード)’;

データベースとユーザーを紐づけるMySQLコマンド

GRANT ALL PRIVILEGES ON (データベース名).* TO ‘(ユーザー名)’@'(IPアドレスまたはホスト名)’

※GRANT以外の命令を全て許可します

 

(実行例)MySQLのユーザー設定

データベース「hogehoge」に外部IP「192.0.2.100」(例示用IPアドレス)から「hogehoge」ユーザーで接続するときの実行例を記載します。

 

ポートの開放

MySQLの設定が終わったら、次にサーバーのポート開放を行います。CentOS7のポート制御はfirewall-cmdコマンドを使用します。ポートの設定変更をしたときは、必ず最後に「firewall-cmd reload」を行って設定の反映を行ってください。

使用する主要なポートの制御コマンド

ポート設定の確認コマンド

firewall-cmd –list-all

ポートの開放コマンド

firewall-cmd –permanent –zone=public –add-rich-rule=”rule family=”ipv4″ source address=”(IPアドレス)” port protocol=”tcp” port=”(ポート番号)” accept”

ポート設定のリロード

firewall-cmd –reload

 

(実行例)ポート開放のサンプル

上記のサンプルと同じく、外部IP「192.0.2.100」(例示用IPアドレス)から3306ポート(MySQL)のポートに接続するときの実行例を記載します。

 

さいごに

外部サーバーとの連携はJSON形式のAPIで行うのが通例です。ただ連携したい両方のサーバーが自分の管理下にあるとき、APIを作成する労力より直接データベースを操作した方が工数が短縮します。そのため自分の置かれた状況に合わせて利用方法を調整するのが良いと思います。