MySQL を使用する場合、セキュリティの問題を無視することはできません。以下は MySQL からの 23 のメモです:
1. クライアントとサーバー間の接続が信頼できないネットワークにまたがり、それを通過する必要がある場合は、SSH トンネルを使用して接続の通信を暗号化する必要があります。
2. set passWord ステートメントを使用してユーザーのパスワードを変更する 3 つのステップ。まず、「mysql -u root」でデータベース システムにログインし、次に「mysql> update mysql.user set password=password('newpwd')」を実行します。 " を実行し、最後に "flush PRivileges" を実行するとうまくいきます。
3. 防御する必要がある攻撃には、可用性やフォールトトレランスに関係しない、盗聴防止、改ざん、リプレイ、サービス妨害などが含まれます。すべての接続、クエリ、その他の操作は、ACL (アクセス コントロール リスト) に基づくセキュリティ対策を使用して完了します。 SSL 接続も一部サポートされています。
4. root ユーザー以外のユーザーは、mysql メイン データベースのユーザー テーブルにアクセスすることを許可されません。
ユーザー テーブルに保存されている暗号化されたユーザー パスワードが漏洩すると、他のユーザーはそのユーザー名を自由に使用できます/データベースパスワードに対応する; 5. ユーザーアクセス制御作業を実行するには、grant および revoke ステートメントを使用します。 6. プレーンテキストのパスワードを使用せず、md5() や sha1() などの一方向ハッシュ関数を使用してパスワードを設定します。
7. 辞書にある単語をパスワードとして使用しないでください; 8. ファイアウォールを使用して外部リスクの 50% を除去し、データベース システムをファイアウォールの内側で動作させるか、DMZ ゾーンに配置します; 9. を使用します。 nmap を使用してインターネットからポート 3306 をスキャンするか、telnet server_host 3306 を使用してテストします。信頼されていないネットワークからデータベース サーバーの TCP ポート 3306 へのアクセスは許可されていないため、ファイアウォールまたはルーターで設定を行う必要があります。 ID=234 の場所に不正なパラメータが渡されるのを防ぐため、他のパラメータは ID=234 OR 1=1 の場所に入力され、すべてが表示されるため、Web で文字列を使用するには '' または "" を使用してください。フォームに入力し、動的 URL で文字列を使用します。二重引用符を表すには %22、ポンド記号を表すには %23、一重引用符を表すには %27 を追加します。未チェックの値を mysql データベースに渡すのは非常に危険です。11 . mysql にデータを渡すときはサイズを確認してください 12. データベースに接続する必要があるアプリケーションは、一般ユーザー アカウントを使用し、ユーザーに必要な権限のみを公開する必要があります。さまざまなプログラミング インターフェイス (C C++ php Perl java JDBC など) ; インターネット上で mysql データベースを使用する場合は、必ず平文データを送信せず、SSL および SSH 暗号化を使用してデータを送信してください; 14. 使い方を学ぶtcpdump および tcpdump -l -i eth0 -w -src または dst port 3306 の文字列など、送信されたデータのセキュリティをチェックするための文字列ツール。 mysql データベース サービスを通常のユーザーとして開始します 15. テーブルのリンク シンボルを使用せず、パラメーター --skip-symbolic-links を選択します。 mysql ディレクトリはデータベース サービスにアクセスできます。 17. プロセス権限またはスーパー権限は、管理者以外のユーザーに与えることはできません。mysqladmin プロセスリストには、現在実行されているクエリ テキストをリストできます。クライアントの接続を切断し、サーバーの動作パラメータのステータスを変更するために使用されます。 18. データのロードの問題を防ぐために、ファイルのアクセス許可は管理者以外のユーザーには与えられません。 etc/passwd' をテーブルに追加し、select を使用して表示します 19. そうでない場合、DNS サービス会社のサービスを信頼する場合は、ホスト名許可テーブルに IP 数値アドレスを設定することしかできません。 20. max_user_connections 変数を使用して、mysqld サービス プロセスに指定したアカウントの接続数を制限させます 21. Grant ステートメントはリソース制御オプションもサポートします; 22. mysqld サービス プロセスのセキュリティ オプション スイッチを開始します。 --local-infile=0 または 1。0 の場合、クライアント プログラムはローカル ロード データを使用できません。 mysql.user に対する Grant Grant insert(user) の例 - を使用する場合。 -skip-grant-tables を使用すると、システムはどのユーザーのアクセスに対してもアクセス制御を実行しませんが、mysqladmin flash-privileges または mysqladmin reload を使用してアクセス制御を有効にすることができます。デフォルトでは、show Databases ステートメントがすべてのユーザーに公開されています。 --skip-show-databases でオフにできます。 23. エラー 1045 (28000) アクセスが拒否されました (ユーザー 'root'@'localhost' (パスワードを使用:NO)) が発生した場合は、パスワードをリセットする必要があります。具体的な方法は、最初に --skip-grant-tables を使用します。パラメータを指定して mysqld を起動し、次に mysql -u root mysql,mysql>update user setpassword=password('newpassword') where user='root';mysql>Flush権限; を実行し、最後に mysql を再起動します。 上記は Mysql のセキュリティ上の注意事項の内容です。その他の関連記事については、PHP 中国語 Web サイト (m.sbmmt.com) をご覧ください。