MySQLのmax_user_connectionsについて
MySQLのmax_user_connectionsについて紹介します。
これを調べるきっかけになったのは、Movable Type 5.2.3がリリースされ、リリースの内容が「5.2.3ではMySQLのmax_user_connectionsが20以下に設定されている場合に、新規インストール・アップグレードが出来ない問題を解消しています」というものだったためです。
1.MySQLのmax_user_connectionsとは
MySQLのmax_user_connectionsは、データベースへの同時接続数を制限するための変数です。
公式ドキュメントの「4.8.4. ユーザ リソースの制限」にmax_user_connectionsの解説があり、グローバルレベル(または単一アカウント)で適用されるようです。
MySQL サーバ リソースの使用を制限することの一つの方法として、スタートアップ変数の max_user_connections をゼロ以外の値に設定することがあります。しかし、この方法は完全にグローバルに適用するため、個別アカウントの管理はできません。これに加えて、この方法は、単一アカウントによる同時接続の数を制限するものであり、これは クライアントが制限できることではありません。このようなタイプの制御は、インターネット サービス プロバイダ業界などでの MySQL 管理者に高い関心をよせる点です。
同時接続数の設定は、権限の設定を行うGRANT文を使います。
GRANT 権限 ON レベル TO ユーザー WITH MAX_USER_CONNECTIONS 同時接続数;
max_user_connectionsに「0」を設定した場合、「制限がない」という意味になるようです。
また、「WITH MAX_USER_CONNECTIONS」を省略した場合のデフォルト値も「制限がない」という意味になりようですが、前述の「4.8.4. ユーザ リソースの制限」に、
GRANT ステートメントに WITH 節がない場合は、この制限はデフォルト値、ゼロでの設定になります。つまり、制限がないことになります。MAX_USER_CONNECTIONS の整数は、アカウントが一度にできる同時接続の最大回数を表します。この制限を、デフォルト (ゼロ) にした場合、max_user_connections システム変数でアカウント同時接続回数を決定します。
とあるので、上位レベル(たとえばデータベースレベルの設定であればグローバルレベル)の設定が適用されるように読み取れます。間違っていたらすいません。
2.phpMyAdminでmax_user_connectionsを確認する
phpMyAdminでmax_user_connectionsを確認するには、phpMyAdminにログインした直後の画面で「変数」タブをクリック。
「サーバ変数と設定値」というタイトルで変数の名前と設定がずらっと表示され、この中に「max user connections」があります。
このブログで現在使っている「さくらのビジネスプロ」では「30」になっていました。
3.phpMyAdminでmax_user_connectionsを設定・変更する
phpMyAdminでmax_user_connectionsを設定するのは「新しいユーザーの作成」で行います。言い換えると、レンタルサーバなどで「ユーザーの作成」が表示されない場合はmax_user_connectionsを設定・変更することはできません。
ユーザー作成画面に「グローバル特権」があるので、ここに表示された「リソースの制限」にあるmax_user_connectionsを設定します。
変更する場合は、「特権」でユーザー一覧を表示させた右側にある編集アイコンをクリックすれば、さきほどと同じ設定画面が表示されます。
- MySQLのrootログインで「Access denied for user 'root'@'localhost' (using password: YES)」に遭遇した場合の対処
- mysqlやmysqldumpで「 [Warning] Using a password on the command line interface can be insecure.」という警告が表示される場合の対処
- bashでMySQLのselect結果を出力する方法
- MySQL(phpMyAdmin)でエラー#1089になる場合の対処
- MySQLで「The used SELECT statements have a different number of columns」となる場合の対処
- mysqldumpで「Error: 'Access denied; you need (at least one of) the PROCESS privilege(s) for this operation' when trying to dump tablespaces」となる場合の対処
- SSHポートフォワーディングでMySQLに接続する方法
- Windows向けMySQL管理クライアント「HeidiSQL」
- WindowsにMySQL(zip版)をインストールする
- phpMyAdminでインポートできない大きなファイルを一気にインポートできる「BigDump」
- phpMyAdmin で MySQL のストレージエンジンを MyISAM から InnoDB に変更する方法