【樱花VPS】将WordPress的数据库迁移到外部服务器(数据库迁移篇)

首先

以下的操作已在前一篇文章中完成。

    • DBサーバの初期セットアップ

 

    • ローカル接続用のスイッチの作成

 

    • DBサーバへのCentOS7のインストール

 

    ローカルNWの設定

在这篇文章中,我们将实际进行数据库的迁移。

将mariadb安装到迁移用的DB服务器上。

$ sudo yum -y install mariadb-server mariadb

启动MariaDB并启用自动启动

$ sudo systemctl start mariadb
$ sudo systemctl enable mariadb

对于MariaDB的初始设置

$ sudo mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none): 
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n] Y
New password:             ⬅︎ passwordを入力(MariaDB Administrator Password)
Re-enter new password:       ⬅︎ passwordを再入力 
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] Y
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] Y
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] Y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] Y
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

设置MariaDB的字符编码

请参考此处以获取更详细的信息。

在设定之前的状态

$ mysql -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 10
Server version: 5.5.60-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> show variables like "chara%";
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

设置字符编码

$ sudo vi /etc/my.cnf

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
character-set-server=utf8 ← ココを追加する

重新启动MariaDB

$ sudo systemctl restart mariadb.service

设定后的状态 de

$ mysql -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.60-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> show variables like "chara%";
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

创建一个用于任务的用户和迁移用数据库。

$ mysql -u root -p

Enter password: ← 先程設定したMariaDBのadministrator passwordを入力
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 28
Server version: 5.5.52-MariaDB MariaDB Server

Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> CREATE DATABASE database_name;
Query OK, 1 row affected (0.01 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON database_name.* TO "database_username"@"localhost" IDENTIFIED BY "database_user_password"; 
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> exit
Bye

从已有的服务器上获取数据库的备份

$ mysqldump --single-transaction -u root -p databasename >backup_databasename ⬅︎databasenameとbackup_databasename書き換える
Enter password: 
$ ls
backup_databasename ⬅︎作成されたバックアップファイル

使用SCP协议将现有服务器上的备份文件传输到迁移用的DB服务器上。

尽管如此,如果按照步骤进行操作,可能会先进行公钥认证的设置,因此会出现以下错误。

$ scp -P **** /home/user/backup_databasename  user@192.168.X.X:/home/user/backup_databasename ⬅︎"user"と"backup_databasename"を書き換える ****はポート番号です。22なら指定は不要
Permission denied (publickey).

当我意识到我已经从想定的路径偏离了并且有点不太好的感觉时,我首先暂时采取了使用草率的方法将客户端(Mac)上的私钥通过scp命令复制到现有的服务器上来解决问题。

$ scp -P **** ~/.ssh/id_rsa user@111.222.333.444:~/.ssh/id_rsa ⬅︎****はポート番号です。22なら指定は不要

请再次执行下述操作应该是可行的。

$ scp -P **** /home/user/backup_databasename  user@192.168.X.X:/home/user/backup_databasename ⬅︎"user"と"backup_databasename"を書き換える ****はポート番号です。22なら指定は不要

让我们删除已放置在现有服务器上的私钥。

在DB服务器端执行备份恢复

我刚刚在SCP上传输的backup_databasename将进行还原。
database_username是在创建数据库时创建的工作用户。

 $ mysql -u database_username -p database < backup_databasename

更改Mariadb的设置

因为只有来自localhost的访问才被允许访问备份的数据库,所以需要将设置更改为允许来自本地其他主机的访问。

当我想到时出现了错误。这是什么情况。

$ mysql -u root -p 
Enter password: 
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

请参考这篇文章并解决问题。

$ sudo touch /tmp/mysql.sock
$ sudo chown username /tmp/mysql.sock ⬅︎usernameを書き換え(DBの作業用ユーザ)
$ systemctl restart mariadb.service 
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to manage system services or units.
Authenticating as: username
Password: 
==== AUTHENTICATION COMPLETE ===
$ mysql -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 167
Server version: 5.5.60-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> 

重新调整心态,将备份还原到本地主机上的数据库,以便可以访问。

MariaDB [(none)]> GRANT ALL PRIVILEGES ON databasename.* TO "username"@"192.168.%" IDENTIFIED BY "password"; ⬅︎databasename、username、passwordを書き換え(バックアップ元に合わせるといいです)
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> FLUSH PRIVILEGES; ⬅︎再読み込み
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> select user, host from mysql.user;
+------+-----------+
| user | host      |
+------+-----------+
| root | 127.0.0.1 |
| new! | 192.168.% |  ⬅︎追加された設定
| root | ::1       |
| root | localhost |
| user | localhost |
+------+-----------+
5 rows in set (0.00 sec)

MariaDB [(none)]> exit
Bye

重新启动MariaDB。

$ systemctl restart mariadb.service

在防火墙中添加MariaDB

$ sudo firewall-cmd --permanent --add-service=mysql
[sudo] username のパスワード:   ⬅︎作業用ユーザのPWを入力
success
$ sudo firewall-cmd --reload
success

在现有的服务器端更新WordPress的配置文件

编辑wp-config.php文件中关于MariaDB的信息。
※如果打开文件后日语部分乱码,请检查locale设置。

如果没有wp-config.php的编辑权限,请修改权限。

$ sudo chmod 600 /var/www/html/wp-config.php

根据先前在迁移用数据库服务器上创建数据库时的信息进行输入。
如果使用与现有服务器相同的信息进行创建,则无需编辑除了DB_HOST之外的部分。

$ sudo vi /var/www/html/wp-config.php

<?php
/**
 * WordPress の基本設定
 *
 * このファイルは、インストール時に wp-config.php 作成ウィザードが利用します。
 * ウィザードを介さずにこのファイルを "wp-config.php" という名前でコピーして
 * 直接編集して値を入力してもかまいません。
 *
 * このファイルは、以下の設定を含みます。
 *
 * * MySQL 設定
 * * 秘密鍵
 * * データベーステーブル接頭辞
 * * ABSPATH
 *
 * @link http://wpdocs.osdn.jp/wp-config.php_%E3%81%AE%E7%B7%A8%E9%9B%86
 *
 * @package WordPress
 */

// 注意:
// Windows の "メモ帳" でこのファイルを編集しないでください !
// 問題なく使えるテキストエディタ
// (http://wpdocs.osdn.jp/%E7%94%A8%E8%AA%9E%E9%9B%86#.E3.83.86.E3.82.AD.E3.82.B9.E3.83.88.E3.82.A8.E3.83.87.E3.82.A3.E3.82.BF 参照)
// を使用し、必ず UTF-8 の BOM なし (UTF-8N) で保存してください。

// ** MySQL 設定 - この情報はホスティング先から入手してください。 ** //
/** WordPress のためのデータベース名 */
define('DB_NAME', '任意のDB名');       ⬅︎DB名を変えた場合は変更

/** MySQL データベースのユーザー名 */
define('DB_USER', '任意のユーザ名');     ⬅︎ユーザ名が違う場合は変更

/** MySQL データベースのパスワード */
define('DB_PASSWORD', '任意のパスワード');  ⬅︎パスワードを変えた場合は変更

/** MySQL のホスト名 */
define('DB_HOST', '192.168.X.X');     ⬅︎localhostになっているのでDBサーバに設定したローカルIPをセット

/** データベースのテーブルを作成する際のデータベースの文字セット */
define('DB_CHARSET', 'utf8');

/** データベースの照合順序 (ほとんどの場合変更する必要はありません) */
define('DB_COLLATE', '');

 <<<略>>>

完成设置后,将此文件的权限更改为只读模式。

$ sudo chmod 400 /var/www/html/wp-config.php

只需要在浏览器中打开WordPress并确认能够正常显示就可以了。

我很累。

广告
将在 10 秒后关闭
bannerAds