mysql5.7へのアップデート(Xサーバー)
Xサーバー内にてサイト引っ越しにより、header.phpが読み込めず、以下のエラーが出たためその対処法を調べた。
Fatal error: Uncaught mysqli_sql_exception: mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication...
phpバージョン(新しいサイトは8.1.22)とmysqlのバージョン(5.0)との互換性?の都合の問題ぽく、
chatgptで調べてみると、
- パスワードの再設定:ログイン後、次のSQLコマンドを実行して、パスワードを新しいハッシュで設定し直します。
- SET PASSWORD FOR 'your_username'@'localhost' = 'your_new_password';
- ここで、'your_username'はMySQLにログインするユーザー名、'localhost'はそのユーザーが接続するホスト名(必要に応じて変更)、'your_new_password'はそのユーザーの新しいパスワードです。
- my.cnfファイルの編集:古い認証方式が設定されている場合は、MySQLの設定ファイルmy.cnf(またはmy.ini)からold_passwordsの設定を削除する必要があります。このファイルはサーバー上で見つけて、テキストエディタで編集する必要があります。
と言われたので、再設定するためにphpmyadminにログインしてサーバーで上記命令を実行するも、1044エラー(アクセス拒否エラー)が出て失敗、おそらく、既にログインしてしまっているためと思われる。
Xサーバーはコントロールパネルでmysql構築できる上に、phpmyadminも使えるので簡便である反面、こうしたユーザーパスワードとかを変更するさいなどはsql命令ではなく、コントロールパネルを使って行うことになり、できることが限られてしまう。
my.cnfファイルについても、サポートに聞いたところ、お客様で編集することは出来ませんとの回答。なんで、old_password=1or0とか、ハッシュが16バイトor41バイトとかはよくわからず。
というわけで、Xサーバーで上記エラーに対処する方法としては、
- 互換性を改善するために、サーバーパネル「MySQL設定」>「MySQLユーザ一覧」から該当のデータベースへのアクセス権が付与されているMySQLユーザーのパスワードを再設定していただくことで事象が改善するかを確認(サポートより)
- いっそのことphpのバージョンが新しいので、mysqlも最新にし、ユーザーも新しく作る
があり、後者を選択。
mysql5.0のデータをエクスポート(Xサーバーの場合はサーバ上のディレクトリ /var/lib/phpMyAdmin/save/ に保存することはできないので、既存のファイルは上書きするでDL)して、mysql5.7にインポート。
新しく作ったユーザーのアクセス権限を付与した後に接続→ひとまず接続できた。
しかし、get_magic_quotes_gpcエラーがでる。これは今まで必要だと思っていたものの記述の意味がないらしくコメントアウトが推奨。あとはhtmlspecialchars()の文字コードがutf8としていたが、utf-8でないといけないということでこれらを直して正常に接続できることを確認。
コメントor補足情報orご指摘あればをお願いします。
- << 前のページ
- 次のページ >>