この記事では、Ubuntu16.04VPSでMySQLのリモート接続と安全な接続を構成する方法を説明します。暗号化されていない接続を使用してリモートMariaDB/MySQLサーバーに接続している場合、ネットワークにアクセスできるすべてのユーザーが、クライアントとサーバー間で送受信されるデータを監視および分析できます。このガイドは他のLinuxVPSシステムでも機能するはずですが、Ubuntu16.04VPS用にテストおよび作成されています。
1。 SSH経由でVPSにログイン
ssh my_sudo_user@my_server
このチュートリアルの手順は、デフォルト構成でMySQL5.7をインストールしていることを前提としています。
SSL接続を有効にする:
2。新しいローカル認証局を作成する
サーバー証明書とクライアント証明書の両方に署名するために使用する自己署名ルート証明書として、ローカル認証局を使用します。新しいローカル認証局ファイルを作成するには、次のコマンドを実行します。
sudo openssl genrsa -out /etc/mysql/ca-key.pem 2048 sudo chmod 600 /etc/mysql/ca-key.pem sudo openssl req -new -key /etc/mysql/ca-key.pem -out /etc/mysql/ca-csr.pem -subj /CN=mysql-CA/ sudo openssl x509 -req -in /etc/mysql/ca-csr.pem -out /etc/mysql/cacert.pem -signkey /etc/mysql/ca-key.pem -days 3650 sudo echo 01 > /etc/mysql/cacert.srl
3。サーバー証明書とキーを生成する
サーバー証明書とキーを生成するには、次のコマンドを発行します。
sudo openssl genrsa -out /etc/mysql/server-key.pem 2048 sudo chmod 600 /etc/mysql/server-key.pem sudo openssl req -new -key /etc/mysql/server-key.pem -out /etc/mysql/server-csr.pem -subj /CN=mysql/ sudo openssl x509 -req -in /etc/mysql/server-csr.pem -out /etc/mysql/server-cert.pem -CA /etc/mysql/cacert.pem -CAkey /etc/mysql/ca-key.pem -days 365
4。クライアントの証明書とキーを生成する
次に、クライアント証明書を生成する必要があります。次のコマンドを実行して、クライアント証明書とキーを生成します。
sudo openssl genrsa -out /etc/mysql/client-key.pem 2048 sudo chmod 600 /etc/mysql/client-key.pem sudo openssl req -new -key /etc/mysql/client-key.pem -out /etc/mysql/client-csr.pem -subj /CN=mysql/ sudo openssl x509 -req -in /etc/mysql/client-csr.pem -out /etc/mysql/client-cert.pem -CA /etc/mysql/cacert.pem -CAkey /etc/mysql/ca-key.pem -days 365
CA署名付きSSL証明書が必要な場合は、ここで信頼できるSSL証明書を購入できます。
5。 MySQLサーバーのSSL接続を有効にする
テキストエディタでMySQL構成ファイルを開きます:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
次の行のコメントを解除します:
ssl-ca=/etc/mysql/cacert.pem ssl-cert=/etc/mysql/server-cert.pem ssl-key=/etc/mysql/server-key.pem
ファイルを保存してMySQLサービスを再起動します:
sudo systemctl restart mysql
SSLが有効になっていることを確認するには、MySQLサーバーにログインします
mysql -uroot -p
次のコマンドを実行します:
mysql> show variables LIKE '%ssl%';
出力は次のようになります。
+---------------+----------------------------+ | Variable_name | Value | +---------------+----------------------------+ | have_openssl | YES | | have_ssl | YES | | ssl_ca | /etc/mysql/cacert.pem | | ssl_capath | | | ssl_cert | /etc/mysql/server-cert.pem | | ssl_cipher | | | ssl_crl | | | ssl_crlpath | | | ssl_key | /etc/mysql/server-key.pem | +---------------+----------------------------+ 9 rows in set (0.15 sec)
6。 SSL経由のリモート接続を有効にする
デフォルトでは、MySQLはローカルホスト上の接続のみをリッスンします。リモート接続を有効にするには、サーバーでMySQLを再構成して、すべてのインターフェイスでリッスンする必要があります。これを行うには、MySQL構成ファイルを開きます。
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
と変更
bind-address = 127.0.0.1
に
bind-address = 0.0.0.0
変更を有効にするには、次のコマンドを使用してMySQLサーバーを再起動します。
sudo systemctl restart mysql
MySQLサーバーがすべてのインターフェースでリッスンしていることを確認します:
sudo netstat -anp | grep 3306
出力は次のようになります。
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 938/mysqld
MySQLクライアントがMySQLサーバーに接続できるようにするには、データベースユーザーにリモートサーバー上のデータベースへのアクセスを許可する必要があります。
たとえば、dbuser
へのアクセスを許可する場合 database_name
へのユーザー データベースを使用してSSLを強制するには、rootとしてMySQLシェルにログインし、次のコマンドを実行します。
GRANT ALL ON database_name.* TO [email protected] IDENTIFIED BY 'dbuserpassword' REQUIRE SSL;
ここで、192.168.1.10
MySQLクライアントマシンのIPアドレスです。
次に、以前に生成されたSSL証明書を使用するようにMySQLクライアントを構成する必要があります。次のファイルをMySQLサーバーからMySQLクライアントマシンにコピーします。
/etc/mysql/cacert.pem /etc/mysql/client-cert.pem /etc/mysql/client-key.pem
7。 MySQLクライアントの構成
MySQLクライアント構成を開き、次の行を追加します。
[client] ssl-ca=/etc/mysql/cacert.pem ssl-cert=/etc/mysql/client-cert.pem ssl-key=/etc/mysql/client-key.pem
8。接続をテストする
これで、クライアントマシンからMySQLデータベースサーバーへの接続をテストできます。
mysql -udbuser -pdbuserpassword -h 192.168.1.5
ここで、192.168.1.5
MySQLデータベースサーバーのIPアドレスです。
それでおしまい。これで、Ubuntu16.04VPSでMySQLのリモート接続と安全な接続が正常に構成されました。 MySQLの安全な接続の詳細については、MySQLの公式ドキュメントを参照してください。
もちろん、Ubuntu VPSホスティングサービスのいずれかを使用している場合は、Ubuntu 16.04でMySQLのリモート接続と安全な接続を構成する必要はありません。その場合は、専門のLinux管理者にMySQLのリモート接続と安全な接続を構成するよう依頼するだけです。あなたのためのUbuntu16.04。 24時間年中無休でご利用いただけます。リクエストはすぐに処理されます。
PS 。 Ubuntu 16.04でMySQLのリモート接続と安全な接続を構成する方法に関するこの投稿が気に入った場合は、左側のボタンを使用してソーシャルネットワーク上の友達と共有するか、下に返信を残してください。ありがとう。