注 :この記事は、サーバーにMySQL®をインストールして構成していることを前提としています。
MySQLのSSLを有効にする
MySQLデータベースにSSL証明書をインストールする前に、デフォルトの証明書ファイルをバックアップして削除します。このステップでは、独自のディレクトリ名を選択できます。この例では、 mysql-backup-certsを使用しています ディレクトリ。次の手順を実行するには、rootユーザーに切り替えます。
-
新しいバックアップディレクトリを作成します:
mkdir -p ~/mysql-backup-certs/
-
/ var / lib / mysqlに移動します ディレクトリを作成し、すべてのデフォルト証明書を新しく作成したバックアップディレクトリに移動します:
cd /var/lib/mysql mv ca.pem ca-key.pem ~/mysql-backup-certs/ mv server-key.pem server-cert.pem ~/mysql-backup-certs/ mv client-key.pem client-cert.pem ~/mysql-backup-certs/ mv private_key.pem public_key.pem ~/mysql-backup-certs/
-
次のいずれかのコマンドを実行して、MySQLを再起動します。
service mysqld restart
または
systemctl restart mysqld
-
次のいずれかのコマンドを使用して、
mysqld
を確認します。 ステータス:service mysqld status
または
systemctl status mysqld
-
MySQLシェル内からSSLステータスを確認します。これを行うには、rootユーザーとしてMySQLにログインします。
mysql -u root -p (Enter MySQL root password)
-
次のクエリを実行して、MySQLのSSLステータスを確認します。
SHOW GLOBAL VARIABLES LIKE '%ssl%'; STATUS;
注 :大文字を使用する必要はありません。この例では、それらを使用して、コマンド構文とクエリ対象の構文を区別しています。
上記のコマンドで、SSLステータスを無効として表示する必要があります 、およびrootユーザーはSSLなしで接続されています。
-
my.cnf を編集して、独自の証明書でSSL接続を有効にするには ファイルの場合は、次のいずれかのコマンドを実行します。
vim /etc/my.cnf
または
nano /etc/my.cnf
-
[mysqld]を見つけます セクションを作成し、次の構成設定を追加します。
# You will use your own SSL certificates directory for these. The following are examples only. ssl-ca=/etc/pki/tls/certs/ca.pem ssl-cert=/etc/pki/tls/certs/server-cert.pem ssl-key=/etc/pki/tls/private/server-key.pem
-
ファイルを保存して終了します。次に、次のいずれかのコマンドを実行してMySQLを再起動します。
service mysqld restart
または
systemctl restart mysqld
-
MySQLがバックアップされたら、MySQLシェルに再度ログインします。
mysql -u root -p (Enter MySQL root password)
-
SSLクエリを再度実行します:
SHOW VARIABLES LIKE '%ssl%'; STATUS;
-
SSLセクションの値がはいを示している場合 、SSLはMySQLに対して有効になっています。ただし、rootユーザーがSSLを使用して接続されていないことがわかります。これは正常です。これを変更したい場合は、すべてのローカルホストユーザー接続にSSLを使用させることができます。 my.cnfを編集する必要があります 次のコマンドのいずれかを実行して、ファイルを再作成します。
vim /etc/my.cnf
または
nano /etc/my.cnf
-
最後に次の構成を入力します:
[client] ssl-ca=/etc/pki/tls/certs/ca.pem ssl-cert=/etc/pki/tls/certs/client-cert.pem ssl-key=/etc/pki/tls/private/client-key.pem
-
MySQLを再起動します。 MySQLがバックアップされたら、MySQLシェルに再度ログインします。
mysql -u root -p (Enter MySQL root password)
-
次のクエリをもう一度実行します:
SHOW VARIABLES LIKE '%ssl%'; STATUS;
ローカルホスト接続からのSSL接続を有効にするだけの場合は、これで完了です。ただし、MySQLのリモートログインも有効にする場合は、読み進めてください。
MySQLのリモート接続を有効にする
次の手順では、MySQLのリモート接続を有効にします。さらに、これらのリモートユーザーは、接続するために証明書機関(CA)によって署名された証明書ファイルを持っている必要があります。
この例は、(3つのアスタリスクを使用して:***
を示します。 )CAなしでリモート接続を許可する場合は、CA署名を強制する設定。
-
好みのコマンドラインテキストエディタを使用して、 /etc/my.cnfを編集します 再度ファイルする:
vim /etc/my.cnf
または
nano /etc/my.cnf
-
[mysqld]の下部に以下を含めます セクション:
bind-address = * require_secure_transport = ON ***
-
:wq
を使用してファイルを保存して終了します 。 -
MySQLを再起動します。 MySQLが再度実行されていることを確認します。 MySQLシェルに再度ログインする必要があります。
-
ログイン後、次のいずれかのコマンドを実行してユーザーを作成します。
CREATE USER 'example'@'%' IDENTIFIED BY 'password';
または
CREATE USER 'example'@'%' IDENTIFIED BY 'password' REQUIRE X509; ***
-
このユーザーに権限を付与するデータベースへの権限を付与した後、シェル内からMySQL権限を更新するための権限をフラッシュします。
flush privileges;
%
にお気づきかもしれません @
の後にあります 前のcreate user
の記号 コマンドは、実際にユーザーをリモートユーザーとして示すものです。
ボーナスとして、staticIPアドレスのみからMySQLにアクセスするユーザーがいる場合は、%
の代わりにそのIPアドレスを入力できます。 そのユーザーが特定のIPアドレスからMySQLにアクセスできるようにします。ただし、ユーザーはそのIPアドレスからのみデータベースにアクセスできることに注意してください。 IPアドレスが変更されると、アクセスできなくなります。これが、ほとんどの管理者が%
の一般的なリモート設定を使用する理由です。 代わりに。
これで、SSL接続とMySQLデータベースへのリモートアクセスが有効になりました。