Webサーバー サイトの管理
Nginx と PHP-FPM を使った WordPress サイト
max_allowed_packet 値を変更する方法
Nginx と PHP-FPM を使った WordPress サイト
max_allowed_packet 値を変更する方法
Nginx と PHP-FPM を使った WordPress サイトで、データベースに関する権限不足問題が発生した。
max_allowed_packet 値を変更する方法。
以下に、このエラーの原因と解決策を記録。
スポンサー リンク
目 次
1. エラーの内容
FastCGI sent in stderr: "PHP message: WordPress database error Access denied"
PHP がデータベースに接続しようとしたが 権限エラーが発生。
you need (at least one of) the SUPER privilege(s) for this operation
for query set global max_allowed_packet=33554432
データベースの max_allowed_packet 設定を変更しようとしているが、この操作には(少なくとも1つの)SUPER権限が必要。
2. 原因と解決策
①. MySQL/MariaDB の設定権限不足:
データベースユーザーが SET GLOBAL 権限を持っていない。
データベースユーザーが SET GLOBAL 権限を持っていない。
→ データベースの権限を確認し権限を付与する。 → 危険。
②.WordPress プラグインの仕様:
プラグイン(この場合 WPvivid)が、データベースの max_allowed_packet 設定を変更しようとしたが、通常のユーザー権限では許可されていない。
プラグイン(この場合 WPvivid)が、データベースの max_allowed_packet 設定を変更しようとしたが、通常のユーザー権限では許可されていない。
→ プラグインの設定を変更する。 → 無理。
③.手動で max_allowed_packet を調整する。 → 簡単かつ安全。
3. max_allowed_packet 値を変更する方法
MariaDB が現在認識している設定を確認する方法。
mysql -u root -p -e "SHOW VARIABLES LIKE 'max_allowed_packet';"
+--------------------+----------+
| Variable_name | Value |
+--------------------+----------+
| max_allowed_packet | 16777216 |
+--------------------+----------+
max_allowed_packet 値を変更するには、MySQL/MariaDB の設定ファイルを編集し、[mysqld] セクションに以下を追記する。
[mysqld]
max_allowed_packet=32M
設定ファイルの探し方。
mysql --help | grep my.cnf
/etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf
order of preference, my.cnf, $MYSQL_TCP_PORT,
MariaDB は上記の順序で設定ファイルを読み込んでいる。(後に読み込まれたものが優先される。)
/etc/my.cnf
/etc/mysql/my.cnf
~/.my.cnf(ユーザーごとの設定)
この出力結果を元に適切な.cnfファイルを修正する。
/etc/my.cnf
/etc/mysql/my.cnf
~/.my.cnf(ユーザーごとの設定)
この出力結果を元に適切な.cnfファイルを修正する。
~/.my.cnf ・・・ 空 → この中に作成してみる。
sudo nano ~/.my.cnf
[mysqld]
max_allowed_packet=32M
サーバーの再起動
sudo systemctl restart mariadb
mysql -u root -p -e "SHOW VARIABLES LIKE 'max_allowed_packet';"
+--------------------+----------+
| Variable_name | Value |
+--------------------+----------+
| max_allowed_packet | 16777216 | ・・・ 効いていない
+--------------------+----------+
/etc/mysql/my.cnf を編集してみる。
sudo nano /etc/mysql/my.cnf
[mysqld]
max_allowed_packet=32M
サーバーの再起動
sudo systemctl restart mariadb
mysql -u root -p -e "SHOW VARIABLES LIKE 'max_allowed_packet';"
+--------------------+----------+
| Variable_name | Value |
+--------------------+----------+
| max_allowed_packet | 33554432 | ・・・ 効いた!
+--------------------+----------+
以上。
(2025.03.04)
(2025.03.04)
スポンサー リンク