ERROR 1227 (42000): Access denied; you need (at least one of) the SUPER privilege(s) for this operation

## 概要

特定のログを埋め込んで抽出してSQL化して適当なDBとテーブル作ってSQL流してクエリで解析できるように対応を進めていたところ、大量のログ＆sqlファイル１つ数百MBという結果になり、ローカルでは対応厳しいためRDSに対応していたところ色々とハマったまとめです。

## 環境

- RDS - MySQL Community 5.6.40

## 問題

調べつつ次の通り作業を進めていたところ、タイトルのエラーでハマりさらに調べるとAWSコンソール上で作業すれば良いと分かった。

```shell
$ mysql dev_analysis -h staging.xxxxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com -P 33066 -u gremito -p < ~/sqls/xxxxxxxxxx.sql
Enter password: 
ERROR 2006 (HY000) at line 24: MySQL server has gone away

$ mysql -h staging.xxxxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com -P 33066 -u gremito -p 

mysql> show variables;

（略）

| max_allowed_packet                                     | 4194304

（略）

mysql> set global max_allowed_packet = 512000;
ERROR 1227 (42000): Access denied; you need (at least one of) the SUPER privilege(s) for this operation

mysql> show grants;
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Grants for gremito@%                                                                                                                                                                                                                                                                                                                                              |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO 'bananaore'@'%' IDENTIFIED BY PASSWORD <secret> WITH GRANT OPTION |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.01 sec)

```

## やったこと

パラメータグループから`max_allowed_packet`の値を変更しているとエラーになり、原因はデフォルトを変更することができず、さらにデフォルトからはコピーを作ることもできないため新しくパラメータグループを作り、`max_allowed_packet`の値を変更＆保存。
パラメータグループの変更は、データベースを起動していないと変更できないようで、変更後は再起動が必要。

![スクリーンショット 2020-03-19 16.58.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/82601/cc016324-fd37-bcc3-78bc-e3b8e2170c09.png)

![スクリーンショット 2020-03-19 17.40.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/82601/5644b3bf-ce75-27de-def6-ca812e7a5d80.png)


再起動後、`max_allowed_packet`の値が変わっていることを確認。

```shell
mysql> show variables;

（略）

| max_allowed_packet                                     | 512000

（略）
```


### 参考記事

- [Amazon RDS for MySQL のパラメーターを設定するためのベストプラクティス。パート 3: セキュリティ、操作管理性、および接続タイムアウトに関連するパラメーター](https://aws.amazon.com/jp/blogs/news/best-practices-for-configuring-parameters-for-amazon-rds-for-mysql-part-3-parameters-related-to-security-operational-manageability-and-connectivity-timeout/)
- [【MySQL】AWA RDSでmax_allowed_packetを変更するのはコンソールから行う - @isao_e_dev](https://qiita.com/isao_e_dev/items/753df503618e2d4a7fdc)
- [MySQLのエラーと対策まとめ - @RyutaKojima](https://qiita.com/RyutaKojima/items/3772d695db5e2342ab47)
- [RDSのパラメーター変更方法（AWS） - @takahashi-kazuki](https://qiita.com/takahashi-kazuki/items/6ee903ee07f1283cfaf7)