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


16

私は私のウェブアプリに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を使用しています。

回答:


24

オプション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の再起動は必要ありません。

警告

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

試してみる !!!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.