WordPressのテーブルプリフィックスを変更する

wp-blue-logo-150ブログをCORESERVERへ引っ越したらWordPressの管理画面に入れなくなってしまった。ログイン画面は表示されるけどIDとパスワードを入れてサブミットすると「このページにアクセスするための十分なアクセス権がありません」と返ってくる。最初はパーミッションの問題かと思って調べてみたけど、とくにおかしな設定はない。

グーグル先生に問い合わせてみたら、どうも引っ越しに伴いWordPressのテーブルプリフィックスを変更したことが原因だったようだ。

WordPress のテーブルプレフィクスを変更する時の注意点 | バシャログ

テーブルプリフィックスの変更はwp-config.phpを修正して、MySQL内のテーブル名を変更すればOKと思っていたけど、実はテーブル名の情報は「wp_options」テーブルの中の「option_name」カラム、「wp_usermeta」テーブルの中の「meta_key」カラムにも入っていたらしい。そこに旧テーブル名でアクセス権に関する情報が入っていたため、上記エラーが出ていたようだ。

うちの環境では上記以外にもプラグインが作った(と思われる)データが「wp_usermeta」テーブルの「meta_key」カラムに入っていたので、あわせて新しいテーブルプリフィックスに変更しておいた。これでやっとブログが更新できるようになった次第である。

CORE SERVERに引っ越した

自宅のサーバー、Mac mini 2005が不調。もともとのスペック不足もありリプレイスも考えたが、金もないし世話するのも面倒くさくなり、レンタルサーバーを借りることにした。ドメイン管理はバリュードメインなので、安いしコアサーバーでいいや。ということで引越しの覚書を書いておく。

引越し元の作業

  1. 引越し元から引越し先へWPのファイルをアップロード
    必要に応じてwp-config.phpの内容を変更
  2. WPのDBをダンプしてコアサーバーへアップロード
    mysqldump –u ユーザー名 –p old_wordpress_db > dump.sql
    データの中に引越し元のURIが絶対パスで書かれている事があるので、テキストエディタで開いて、引越し先のURIになじむ様に置換をしてからアップロードする

引越し先の作業

  1. コアサーバーの管理画面でMySQLのDBを作成
  2. dump.sqlを新たに作ったDBへインポート
    mysql –u ユーザー名 –p new_wordpress_db < dump.sql

各種設定作業

  1. バリュードメインの管理画面でDNSレコードを更新
    DNSに登録してあるIPアドレスを引越し元から引越し先のIPに変更
  2. コアサーバーの管理画面で引越し先サーバーにドメイン名を登録
    DNSの更新が反映されないとこれができない。時間が解決するのを待つのみ、私の場合は小1時間。

ちょっとつまずいたのはsshでログインする時、コアサーバーにクライアントを登録しておかないとログインできないこと(これも反映されるまで時間がかかる)。

ログインできても今度はlsやcdすら使えない。Google先生に訊いてみたら、デフォルトは機能制限がついたrbashとか言うshellになっているらしい。そこで.bashrcに以下を書いてルートに置けば、bashが使える。

if test $BASH == “/bin/rbash”
then
/bin/bash
fi

まあ少なくともMac miniよりは快適になった。プロバイダに払っていた固定IPのオプション料金は800円はなくなるし、障害が出ても中の人が対応してくれるし、この機能とレスポンスで200円/月(1年契約の場合)なら全然OKですよ。

MySQLで文字列の一部を置換

恥ずかしながら、MySQLでカラムの中の特定の文字列を置換する方法を初めて知ったのでメモ。テーブル”table”の中のカラム”column”の中に含まれる”abc”を”123″に変換するにはREPLACE関数を使って以下の通り実行する。

mysql> UPDATE table SET column = REPLACE(column, 'abc', '123');

今までPHPの関数を使ったり、テキストに書き出してCotEditorで置換したりとトホホな事をやっていたのは秘密だ。