Windows Server 2008プラットフォームでPHP 5.3.3でMySQL Community Server 5.5を使用しています。 1人のユーザーのリソース制限、特に1時間以内にDBユーザーが実行するクエリに関連する制限を設定しました。私はこの文書を読んできましたが、それはとても面白いですが、いつも私にとってはうまくいきません。PHPでMySQLクエリを実行しているときに "max_questions"の制限が守られていません
http://dev.mysql.com/doc/refman/5.5/en/user-resources.html
私はmysqlコマンドラインツール(mysql.exe)を介してクエリを実行すると制限が正常に動作し、1時間以内7つのクエリが、私はエラーを受け取った後、時間あたりのクエリの制限は、7だった場合:
ERROR 1226 (42000): User 'user' has exceeded the 'max_questions' resource (current value: 7)
これは望ましい動作です。
私はPHPを介してクエリを実行すると(私はDBに接続するために使用したユーザーは上記と同じです)、クエリの制限は機能しません:PHPを使用して同じユーザーが、任意の制限。そして、カウンタの上にあるmysqlコマンドラインに戻ってくると、たとえ時間が経過していなくてもリセットされているようです。私は1時間以内に7つのクエリも実行できます。 これは望ましい動作ではないと私は思う。 PHPがカウンタをリセットし、クエリ制限を起動しないようです。
PS:「ユーザーが」唯一SELECT,INSERT,UPDATE,DELETE
権限を所有し、PHPのコード内の任意のSQLコードがRELOAD
権限がユーザーに割り当てられていないため、ユーザーのユーザーが「(実行したことがなかったことFLUSH USER_RESOURCES
ようがありません)事前
'user @ localhost'だけに制限しましたが、' user @ host-your-php-code-runson'に制限しましたか? –
なぜこのような奇妙な制限が必要ですか? –
PHPはアカウントuser @ localhostを使用してクエリを実行し、正しく動作します(権限はクエリーの制限を無視して正しく評価されます)。 –