これは、MySQLのリモート接続を有効にするための簡単なチェックリストですが、最初に(6)をお読みください。何か見落としがあった場合は、お気軽に編集してください。
1)リモートユーザーは、適切な user、host
で作成されたアカウントを介して接続しています エントリ( select user、host from mysql.user order by 1,2
からの出力を確認します。 )。そうでない場合は、 CREATE USER コード>
および/または GRANT
コマンド。 SHOW GRANTS
からの出力を調べます
ユーザーのために。
2)フラッシュ特権;
を実行しました
(不要だと言う人もいれば、不要だと言う人もいます)。
3a)このドキュメント
(またはWindowsの場合、おそらく C:\ ProgramData \ MySQL \ MySQL Server 5.NNN
道)。 Linuxのディストリビューションによって異なります。
3b) my.ini
を変更して保存しました (Windows)または my.cnf
(Linux)および変更された bind-address
127.0.0.1
から離れる またはlocalhost
、 0.0.0.0
を支持 。そして、あなたはとを作成しました 次の行を削除しました:#skip-networking
。これは次のようになります:
[mysqld]
bind-address=0.0.0.0
#skip-networking
4)mysqlデーモンを再起動します。これをどのように行うかは、ディストリビューションによって異なります。
5)ファイアウォールの問題。ポートを確認します。デフォルトは3306
です。 、外の世界に開かれています(実際にはイントラネットである可能性があります)。これには、AWS EC2セキュリティグループなど、ファイアウォールの他のレイヤーが含まれます。
6)これに関連するセキュリティリスクがあることを理解します。 mysqlサーバーをリモート接続に公開する知識がない限り、これを実行しないでください。
7) select
を使用して頻繁にセキュリティ評価を実行してください SHOW GRANTS
の確認を含む、上記の1.に記載されているステートメント それらのユーザーのために。ワイルドカードを使用してユーザーに不必要に過剰な許可を与えないでください。むしろ、ユーザーが作業を完了するための最小限の特権をユーザーに与えます。
8)以下に簡単に紹介するように、一般ログとエラーログを介して失敗した接続試行を頻繁に調べます。
インバウンドについては、一般的なクエリログを確認できます。
select @@general_log; -- a 1 indicates it is turned on for capture
select @@general_log_file; -- the file that it logs to
したがって、すべてのクエリは 一般的なクエリログ
にログインしました 設定がオンになっている場合。ログで「接続」を確認しますが、特にユーザーのアクセスが拒否されました
失敗した試行を確認します。これを定期的に(数年ごとではなく)行います。私は少なくとも1日に2回それをします。明らかに、外部プログラムを介してレポートを自動化できることに注意してください。外の世界はポンドになります 下の画像のようにサーバーにアクセスします。それは現実です。気を引き締めてください。
エラーログ のマニュアルページを確認してください。 また、警告レベル、およびバージョンに基づく詳細設定にも注意してください。
日付ごとにバックアップコピーを作成し(そのように名前が付けられています)、バックアップ後にログファイルを削除して、バックアップ後に新たに開始することをお勧めします。ログファイル、特に一般ログは、サイズが急速に大きくなる可能性があります。ロギングの設定をオンまたはオフにするかどうかを忘れないでください。
2つのログを使用して、ここでの手順で接続がファイアウォールを通過したかどうかを判断できます。