web-dev-qa-db-ja.com

「最大ユーザー接続」エラーを取り除く方法は?

私は自分のWebアプリケーションにMySQLiを使用していますが、特定のページにアクセスしたいときはいつでもmysqli_connect() [function.mysqli-connect]: (42000/1203): User ***_user already has more than 'max_user_connections' active connectionsを取得します。

私はすでにすべての接続を閉じようとしましたが、これは状況を改善しません。

特定の時点で開いている接続を正確に知る方法、またはこの問題の解決に役立つその他の有用なデータはありますか?

ところで、私はPHP 5.2.17とMySQL 5.1を使用しています。

16
ahmed

オプション max_user_connections は、サーバーインスタンスでの同時接続の総数ではなく、個々のユーザーアカウントに課される制限です。

ユーザーの名前がdb_user@localhostだとします。このクエリを実行することで、このユーザーの接続制限を確認できます。

SELECT max_user_connections FROM mysql.user
WHERE user='db_user' AND Host='localhost';

これがゼロ以外の値の場合は、次のように変更してください。

GRANT USAGE ON *.* TO db_user@localhost WITH MAX_USER_CONNECTIONS 0;

または

UPDATE mysql.user SET max_user_connections = 0
WHERE user='db_user' AND Host='localhost';
FLUSH PRIVILEGES;

これにより、mysqldは、ユーザーdb_user@localhostがグローバル設定 max_user_connections を制限として使用できるようになります。

この時点に達したら、次を使用してグローバル設定を確認します

SHOW VARIABLES LIKE 'max_user_connections';

これがゼロ以外の値の場合、2つのことを行う必要があります

THING#1/etc/my.cnfで設定を探します

[mysqld]
max_user_connections = <some number>

その行をコメントアウト

THING#2:値を動的に設定します

SET GLOBAL max_user_connections = 0;

MySQLの再起動は必要ありません。

警告

私は過去にこの設定について話しました

試してみる !!!

24
RolandoMySQLDBA