概要
MySQL DBの同時接続数 (max_connections
) を変更しようと思ったのですが、SUPER権限エラーでSQLではできず。本記事ではAWS CLIを利用して同時接続数を変更する方法を紹介します。
エラー内容
SQLコマンドで実施する場合は以下で行います。
SHOW GLOBAL VARIABLES LIKE 'max_connections';
SET GLOBAL max_connections = 2000;
しかし以下のエラーが出ました。
SQLエラー [1227] [42000]: Access denied; you need (at least one of) the SUPER privilege(s) for this operation
RDS作成時で作ったrootユーザーにはSUPER権限がないみたい。
max_connections
などのグローバル変数を変更するには、SUPER権限が必要。
DBから見てみるとrdsadmin
というユーザーならSUPER権限があるが、、、これはAmazon RDSサービスが管理用途で使用する特別なユーザーのため、通常のユーザーのようにログインすることはできません。
解決方法
RDSでmax_connections
などのグローバル変数を変更する場合は、AWS CLIを使えば良い。
以下のように実施すれば、無事に最大接続数が変更されます。
aws rds modify-db-parameter-group --db-parameter-group-name your-db-parameter-group-name --parameters "ParameterName=max_connections,ParameterValue=2000,ApplyMethod=immediate"
your-db-parameter-group-name
の部分は実際のデータベースパラメーターグループに書き換えます。RDSのコンソール画面からパラメータグループの名前を確認してください。
上記の場合は2000
にセットしています。
変更後10秒くらいたったらSHOW GLOBAL VARIABLES LIKE 'max_connections'
の実行結果が2000
に変わりました。
RDSのコンソールからも確認しておきます。
変更前
GREATEST({log(DBInstanceClassMemory/805306368)*45},{log(DBInstanceClassMemory/8187281408)*1000})
変更後
2000
になっていることが確認できました。