ホームページ >バックエンド開発 >PHPチュートリアル >MySQL を PHP に対して安全にする方法のチュートリアル
MySQL サーバーに接続するときは、通常、パスワードを使用する必要があります。パスワードは接続上でクリア テキストで送信されません。
その他すべての情報は、誰でも読むことができるテキストとして送信されます。これが心配な場合は、圧縮プロトコル (MySQL 3.22 以降) を使用して問題を難しくすることができます。すべてをより安全にするためにも、ssh をインストールする必要があります (http://www.cs.hut.fi/ssh を参照)。これを使用すると、MySQL サーバーと MySQL クライアントの間で暗号化された TCP/IP 接続を取得できます。
MySQL システムを安全にするために、次の推奨事項を考慮することを強くお勧めします:
すべての MySQL ユーザーにパスワードを使用します。 other_user にパスワードがない場合は、mysql -u other_user db_name を実行するだけで誰でも他の人としてログインできることに注意してください。クライアント/サーバー アプリケーションの場合、クライアントが任意のユーザー名を指定するのが一般的です。実行する前に、次のように mysql_install_db スクリプトを編集して、すべてのユーザーのパスワードを変更することも、MySQL root パスワードのみを変更することもできます。
shell> mysql -u root mysql
mysql> ') WHERE user='root';
mysql> FLUSH PRIVILEGES; Unix では MySQL デーモンを実行しないでください。 mysqld は任意のユーザーとして実行できますが、すべてをより安全にするために新しい Unix ユーザー mysql を作成することもできます。別の Unix ユーザーとして mysqld を実行している場合、MySQL ユーザー名は Unix ユーザー名と何の関係もないため、ユーザー テーブルの root ユーザー名を変更する必要はありません。別の Unix ユーザーとして、mysql.server 起動スクリプト mysqld を編集できます。通常、これは su コマンドで行われます。詳細については、「18.8 通常ユーザーとして MySQL を実行する方法」を参照してください。
Unix root ユーザーのパスワードを mysql.server スクリプトに指定する場合は、スクリプトが root だけによって読み取れることを確認してください。
mysqld を実行している Unix ユーザーが、データベース ディレクトリ内で読み取り/書き込み権限を持つ唯一のユーザーであることを確認します。
すべてのユーザーにプロセス権限を与えないでください。 mysqladmin processlist の出力には、現在実行されているクエリのテキストが表示されます。別のユーザーが UPDATE user SET password=PASSWORD('not_secure') クエリを発行すると、そのコマンドの実行を許可されているすべてのユーザーがそのクエリを表示する可能性があります。 mysqld は、プロセス権限を持つユーザー用に追加の接続を予約します。これにより、通常の接続がすべて使用されている場合でも、MySQL root ユーザーがログインして確認できます。
すべてのユーザーにファイル権限を与えないでください。この権限を持つユーザーは、mysqld デーモンの権限を使用してファイル システムにファイルを書き込むことができます。これをより安全にするために、SELECT ... INTO OUTFILE で生成されたすべてのファイルは誰でも読み取り可能であり、既存のファイルを上書きすることはできません。ファイル権限を使用して、サーバーを実行している Unix ユーザーとしてアクセス可能なファイルを読み取ることもできます。これは、たとえば、LOAD DATA を使用して「/etc/passwd」をデータベース テーブルにロードし、その後 SELECT を使用して読み込むことによって悪用される可能性があります。
DNS を信頼できない場合は、認証テーブルでホスト名の代わりに IP 番号を使用する必要があります。原則として、mysqld の --secure オプションを使用すると、ホスト名がより安全になります。いずれの場合も、ワイルドカードを含むホスト名の使用には細心の注意を払う必要があります
http://www.bkjia.com/PHPjc/632388.html