[PHP] メモリ制限を変更する

EC-CUBE4のセットアップでメモリ不足エラーが発生。

デフォルトは128MBなので、設定ファイルを編集して制限を変更する。

参考サイト

PHPのメモリの上限を変更する – Qiita
https://qiita.com/dayone80/items/a3f5491c7e5b1ed4ed9e

[AWS] RDS/MySQLではユーザにSUPER権限が付与できない

いろいろ試した結果、とりあえずそういう結論に落ち着いたので覚書。

SUPER権限について

MySQL :: MySQL 5.6 リファレンスマニュアル :: 6.2.1 MySQL で提供される権限
https://dev.mysql.com/doc/refman/5.6/ja/privileges-provided.html

SUPER 権限によって、アカウントはほかのアカウントに属するスレッドを強制終了するための CHANGE MASTER TO、KILL、または mysqladmin kill (自分のスレッドは常に強制終了できます)、PURGE BINARY LOGS、グローバルシステム変数を変更するための SET GLOBAL を使用した構成変更、mysqladmin debug コマンド、ロギングの有効化または無効化、read_only システム変数が有効な場合の更新の実行、スレーブサーバー上でのレプリケーションの開始と停止、ストアドプログラムおよびビューの DEFINER 属性内のすべてのアカウントの指定を使用することができ、ユーザーは max_connections システム変数によって制御される接続制限に達している場合でも (一度) 接続することができます。
バイナリロギングを有効にした場合にストアドファンクションを作成または変更するとき、セクション20.7「ストアドプログラムのバイナリロギング」に記載されているように SUPER 権限がやはり必要になることがあります。

RDSの挙動

以下の設定でRDSのインスタンスを作成した。

インスタンス作成直後のマスターユーザの権限は以下の通り。

その後、マスターユーザへSUPER権限の付与を試みるが失敗する。RDSではワイルドカードを%と表記しろというアドバイス記事をネットで見つけたので試してみるも通らず。

新規ユーザを作成してSUPER権限の付与を試みるが、権限を付与する側にSUPER権限が付与されていないので当然失敗する。

AWSのドキュメントを漁ると、SUPER権限を付与する方法ではなく、バイナリログ記録が有効なときに、SUPER 権限なしで関数、プロシージャ、トリガーを有効にする方法については言及されている。

Amazon RDS MySQL の関数
https://aws.amazon.com/jp/premiumsupport/knowledge-center/rds-mysql-functions/?nc1=h_ls

ネットで先人の知恵を煽ると以下の記事がヒット。

[RDS (MySQL)] Super権限操作で出たエラー | ハックノート
https://hacknote.jp/archives/28810/

RDSではSuper権限が付与されたユーザはAWS側が管理用に確保しているrdsadminというユーザのみになっており、自身で作成したユーザにはSuper権限が付与されていません(付与することもできません)。

AWS再入門 Amazon RDS編 | DevelopersIO
https://dev.classmethod.jp/cloud/aws/cm-advent-calendar-2015-aws-re-entering-rds/

Amazon RDSでは、DBに対して管理者権限ではログインできません。そのため管理者権限を使用した操作が必須である場合は、その操作を回避するかRDSの採用をやめる必要があります。
ただし、本来は管理者権限でしか実行できない操作をストアドプロシージャやAWSCLIで使用できる場合があります。MySQLの場合、CHANGE MASTER、KILL等がSUPER権限でしか実行できません。しかし、CHANGE MASTERであればmysql.rds_set_external_masterプロシージャ、KILLであればmysql.rds_killプロシージャやmysql.rds_kill_queryプロシージャで同等の操作が可能です。
管理者権限が必要な場合は、代替コマンドが用意されているか確認しましょう。

SUPER権限は付与できないっぽい。

[MySQL] Percona Toolkit – 運用監視分析ツール

Percona Toolkit (ペルコナツールキット) | MySQLチューニング/保守サポート/コンサルティングのスマートスタイル
https://www.s-style.co.jp/products/percona/toolkit

Percona ToolkitはMySQLの運用、監視、分析などの複雑な作業を簡単に実施することができるコマンド群を集めたツールです。
Percona Toolkitを使うことで以下の作業を行うことができます。
1. MySQLを停止することなく、マスターとスレーブのデータの整合性を確認する
2. 2つのMySQL間のデータを同期する
3. 問題となっているSQLを検出する
4. スレーブを意図的に遅延させる
5. バージョン間の互換性を確認する
Percona Toolkitは外部の管理用サーバー、データベースサーバーのどちらにでも配置できます。

MySQL Tools and Management Software to Perform System Tasks by Percona
https://www.percona.com/software/database-tools/percona-toolkit

Percona Toolkit Documentation
https://www.percona.com/doc/percona-toolkit/LATEST/index.html

Percona – Wikipedia
https://en.wikipedia.org/wiki/Percona

[MySQL] グローバル権限とデータベースレベルの権限

権限には、グローバルな権限とデータベースレベルの権限がある。

例えば SUPER はグローバルな権限である。なので

といったようにデータベース指定で設定しようとすると、以下のように怒られる。

グローバル権限を付与する場合は、以下のようにデータベースをワイルドカード指定するのが正解らしい。

グローバル権限 – mysql.userテーブルで管理

データベースレベルの権限 – mysql.dbテーブルで管理

参考サイト

mysql – How to grant super privilege to the user? – Database Administrators Stack Exchange
https://dba.stackexchange.com/questions/63404/how-to-grant-super-privilege-to-the-user

[MySQL] ユーザ一覧を見る

mysql.userを見る。付与されてる権限とかも確認できる。