Image

ナレッジベース → MariaDB データベースへのリモート アクセスのセットアップ

[仮想サーバー]
公開日: 17.10.2023

デフォルトでは、セキュリティのためにMariaDBデータベースサービスへのリモートアクセスは無効になっています。本ガイドでは、IPアドレスを使用したデータベースへのリモートアクセスの設定方法を説明します。

仮に、2つのサーバーがあるとします。1つにはシステム(ウェブサイトやCRM)があり、もう1つにはデータベースが保存され、ログイン名、パスワード、サーバーのIPアドレスを指定してデータを取得する構成とします。

1. 設定準備

1.1 設定ファイルを確認

接続オプションがコメントアウトされていないことを確認し、以下のように設定します。

nano /etc/mysql/mariadb.conf.d/50-server.cnf

...
bind-address = 0.0.0.0
...

設定を適用するためにサービスを再起動します。

systemctl restart mariadb

1.2 ポートの確認

netstat -ant | grep 3306

tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN

2. 設定

mysql -u aroot -p

2.1 データベースとユーザーの作成

CREATE DATABASE base1;
CREATE USER 'user1'@'localhost' IDENTIFIED BY 'password';

2.2 接続を許可するサーバーのIPアドレスを指定

GRANT ALL ON base1.* TO 'user1'@'xx.ip.xx.ip' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;

以下の資格情報を使用して接続が可能です:

  • base1 - データベース名
  • user1 - ユーザー名
  • password - パスワード
  • xx.ip.xx.ip - 接続元のサーバーのIPアドレス

2.3 その他の例

2.3.1 指定されたIPからすべてのデータベースへのアクセスを許可

GRANT ALL ON *.* TO 'user1'@'xx.ip.xx.ip' IDENTIFIED BY 'password' WITH GRANT OPTION;

2.3.2 任意のIPアドレスからbase1データベースへの接続を許可

GRANT ALL ON base1.* TO 'user1'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;

2.3.3 特定のサブネットからbase1データベースへの接続を許可

GRANT ALL ON base1.* TO 'user1'@'xx.ip.xx.%' IDENTIFIED BY 'password' WITH GRANT OPTION;

3. iptablesファイアウォールの設定

3.1 特定のIPアドレスのみ許可

iptables -A INPUT -p tcp -s xx.ip.xx.ip --dport 3306 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 3306 -m conntrack --ctstate ESTABLISHED -j ACCEPT

3.2 全てのIPアドレスを許可

iptables -A INPUT -p tcp -m tcp --dport 3306 -m conntrack --ctstate ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 3306 -m conntrack --ctstate ESTABLISHED -j ACCEPT

3.3 特定のサブネットを許可

iptables -A INPUT -p tcp -s xx.ip.xx.0/24 --dport 3306 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 3306 -m conntrack --ctstate ESTABLISHED -j ACCEPT

4. サーバー1からの接続確認

4.1 mariadbクライアントをインストール

apt install mariadb-client

4.2 設定したサーバーへの接続

mysql -u wpuser -h ip.xx.ip.xx -p

Enter password:

MariaDB [(none)]> show databases;

+--------------------+
| Database           |
+--------------------+
| information_schema |
| base1              |
+--------------------+
2 rows in set (0.10 sec)

これで完了です。





No Comments Yet