MENU
カテゴリー
アーカイブ

MariaDB を別サーバー(コンテナ)に移動した

いままで3つの VM でいくつかの WordPress を動作させていた。何も問題はない。
が、MariaDB がいくつも動いているのはどうかということでデータベース専用の CT(コンテナ)を用意することにした。
同時に phpmyadmin に代えて MariaDB をGUI で管理できるツール(DBeaver)を使ってみた。

目次

MariaDB 専用 Server の準備

CT の準備

Proxmox の管理画面からポチポチと CT を用意する。テンプレートは使い慣れた ubuntu 22.04。ストレージは後から増やすことができるから、とりあえず 20GB で始める。

MariaDB のインストール

次のコマンドで MariaDB Server をインストールする。

$ sudo apt install mariadb-server

インストール直後の様子。sudo しないと root ログインはできない。

$ sudo mysql -u root
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 32
Server version: 10.6.11-MariaDB-0ubuntu0.22.04.1 Ubuntu 22.04

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)]> SELECT user,password,plugin, authentication_string from mysql.user;
+-------------+----------+-----------------------+-----------------------+
| User        | Password | plugin                | authentication_string |
+-------------+----------+-----------------------+-----------------------+
| mariadb.sys |          | mysql_native_password |                       |
| root        | invalid  | mysql_native_password | invalid               |
| mysql       | invalid  | mysql_native_password | invalid               |
+-------------+----------+-----------------------+-----------------------+
3 rows in set (0.001 sec)

MariaDB [(none)]> SHOW databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.001 sec)

MariaDB [(none)]> 

外部接続専用ユーザーの追加

IP アドレスが 192.168.1.0/24 から接続できるユーザー db-server を追加する。次のサイトが丁寧で分かりやすい。

MariaDB [(none)]> CREATE USER "db-server"@"192.168.1.%";
Query OK, 0 rows affected (0.009 sec)

MariaDB [(none)]> SELECT Host, User, authentication_string FROM mysql.user;
+-------------+-------------+-----------------------+
| Host        | User        | authentication_string |
+-------------+-------------+-----------------------+
| localhost   | mariadb.sys |                       |
| localhost   | root        | invalid               |
| localhost   | mysql       | invalid               |
| 192.168.1.% | db-server   |                       |
+-------------+-------------+-----------------------+
4 rows in set (0.001 sec)

MariaDB [(none)]> 

追加したユーザー db-server にパスワードを設定する。

MariaDB [(none)]> ALTER USER 'db-server'@'192.168.1.%' IDENTIFIED BY 'パスワード';
Query OK, 0 rows affected (0.009 sec)

MariaDB [(none)]> SELECT Host, User, authentication_string FROM mysql.user;
+-------------+-------------+-------------------------------------------+
| Host        | User        | authentication_string                     |
+-------------+-------------+-------------------------------------------+
| localhost   | mariadb.sys |                                           |
| localhost   | root        | invalid                                   |
| localhost   | mysql       | invalid                                   |
| 192.168.1.% | db-server   | *4FA1・・・・・・・・・・・・・・・・・・・・・  |
+-------------+-------------+-------------------------------------------+
4 rows in set (0.001 sec)

MariaDB [(none)]>

続いてデータベースの作成、削除など色々できるようにすべてのデータベースに対して権限を付与する。

MariaDB [(none)]> GRANT ALL ON *.* TO 'db-server'@'192.168.1.%';
Query OK, 0 rows affected (0.008 sec)

MariaDB [(none)]> SHOW GRANTS FOR 'db-server'@'192.168.1.%';
+-----------------------------------------------------------------------------------------------------------------------------+
| Grants for db-server@192.168.1.%                                                                                            |
+-----------------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO `db-server`@`192.168.1.%` IDENTIFIED BY PASSWORD '*4FA1・・・・' |
+-----------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.000 sec)

MariaDB [(none)]> 

さらに、/etc/mysql/mariadb.conf.d/50-server.cnf 中の bind-address をコメントアウトする。

#bind-address            = 127.0.0.1

これでとりあえず MariaDB 側の設定は終了。サービスを再起動しておく。

DBeaver のインストール

せっかく MariaDB 専用サーバーを用意するから、http サーバーが必要な phpmyadmin も使いたくない。でもターミナルから SQL を使いこなすような技量もないから、GUI で管理できるほうが嬉しい。

で、ググってみたら DBeaver が良さげだった(Windows 版もある)。
ただし、Ubuntu の Snap ストアからインストールするのはダメ。後で書くけど MariaDB データベースの dump/restore ができない。

準備

WordPress のデータベースを引っ越し(dump/restore)するために、作業用のノート PC に mariadb-client をインストールしておく必要がある。ないとどうなるか(できないか)試してみてもいい。

sudo apt install mariadb-client

DBeaver の入手とインストール

次のサイトから DBeaver Community 22.3.0 の deb パッケージをダウンロードする。

ダウンロードしたフォルダーで sudo apt install ./dbeaver-ce_22.3.0_amd64.deb でインストールする。

最初に起動すると次の画面になると思う。サンプルデータベースはいらない。
画像は GNOME-Shell のダークテーマが中途半端に適用されている様子。後で変更する。

初期設定画面1

MariaDB を選択して次に進む。

初期設定画面2

設定画面。Server host には CT のアドレスを入力する。Database はとりあえず存在している sys にしている。
ユーザー名は外部接続可能な db-server で、対応するパスワードを入力する。
続いてタブ「ドライバのプロパティ」をクリックする。

初期設定画面3

ドライバのプロパティ。まだ MariaDB のドライバファイルがないので強制ダウンロードする。

初期設定画面4

「終了」をクリックして初期画面になる。

初期設定���面5

中途半端なダークテーマ。

初期設定画面6

「ウィンドウ」の「設定」から「ユーザーインターフェース」の「外観」でテーマを選択する。

初期設定画面7

mariadb-client の設定

画面上部のメニュー「データベース」から「ドライバーマネージャー」をクリック。

ドライバーマネージャー

MariaDB を選択して「編集」をクリックする。
表示されるウィンドウが小さいため最大化して、隠れているタブ「ネイティブクライアント」をクリック。

ホームを追加

左下の「ホームを追加」で表示される画面から、mariadb-dump の存在するフォルダー「/usr/bin/」を選択する。このとき Snap 版だと ID その他を /usr/bin にできない。

引っ越し用の空っぽのデータベースを作る

画面左のデータベースのとろこで右クリックで、「新しく作る データベース」で引越し先となる空っぽのデータベースを作成する。

database 作成

ここまででデータベース引越し先 MariaDB の準備は終了。

データベースの dump / restore

dump

引っ越し元から dump する。が、もともと外部から MariaDB に接続できるユーザーはいないから、まずは前述のとおり、外部接続可能なユーザーを追加する。

どっちみち、MariaDB も phpmyadmin も最終的には削除するから、既に存在するユーザーの設定を変更しても良い。

引っ越し元のデータベースで右クリックして「ツール」の「Dump database」をクリックする。目的のデータベースが選択されていることを確認して次へ。

Expor

Output Folder を選択して「開始」をクリックすると Export が始まる。Settings は初期設定のままで大丈夫。

Expprt 開始
Export 終了

finished になったら窓を閉じる。「閉じる」ボタンはないけど「キャンセル」でもいい。

restore

続いて引越し先に dump したデータベースを restore する。
今度は「引越し先の」データベースで右クリックして「ツール」の「Restore database」から restore する。やっぱり終了ボタンはない。

wp-config.php の修正

次の箇所の database 接続情報を変更する。自分の場合は DB_USER と DB_PASSWORD と DB_HOST の3箇所。DB_NAME や table_prefix は変更していない。
念の為、wp-config.php はバックアップを残しておくほうが安心。

define('DB_NAME', 'jisaba.life');
/** MySQL データベースのユーザー名 */
define('DB_USER', 'db-server');
/** MySQL データベースのパスワード */
define('DB_PASSWORD', 'password');
/** MySQL のホスト名 */
define('DB_HOST', '192.168.1.110');

修正が終わったら jisaba.life に接続して正常に表示されていることを確認する。

最後に

対象の database の引っ越しを全て終えたら、引っ越し元の MariaDB は不要。phpmyadmin も sudo apt remove --purge して良い。

最初、Snap ソフトウェアで DBeaver をインストールして躓いた。
dump/restore は phpmyadmin よりかなり高速で、自鯖を管理するだけなら使用する機会は少ないけど便利かも。

コメント

コメントする

目次