MariaDB 10
WordPressはMariaDB 10のデータベース(DB)にページを保存しており,2つ目のサイト構築にも専用のDBが必要である.
今回は,既存のuser1が持っているデータベース(DB1)をphpMyAdminからexportしてDB1をダウンロード,新しいuser2で作成したDB2にimport して,これをSite-2用のデータベースとして修正し稼働できることを確認する.同時にphpMyAdminの使い方の習得を並行して行った.
以下のphpMyAdminで行う操作は,慎重に行ってください.
特に置換を実施する際,先に検索でヒットするテーブルやレコードを確認しておき,その後に,置換の作業をするようにすれば理解しながら進められます.
既存DB1のexport
- phpMyAdminにuser1(root権限)でログイン
- site-2用のDB1をexportしてsql形式でdownloadしておく
- ログアウト
新しいuserとDBの作成
- phpMyAdminに既存のuser1(root権限)でログイン
- 新しくuser2を作成
- 上にあるタブの”権限”で表示される”新規作成”
- ユーザーと同名のデータベース作成、グローバル権限なし
- 実行
- 新しくDB2 (文字コードはutf8mb4_unicode_ci)を作成
- user2にDBのアクセス権限を与える
- DB2をクリックして選択
- タブメニューの”権限”クリック
- ユーザアカウントを追加するをクリック
- UID/PD設定
- データベースDB2へすべての権限を与える」をチェック
- 実行
- sqlの場合
- GRANT ALL PRIVILEGES ON DB2.* TO user2’@’localhost’;
- FLUSH PRIVILEGES;
- DB2を選択
- メニューのimportを選択
- 先にexportしたDB1を選択
- 実行(DB2にDB1(の内容:全ての表)をimportする)
siteurlとhomeのurlの修正
- site 2用のDB2をクリック
- wp_optionsテーブルをクリック
- option_nameカラムにsiteurlか,homeがあるレコードを探す.両方ともに以下の処理をする
- option_valueにあるurlを確認する
- もしもwordpressがインストールされているfolder名が含まれていれば,そのfolder名を削除する(web stationで明示しているのでここには必要ない)
| 項目 | 説明 |
|---|---|
siteurl | WordPress本体(wp-login.php, wp-admin, プラグインなど)が存在するインストール先URL |
home | サイト訪問者に表示されるホームURL(TOPページ) |
<wp_posts表の修正>
web station -> web service -> Edit Native Script Language Website -> Document rootには、wordpressが置かれているfolderを明示的に指定しているので,DB上で設定する必要はない.
wp_postsには投稿のguidカラムがあり,そこには、”https://harikiri.diskstation.me/myblog/?p=1″のように一意にidが設定されている.このままでもサイトは稼働するが,site 2の投稿idではないので,site 2用に修正する。投稿数が多いがphpmyadminの置換機能で正しい値に一括置き換えを行う.
- site 2で使用しているDB2をクリック
- DBの横にある「+」をクリック
- 全てのテーブルが表示される
- テーブルwp_postsをクリックしてレコードを表示させる
- タブメニューの「検索」をクリック
- 表示された「検索と置換」ボタンをクリック
- 検索条件に,”/site 1のurl/<folder名>”を入力する
- 置換文字列に,”site 2のurl”を入力する
- (注: folder名は必要ない)
- カラムに,”guid”を選ぶ
- 実行
- 置換する投稿のリストが表示される
- 問題なければ,”置換”ボタンを押す
- 以上
挿入内部リンクの修正
page(固定ページ)およびpost(投稿)には内部画像のリンクがあるとむ思う.もしも,ベージの編集画面でリンクが外れてしまった場合は,リンクのアドレスの修正が必要になる.
編集画面でpostを開いた時に張り付けていた画像が表示されない場合はリンクが切れている
原因の一つは,旧サイトのsiteurl : aaa.bbb.ccc/ddd, 及びhome : aaa.bbb.ccc,新サイトのsiteurlとhomeを同一にした場合,投稿内で張り付けていた画像のリンクがきれてしまう.
原因は,画像のあるurlにはdddを含んだリンクとなっているはずで,編集画面のコードエディターに切り替えて確認することができる.
対処 :
以下sqlコードをphpMyAdminにログインしサイトDBに対して実行する.実行前にはDBをexportしておく.その前に事前に対象となるレコードを確認しておく.
事前確認: 旧サイトでの画像が保管されていたリンク存在検査(sqlコード)
SELECT ID, post_title
FROM wp_posts
WHERE post_content LIKE '%/myblog/wp-content/uploads/%';
置換 : sqlコードの実行により置換する
- 旧ディレクトリリンク(%https://aaa.bbb.ccc/ddd%)を含むコンテントを取り出し(where),
- https://aaa.bbb.ccc/dddを
- https://aaa.bbb.cccに置換する.
UPDATE wp_posts
SET post_content = REPLACE(post_content, 'https://aaa.bbb.ccc/ddd', 'https://aaa.bbb.ccc')
WHERE post_content LIKE '%https://aaa.bbb.ccc/ddd%';
#具体的なコード
UPDATE wp_posts
SET post_content = REPLACE(post_content, 'https://harikiri.diskstation.me/myblog/wp-content/uploads/', 'https://harikiri.diskstation.me/wp-content/uploads/')
WHERE post_content LIKE '%/myblog/wp-content/uploads/%';
note: "%" の意味(LIKE句におけるワイルドカード)
| 書き方 | 意味 |
|---|---|
%文字列% | 文字列を含む(前後に任意の文字列があってもOK) |
文字列% | 文字列で始まる |
%文字列 | 文字列で終わる |
その他の表
その他の表にもwordpressに導入しているpluginなどによっては,前述の処理が必要な場合があると考えられる.
必要に応じて確認して修正する.