はじめに
MySQLは、オープンソースのリレーショナルデータベース管理システムであり、人気のあるLAMPスタックの一部です。 mysql_secure_installation
スクリプトを使用すると、MySQLサーバーのセキュリティを大幅に向上させることができます。
このガイドでは、MySQLサーバーを保護する方法を学習します。

前提条件
- MySQLがインストールされているLinuxシステム(別のOSを使用していますか?Windowsサーバー、CentOS 7、またはCentOS 8にMySQLをインストールして構成する方法を参照してください)。
- ターミナルへのアクセス( Ctrl + Alt + T 。
- ネットワーク接続。
- 管理者権限を持つアカウント。
mysql_secure_installationコマンド
インストール後、マシン上のMySQLサーバーインスタンスは安全ではなく、攻撃を受けやすくなります。 mysql_secure_installation
UnixシステムへのMySQLサーバーのインストールを保護するために開発されたシェルスクリプトです。このスクリプトはセキュリティ設定を構成し、次のことを可能にします。
- rootアカウントのパスワードを設定します(MySQLのrootパスワードをリセットまたは変更する方法を参照してください)
- ローカルホストの外部からアクセス可能なルートアカウントを削除します。
- 匿名ユーザーアカウントを削除します。
- 匿名ユーザーがアクセスできるテストデータベースを削除します。
- ユーザー権限テーブルを再読み込みします。
[option]
引数はオプションであり、次のセクションで説明します。
1. mysql_secure_installation
を実行します 次の構文を使用したスクリプト:
sudo mysql_secure_installation [option]
2.パスワードを入力し、 Y
を押します VALIDATE PASSWORD
を設定するには 新しいパスワードが十分に強力かどうかをチェックするコンポーネント。
3.次に、 0
と入力します 、 1
、または 2
設定するパスワード強度に応じて:
-
0
-低 。パスワードは8文字以上で構成されています。 -
1
-中 。パスワードは8文字以上(数字、大文字と小文字の混合、特殊文字を含む)で構成されています。 -
2
-強い 。パスワードは8文字以上で構成されます(数字、大文字と小文字の混合、特殊文字を含み、パスワードを辞書ファイルと比較します)。
4.必要な強度を指定したら、パスワードを入力して再入力します。

5.プログラムはパスワードの強度を評価し、 Y
で確認する必要があります 続ける。

6.次に、次のセキュリティ機能に答える必要があります。
- 匿名ユーザーを削除しますか?
- リモートログインを許可しませんか?
- テストデータベースを削除してアクセスしますか?
- 特権テーブルを今すぐリロードしますか?
デフォルト設定でスクリプトを実行するには、これらすべての質問に対する推奨される回答は Y
です。 。
mysql_secure_installationオプション
mysql_secure_installation
スクリプトは、MySQLのセキュリティ構成をカスタマイズする特定のオプションを受け入れます。コマンドラインまたは[client]
でオプションを指定します オプションファイルのグループ。
最も一般的に使用されるmysql_secure_installation
オプションは--host
および--port
。
たとえば、ポート3307を使用してローカルサーバーに接続するクライアントによるIPv6接続を許可するようにMySQLを構成できます。これを行うには、 ::1
を追加する必要があります。 ローカルホストアドレスを指定し、デフォルトのポート(3306)を3307に変更します。
したがって、インストールスクリプトを実行するときは、次のコマンドを使用します。
mysql_secure_installation --host=::1 --port=3307
その他のサポートされているオプションは次のとおりです。
--basedir=dir | ベースディレクトリを指定します。 |
--print-defaults | プログラム引数リストを印刷して終了します。 |
--no-defaults | スクリプトがオプションファイルからデフォルトオプションを読み取らないようにします。 |
--defaults-file=# | 指定されたオプションファイルのみを読み取るようにスクリプトに指示します# 。 |
--defaults-extra-file=# | 指定されたファイルを読み取ります# 通常のオプションファイルを読んだ後。 |
--defaults-group-suffix=str > | 通常のオプショングループを読み取りますが、通常の名前とstr 接尾辞。 |
--help | ヘルプメッセージを表示して終了します。 |
--host=host_name | 指定されたホスト上のMySQLサーバーに接続します。 |
--no-defaults | スクリプトがオプションファイルを読み取れないようにします(。mylogin.cnf を除く ファイル)。 |
--password | スクリプトはこのオプションを受け入れますが、常に無視します。したがって、スクリプトは呼び出されるたびにパスワードの入力を求めます。 |
--port=# | 接続するTCP/IPポート番号を指定します。 |
--print-defaults | プログラム名とデフォルトオプションを出力します。 |
--protocol={#} | サーバーへの接続に使用するトランスポートプロトコルを指定します{TCP | SOCKET | PIPE | MEMORY} 。 |
--socket=path | UnixソケットファイルまたはWindowsを指定しますnamed_pipe localhost に接続する変数 。 |
--ssl=[1 | 0] | 接続の暗号化をそれぞれ有効または無効にします。 --ssl で始まるオプション SSLキーと証明書へのパスを示すこともできます。 |
--ssl-ca=filename | 信頼できるSSL認証局リストを含むファイルを指定します。 |
--ssl-capath=dir | 信頼できるSSL認証局の証明書ファイルを含むディレクトリパスを指定します。 |
--ssl-cert=filename | クライアントSSL公開鍵証明書を含むファイルへのパス。 |
--ssl-cipher=list | 接続暗号化に許可される暗号のリスト。 |
--ssl-crl=filename | 証明書失効リストを含むファイルへのパス。 |
--ssl-crlpath=dir | 証明書失効リストファイルを含むディレクトリ。 |
--ssl-key=filename | クライアントSSL秘密鍵証明書を含むファイルへのパス。 |
--ssl-mode=mode | サーバー接続のセキュリティ状態の1つを、厳密度の高い順に指定します。 [DISABLED | PREFERRED | REQUIRED | VERIFY_CA | VERIFY_IDENTITY] 。 |
--ssl-verify-server-cert > | 共通名IDを含むサーバー証明書に対してホスト名IDを確認するようにクライアントに指示します。 |
--tls-version=list | 暗号化された接続に許可されるTLSプロトコルのコンマ区切りリストを指定します。 |
--use-default | スクリプトは対話なしで実行されます。 |
--user=username | サーバーに接続するためのMySQLアカウントのユーザー名を指定します。 |