wordpressのサーバー移行をphpmyadminを使わずにターミナルでやってみた
普段web制作でフロントよりの仕事をしていますが、wordpressの構築や移行を行うこともよくあります。
wordpressのサーバー移行の場合、DBやファイル一式をそのまま移すことが多いのですが、DB移行する場合、MySQLを使用してエクスポートしたり、インポートしたりしていました。(ターミナルがあまり馴染みがなくGUIでやってしまいます…)
この間、そのMySQLに入れる権限が与えられなかったので、ターミナルだけでやってみました。
情報としては、
・サーバーのIP情報
・rootのパスワード
・mysqlのパスワード
・FTP情報
を知っている状況で、あとはインポートするsqlファイル(wordpress.sql)も貰っている状況です。
DB名をfoobarとして書いて行きます。
サーバーにログイン
1 2 3 | ssh root@xxx.xx.xxx.xx //又は ssh -p 22 root@xxx.xx.xxx.xx |
MySQLにログイン
1 | mysql -u root -p |
パスワードを求められるのでパスワードを記入します。
DB作成
wordpressのデータをインポートするためのDBを作成しましょう。
1 | create database foobar; |
これでDB作成完了です。
DB一覧を表示
作成したDBを確認したい場合は、
1 | show databases; |
で確認することができます。
ユーザーの追加と権限の設定
rootユーザーだとなんでもできてしまうようで、念のため別のユーザーを使うのが良さそうとのことで、
下記サイトの通り、練習がてらユーザーを追加してみました。
別にその辺り気にしないと言う方はここは飛ばしてもらって大丈夫かと思います。
[MySQL]データベースの作成、ユーザの追加と権限の設定 | 本日も乙
設定の情報を以下としておきます。
例)
ユーザー名:user
ホスト名:localhost
パスワード:password
1 | grant all privileges on foobar.* to user@localhostidentified by 'password'; |
設定の反映
ユーザーの追加と権限を変更したので、設定を反映しておきます。
1 | flush privileges; |
MySQL切断
SQLファイルをインポートするので、一旦MySQLを切断します。
1 | quit |
ちなみに追加したアカウントでログインする場合は以下になります。
1 | mysql -uuser -ppassword |
SQLファイルをインポート
本題のSQLファイルをインポートしていきますが、
まずはwordpress.sqlをrootディレクトリにアップロードする必要があります。
今回はFTPでアップロードしました。
そしてそのwordpress.sqlを、foobarにインポートします。
1 | mysql -h localhost -u user -p foobar < wordpress.sql |
パスワードはDBのパスワードを入力
※mysqlは切断した状態でrootディレクトリの位置で実行してください。
ちなみに、SQLファイルのエクスポートもターミナルで行う場合は、
下記サイトを参照下さい。今回私も参考にさせて頂いたサイトになります。
ターミナルから行うWordPressデータベースのエクスポートと復元の方法 | memocarilog
wp_optionsのsiteurlとhomeのURLを変更する
無事インポートできたら、wp_optionsのsiteurlとhomeのURLを新しいURLに変更します。
まず、MySQLへログインして、foobarまで移動します。
MySQLのログインは上述している通りで、
ログイン後、
1 | use foobar; |
でfoobarのDBに移動し、
1 2 | update wp_options set option_value='http://xxx.xx.xxx.xx/' where option_name='siteurl'; update wp_options set option_value='http://xxx.xx.xxx.xx/' where option_name='home'; |
とすればOKです。
http://xxx.xx.xxx.xx/の箇所が変更したい新しいURLになります。
確認したい場合は、
1 | SELECT * FROM wp_options; |
で確認することができます。
マルチサイトの場合
マルチサイトでいくつかサイトがある場合は、さらにwp_siteとwp_blogsにあるURLも変更する必要があります。
1 2 | update wp_blogs set domain='xxx.xx.xxx.xx' where domain='yyy.yy.yyy.yy'; update wp_site set domain='xxx.xx.xxx.xx' where domain='yyy.yy.yyy.yy'; |
xxx.xx.xxx.xxは新しいURL
yyy.yy.yyy.yyは古いURL
以上で終わりになります。
ターミナルは自分で必要な入力をしないと情報が一切見れないので慣れないですが、
慣れたらやはりGUIでやるより素早く出来るのかなという印象です。
今後ターミナルを臆せず使用していきたいですが、使っていたら慣れるんでしょうか…
頑張ります。
Author Profile
スターフィールド編集部
SHARE