データベース MariaDB インストールFreeBSD

FreeBSD サーバーに MariaDB をインストールして WordPress 用に設定をする.
mariadb_install

MySQLからMariaDB

MySQLがオラクルに買収されて、更なる進化が期待されています.

しかし、一般ユーザーが扱うのであればMySQLは遥か遠くに進んでいるように感じます.

簡単、気軽に扱えるデータベースと考えると、MySQLから分離したMariaDBの方が良いのかもしれません.

今回は、FreeBSD12サーバーのWordPressで使用するデータベースをMariaDBをインストールして使うことにしました.
基本的な使い方は、MySQLと変化なし.

FreeBSD12のpkgからMariaDB10.5をインストール

				
					# pkg search mariadb 最新のmariadbをpkgで検索してみる

mariadb-connector-c-3.1.10 MariaDB database connector for C
mariadb-connector-odbc-3.1.11 MariaDB database connector for odbc
mariadb103-client-10.3.31_1 Multithreaded SQL database (client)
mariadb103-server-10.3.31_1 Multithreaded SQL database (server)
mariadb104-client-10.4.21_1 Multithreaded SQL database (client)
mariadb104-server-10.4.21_1 Multithreaded SQL database (server)
mariadb105-client-10.5.12_1 Multithreaded SQL database (client)
mariadb105-server-10.5.12_1 Multithreaded SQL database (server)
				
			

最新版はmariadb105でした.

pkg で mariadb105-server をインストールします.

				
					# pkg install mariadb105-server
				
			
				
					New packages to be INSTALLED: binutils: 2.37_1,1 gcc10: 10.3.0 gettext-runtime: 0.21 gmp: 6.2.1 indexinfo: 0.3.1 libedit: 3.1.20210216,1 libiconv: 1.16 mariadb105-client: 10.5.12_1 mariadb105-server: 10.5.12_1 mpc: 1.2.1 mpfr: 4.1.0_1 readline: 8.1.1 unixODBC: 2.3.9 Number of packages to be installed: 13 The process will require 552 MiB more space. 97 MiB to be downloaded.
				
			

結構大きなサイズです.

気が利いていてmariadb-clientも同時にインストールされたので、手間が省けました.

構成ファイルは/ usr / local / etc / mysql、
および/usr/local/etc/mysql/conf.d。
/var/db/mysql/my.cnfを使用しなくなりました

ログとPIDファイルは/ var / db / mysqlにありません。

インストールのメッセージには、上記のようなことが書かれていました.

これまでの mySQL とファイルの場所が移動になったみたいです.

MariaDBを動作させる

下記の2つのコマンドで/etc/rc.confにmysql-server_enable=”YES”と記入してmysql-serverをスタートさせる.

一番最初のmysqlサーバーのスタートは、データーベースディレクトリにファイルと書き込むために少々時間を要します.

				
					#service mysql-server enable
#service mysql-server start
				
			

動作確認をしてみると、

				
					# ps ax | grep mariadb
3466 - Is 0:00.02 /bin/sh /usr/local/bin/mariadbd-safe --defaults-extra-f
3587 - I 0:00.26 /usr/local/libexec/mariadbd --defaults-extra-file=/usr/
				
			

ここでは、mariadbというプロセス名でした.(mysqlじゃないのですね)

MariaDBのルートパスワードを設定する

mysqlから派生したMariaDBも、mysqlのrootパスワードの設定は、下のコマンドを使用するようです.

少し質問内容が異なるのは、バージョンによるものかどうかわからないが、mysqlで設定する内容とMariaDBの内容は、異なっていることに注意したい.

				
					# mysql_secure_installation
				
			
Enter current password for root (enter for none): エンター・リターンキー 
Switch to unix_socket authentication [Y/n] Y (unix_sockが安全なようです) 

Change the root password? [Y/n] Y(nと答えるとFreeBSDのrootのパスワードだが、新しいパスワードにするために Y にしよう)

Newpassword: **********       (新しいパスワードを入力)
Re-enter new password: ********** (もう一度同じパスワードを入力) 
Password updated successfully! 
Reloading privilege tables..
 ... Success! 

Remove anonymous users? [Y/n] Y 

Disallow root login remotely? [Y/n] Y 

Remove test database and access to it? [Y/n] Y 

Reload privilege tables now? [Y/n] Y

注意)FreeBSDのphpMyAdominをpkgでインストールして使用する場合は、

Switch to unix_socket authentication [Y/n] n
Change the root password? [Y/n] Y

この2つ質問のに注意したほうが良いだろう、というのは、phpMyAdminのデフォルトの設定ファイルは、TCP socketのようだし、mysqlのrootのパスワードの設定をしないと受け付けない仕様のようです.

ログインしてみる

mysqlにログインしてみる. ( password : 上で登録したパスワード)

				
					#mysql -u root -p 
Enter password: ********** 

root@localhost [(none)]> 
				
			

せっかくログインしたので文字コードを確認して見みると、

				
					root@localhost [(none)]>  show variables like 'character_set%';
+--------------------------+----------------------------------+
| Variable_name            | Value                            |
+--------------------------+----------------------------------+
| character_set_client     | latin1                           |
| character_set_connection | latin1                           |
| character_set_database   | latin1                           |
| character_set_filesystem | binary                           |
| character_set_results    | latin1                           |
| character_set_server     | latin1                           |
| character_set_system     | utf8                             |
| character_sets_dir       | /usr/local/share/mysql/charsets/ |
+--------------------------+----------------------------------+
root@localhost [(none)]> exit
				
			

ラテン語な文字が標準なんですね.

WordPressで標準の日本語文字コードは、UTF8が推奨されているみたいなので、

日本語文字コードへ変更

2つの設定ファイル( server.conf , client.conf )に文字コードを追記するだけで、文字コードの変更ができるようです.

書き込む場所と、書き込む内容が少し違っているので注意したい.

				
					# vi /user/local/etc/mysql/conf.d/server.cnf
				
			
				
					[mysqld]

character-set-server=utf8mb4  文字コードを追加
				
			
				
					# vi /user/local/etc/mysql/conf.d/client.cnf
				
			
				
					[client]

default-character-set = utf8mb4  文字コード追加
				
			

書き加えたら、MariaDBの再起動

				
					# service mysql-server restart
				
			

先ほどと同じように、mysql -u root -p 

				
					#mysql -u root -p 
Enter password: ********** 
				
			

でログインして文字コードを見ると

				
					root@localhost [(none)]> show variables like 'character_set%';
+--------------------------+----------------------------------+
| Variable_name            | Value                            |
+--------------------------+----------------------------------+
| character_set_client     | utf8mb4                          |
| character_set_connection | utf8mb4                          |
| character_set_database   | utf8mb4                          |
| character_set_filesystem | binary                           |
| character_set_results    | utf8mb4                          |
| character_set_server     | utf8mb4                          |
| character_set_system     | utf8                             |
| character_sets_dir       | /usr/local/share/mysql/charsets/ |
+--------------------------+----------------------------------+
8 rows in set (0.002 sec)
				
			

日本語に使われるutf8mb4に文字コードが変更できました.

WordPress で日本語を扱う時は、SQLの設定する文字コードに注意が必要だそうです.

my.cnf ( 変更なし )

my.cnf の内容を覗いてみると、client-server の接続設定が書かれているようです.
両刀使いか??

				
					/usr/local/etc/mysql # less my.cnf
				
			
				
					/usr/local/etc/mysql # less my.cnf
#
# This group is read both by the client and the server
# use it for options that affect everything, see
# https://mariadb.com/kb/en/configuring-mariadb-with-option-files/#option-groups
#
[client-server]
port = 3306
socket = /var/run/mysql/mysql.sock
#
# include *.cnf from the config directory
#
!includedir /usr/local/etc/mysql/conf.d/
				
			

これまでのMySQLと比べると、my.cnf は簡素な設定ファイルになりました.
最後の行に includedir とあるので、conf.d/にあるファイルを読みに行っているようです.
ファイルを分割したのですね.

conf.d/server.cnf ( 変更なし )

my.cofの最後に書かれていた includedir を見てみましょう.

				
					#less usr/local/etc/mysql/conf.d/server.cnf
				
			
				
					#
# Options for specific server tools
#
[mysqld]
user = mysql
# port = 3306 # inherited from /usr/local/etc/mysql/my.
cnf
# socket = /var/run/mysql/mysql.sock # inherited from /usr/local/etc/mysql/my.cnf
bind-address = 127.0.0.1
basedir = /usr/local
datadir = /var/db/mysql
net_retry_count = 16384
log_error = /var/log/mysql/mysqld.err
# [mysqld] configuration for ZFS

続くーーーー
				
			
このファイルで、php-fpmと連携する方法
    1. port = 3306
    2. socket = mysql.sock

を#コメントアウトして選択するようですが.

しかし、このバージョンで pkg インストールした時は、ここは変更しなくても、phpとの連携は問題ありませんでした.

FreeBSDのデフォルトは、mysql.sock を使ってアプリ間の、やりとりを観察しているようです.

unix socket は オプション -u を使って

				
					# sockstat -u mysql  
mariadbd 4139 20 stream /var/run/mysql/mysql.sock
				
			

tcp4 socketは、オプション -4 を使って

				
					# sockstat -4 mysql  
mariadbd   4139  19 tcp4   127.0.0.1:3306        *:*
				
			
FreeBSDのMariaDBのデフォルト設定は、TCP4 UNIXソケットどちらも動いている?みたいです.

このファイルは、確認だけで変更なしで動作しました.

port = 3306 は、他のサーバーから使用しないのならば、停止することも考慮したほうが良いかもしれません.

一台のサーバーで全てのサーバーソフトを連携させるのであれば、socket = mysql.sock だけを使ったほうが安全かもね.

unix socketを使う設定

				
					/usr/local/etc/mysql # less my.cnf
				
			

# port = 3306 をコメントアウト

				
					/usr/local/etc/mysql # less my.cnf
#
# This group is read both by the client and the server
# use it for options that affect everything, see
# https://mariadb.com/kb/en/configuring-mariadb-with-option-files/#option-groups
#
[client-server]
# port = 3306
socket = /var/run/mysql/mysql.sock
#
# include *.cnf from the config directory
#
!includedir /usr/local/etc/mysql/conf.d/
				
			
				
					#less usr/local/etc/mysql/conf.d/server.cnf
				
			

socket = /var/run/mysql/mysql.sock の # コメントアウトを外す

				
					#
# Options for specific server tools
#
[mysqld]
user = mysql
# port = 3306 # inherited from /usr/local/etc/mysql/my.
cnf
socket = /var/run/mysql/mysql.sock # inherited from /usr/local/etc/mysql/my.cnf
bind-address = 127.0.0.1
basedir = /usr/local
datadir = /var/db/mysql
net_retry_count = 16384
log_error = /var/log/mysql/mysqld.err
# [mysqld] configuration for ZFS

続くーーーー
				
			

同一サーバー内で動作させるのであれば、unix socket で接続させた方がパフォーマンスが高いと言われているので、上記の設定に変更して、

# service mysql restart

すれば、設定が反映される.

これで、MariaDBのインストールと設定の準備はOKです.

FreeBSDのpkgでインストールと設定も注意して行えば難しくないと思います.

 

phpMyAdminを使うときの注意

MariaDB(mysql)を簡単に扱うためにphpMyAdminをインストールしたほうが簡単にデータベースを扱えると思います.
web画面から操作できるということは、他人がインターネットでアクセスできる可能性があるので、セキュリティ上問題になるので、選択はユーザーに任せたいのですが.

ただ、MariaDBをphpMyAdminを扱うのであれば、

				
					# mysql_secure_installation

Change the root password? [Y/n] Y
				
			

の設定で、必ず、mysqlのrootパスワードの設定 ( Change the root password? [Y/n] Y ) をすることが必要のようです.

データベースファイルの在処

FreeBSD で MariaDB のデータベースの所在は、mysql と同様 /var/db/mysql にありました.

ログとPIDファイルは/ var / db / mysqlには、なくなりました.

				
					# ls -l  /var/db/mysql

-rw-rw----  1 mysql  mysql     106496 Dec 29 08:23 aria_log.00000001
-rw-rw----  1 mysql  mysql         52 Dec 29 08:23 aria_log_control
drwx------  2 mysql  mysql         37 Nov 26 23:37 bad
drwx------  2 mysql  mysql          3 Oct 23 17:45 fbsd
-rw-r-----  1 mysql  mysql      14786 Nov 16 21:04 ib_buffer_pool
-rw-rw----  1 mysql  mysql  100663296 Dec 29 08:56 ib_logfile0
-rw-rw----  1 mysql  mysql   79691776 Dec 29 08:24 ibdata1
-rw-rw----  1 mysql  mysql   12582912 Nov 28 22:21 ibtmp1
-rw-rw----  1 mysql  mysql          0 Oct 18 12:23 multi-master.info
drwx------  2 mysql  mysql         90 Oct 18 12:23 mysql
drwx------  2 mysql  mysql          3 Oct 18 12:23 performance_schema
drwx------  2 mysql  mysql         41 Oct 28 10:40 phpmyadmin

				
			

エラーログ mysqld.err は /var/log/mysql に変更になりました.

				
					# ls -l /var/log/mysql/mysqld.err

-rw-rw----  1 mysql  mysql  21332 Dec 17 14:06 /var/log/mysql/mysqld.err
				
			

動作不良の時には、mysql.err の内容を確認しましょう.

tail -f コマンドを使うと最後から継続してみることができます.

他のPC からサーバーに SSH で複数ウインド接続して、エラーログを見ながら動作確認が可能になります.

				
					 # tail -f /var/log/mysql/mysqld.err
 
2021-12-16 17:41:19 227763 [Warning] Aborted connection 227763 to db: 'mndks' user: 'wpadmin' host: 'localhost' (Got an error writing communication packets)
2021-12-16 18:09:50 228061 [Warning] Aborted connection 228061 to db: 'mndks' user: 'wpadmin' host: 'localhost' (Got an error reading communication packets)

				
			

MariaDB 起動に失敗した場合

MariaDB の起動

# service mysql-server start

MariaDB の起動の確認

# ps ax | grep mariadb
3466 – Is 0:00.02 /bin/sh /usr/local/bin/mariadbd-safe –defaults-extra-f
3587 – I 0:00.26 /usr/local/libexec/mariadbd –defaults-extra-file=/usr/ 

前記しましたが、

# ps ax | grep mariadb

でデーモンが動作していない場合は、なんらかの原因があります.

その場合の原因を探る方法は、エラーメッセージが

/var/log/mysql/mysqld.err

に出力されるので、tail コマンドでエラーの原因を探してみましょう.

tail コマンドは、最後の行を簡単にみることが出来るので、ログを読む時に便利なのでぜひ覚えておきましょう.

				
					# tail -n 20 /var/log/mysql/mysqld.err
				
			

tail コマンド ( 最後の行からテキストを表示するコマンド ) の説明

-n : 行数

この場合、mysqld.err に書かれている最後の 20 行を表示します.

				
					# tail -f /var/log/mysql/mysqld.err
				
			

tail コマンド ( 最後の行からテキストを表示するコマンド ) の説明

-f : リアルタイムに追記を表示します.

この場合、mysqld.err に追記される状態を監視することができます.

tail -f の動作を終了するときは、 キーボードから CTL + C を押します.

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

もくじ