どうも、スマコマのコマ太郎です。
今日はいつもお世話になっている WordPress の文字列置換プログラム(Search Replace DB V3.1)でエラーが発生したので、その回避方法を備忘録として残しておきます。
このプログラムはドメインの載せ替えでよく利用するのですが、今回、以下のようなエラーが発生して動いくれませんでした。
SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client
どうも送信しているパスワードの形式がまずく受け付けてくれないということのようです。完全にサーバー環境依存の問題です。何か回避方法はないかと思い検索していたらプログラムの配布サイトにQAがありました。
https://interconnectit.com/blog/2015/07/08/say-hello-to-search-replace-db-v3-1/
このページの[Authentication methods]という見出しの部分がそうです。このページによると Search Replace DB の古いバージョン(v2.1) なら古いパスワード形式を利用しており役に立つかもねと書いてあります。
なるほど。でもその v2.1 とやらはどこにあるのか・・・
探してみたところ、最新バージョンを申請すると古いバージョンのリンクも一緒にメールで送られてくるようです。
https://interconnectit.com/products/search-and-replace-for-wordpress-databases/
上記3つのチェックボックスにチェックを入れると、メールアドレスを入力する欄と [submit]ボタンが出現します。(ちゃんとリスクを理解して使いますという同意のチェックボックス)
でさっそく上記ページから最新バージョンをダウンロード申請してみたところ、確かに v2.1 のダウンロードリンクも掲載されていました。
ダウンロードすると、「searchreplacedb2.php」という1ファイルだけが入っていました。v3.1 は複数のファイルとフォルダで構成されていますが、v2.1 は1ファイルだけなんですね。
これを置換したいドメインのルートに FTPソフトでアップロード。
http://そのドメイン名/searchreplacedb2.php にアクセスすると置換プログラムを実行することができます。
※以下の操作でミスをすると重大なエラーが起きる可能性があります。必ずバックアップを取ってから行いましょう。以下の操作は自己責任でお願いします。
※バックアップはプラグインではなく MySQL Adminツールで直接取る方がいいかもしれません。ログインできない状態になった場合でもすぐに対処できるからです。なおプラグインでのバックアップでも WordPress を新規インストールすれば復元は可能です。
[Pre-populate the DB values ・・・] のチェックを入れ、[submit] をクリック。
1つ前の画面でチェックを入れていればデータが入っているはずなので、そのまま [Submit DB details] をクリック。
必要であればデータベースのテーブルを選択。1WordPress1DB で運用していれば全選択でOKです。
確認画面が出てくるので [OK] をクリック。
[Search for]欄に検索対象の文字列を入力。ドメイン名の置換なら現在のドメイン名を入力。http://等は不要。ただし、wwwあり、なしには注意。
[Replace with:]欄に置換する文字列を入力。ドメイン名の置換なら新しいドメイン名を入力する。
確認画面で表示されるので、[OK] をクリック。
これで置換が完了です。アップロードした searchreplacedb2.php はサーバーから忘れず削除しておきましょう。