PHP がデータベースに接続しようとしたが 権限エラーが発生

Webサーバー サイトの管理
Nginx と PHP-FPM を使った WordPress サイト
max_allowed_packet 値を変更する方法
 
Nginx と PHP-FPM を使った WordPress サイトで、データベースに関する権限不足問題が発生した。
 
max_allowed_packet 値を変更する方法
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 権限を持っていない。
 → データベースの権限を確認し権限を付与する。 → 危険。
 
②.WordPress プラグインの仕様:
 プラグイン(この場合 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ファイルを修正する。
 
~/.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 | ・・・ 効いた!
+--------------------+----------+
 
 
手動で max_allowed_packet 値を変更する事で解決。
max_allowed_packet 値を変更する方法
 
 
以上。
(2025.03.04)
 

 

スポンサー リンク

 

             

 

 

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

This site uses Akismet to reduce spam. Learn how your comment data is processed.