MySQLのセキュリティ上の注意事項
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 サイト (www.php.cn) をご覧ください。
ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック

データ統合の簡素化:AmazonrdsmysqlとRedshiftのゼロETL統合効率的なデータ統合は、データ駆動型組織の中心にあります。従来のETL(抽出、変換、負荷)プロセスは、特にデータベース(AmazonrdsmysQlなど)をデータウェアハウス(Redshiftなど)と統合する場合、複雑で時間がかかります。ただし、AWSは、この状況を完全に変えたゼロETL統合ソリューションを提供し、RDSMYSQLからRedshiftへのデータ移行のための簡略化されたほぼリアルタイムソリューションを提供します。この記事では、RDSMysQl Zero ETLのRedshiftとの統合に飛び込み、それがどのように機能するか、それがデータエンジニアと開発者にもたらす利点を説明します。

1.正しいインデックスを使用して、データの量を削減してデータ検索をスピードアップしました。テーブルの列を複数回検索する場合は、その列のインデックスを作成します。あなたまたはあなたのアプリが基準に従って複数の列からのデータが必要な場合、複合インデックス2を作成します2。選択した列のみを避けます。必要な列のすべてを選択すると、より多くのサーバーメモリを使用する場合にのみサーバーが遅くなり、たとえばテーブルにはcreated_atやupdated_atやupdated_atなどの列が含まれます。

MySQLは、複数の同時接続を処理し、マルチスレッド/マルチプロセスを使用して、各クライアントのリクエストに独立した実行環境を割り当てて、邪魔されないことを確認できます。ただし、同時接続の数は、システムリソース、MySQL構成、クエリパフォーマンス、ストレージエンジン、ネットワーク環境の影響を受けます。最適化では、コードレベル(効率的なSQLの書き込み)、構成レベル(MAX_Connectionの調整)、ハードウェアレベル(サーバー構成の改善)などの多くの要因を考慮する必要があります。

MySQLがテーブル構造を変更すると、メタデータロックが通常使用され、テーブルがロックされる可能性があります。ロックの影響を減らすために、次の測定値をとることができます。1。オンラインDDLでテーブルを使用できます。 2。バッチで複雑な変更を実行します。 3.小規模またはオフピーク期間中に操作します。 4. PT-OSCツールを使用して、より細かい制御を実現します。

MySQLプライマリキーは、データベース内の各行を一意に識別するキー属性であるため、空にすることはできません。主キーが空になる可能性がある場合、レコードを一意に識別することはできません。これにより、データの混乱が発生します。一次キーとして自己挿入整数列またはUUIDを使用する場合、効率やスペース占有などの要因を考慮し、適切なソリューションを選択する必要があります。

ルートとしてMySQLにログインできない主な理由は、許可の問題、構成ファイルエラー、一貫性のないパスワード、ソケットファイルの問題、またはファイアウォール傍受です。解決策には、構成ファイルのBind-Addressパラメーターが正しく構成されているかどうかを確認します。ルートユーザー許可が変更されているか削除されてリセットされているかを確認します。ケースや特殊文字を含むパスワードが正確であることを確認します。ソケットファイルの許可設定とパスを確認します。ファイアウォールがMySQLサーバーへの接続をブロックすることを確認します。

MySQLはAndroidで直接実行できませんが、次の方法を使用して間接的に実装できます。Androidシステムに構築されたLightWeight Database SQLiteを使用して、別のサーバーを必要とせず、モバイルデバイスアプリケーションに非常に適したリソース使用量が少ない。 MySQLサーバーにリモートで接続し、データの読み取りと書き込みのためにネットワークを介してリモートサーバー上のMySQLデータベースに接続しますが、強力なネットワーク依存関係、セキュリティの問題、サーバーコストなどの短所があります。

MySQLはJSONデータを返すことができます。 json_extract関数はフィールド値を抽出します。複雑なクエリについては、Where句を使用してJSONデータをフィルタリングすることを検討できますが、そのパフォーマンスへの影響に注意してください。 JSONに対するMySQLのサポートは絶えず増加しており、最新バージョンと機能に注意を払うことをお勧めします。
