MariaDBの設定

更新日:2022/01/02

CentOS8.4にMariaDBをインストールし、使えるようにします。

MariaDBのインストール

標準リポジトリに登録されているため、簡単にインストールできます。
以下のコマンドを実行するだけでOKです。

# dnf install mariadb-server mariadb mariadb-devel

OS起動時に自動起動するように設定しておきます。
そして、インストール直後は、mariadbが起動していないので、起動させます。

# systemctl enable mariadb
# systemctl start mariadb

MariaDBの初期設定

「mysql_secure_installation」というウィザード形式のコマンドがあります。
これを実行すれば、rootユーザーのパスワードの設定などが実行できます。
以下の設定では、rootユーザーで外部から接続を出来ないように設定しています。

[root@localhost ~]# 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): ←パスワードは未設定なので、enterキーを押す
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 ←インストール直後なのでパスワードが未設定。なのでYと回答し、パスワードをセットする
New password: ←MariaDBのrootユーザーのパスワードを入力(好きな文字列を入力)
Re-enter new 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 ←anonymousユーザーは不要なので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 ←MariaDBのrootユーザーはローカルからしか接続出来ないようにするのが正しいので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 ←testというテスト用のDBは、使わないので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 ←権限情報をリロードさせるために、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!
[root@localhost ~]#

文字コードの設定

日本語を扱う場合、設定しておきます。
これを設定しておかないと、絵文字などがおかしくなります。
(現在の実装では、UTF-8を指定すると最大3バイトまでしか持たないようになっているそうで・・・。4バイト使う文字を入力したときに、おかしなことになります。なので、4バイトまでちゃんと保持するutf8mb4を指定してあげます)。

「/etc/my.cnf.d/mariadb-server.cnf」を開き、[mariadb]の箇所に以下を追記します。
character-set-server = utf8mb4

~省略~
# This group is only read by MariaDB servers, not by MySQL.
# If you use the same .cnf file for MySQL and MariaDB,
# you can put MariaDB-only options here
[mariadb]
character-set-server = utf8mb4 ←追加
~省略~

さらには、「/etc/my.cnf.d/client.cnf」も、念のため修正しておく。

~省略~
# This group is not read by mysql client library,
# If you use the same .cnf file for MySQL and MariaDB,
# use it for MariaDB-only client options
[client-mariadb]
default-character-set = utf8mb4 ←追加

設定後、MariaDBを再起動しておきます。

# systemctl restart mariadb

DBとユーザーの作成

通常使用するユーザー(外部からのアクセスも可能)を追加します。
ついでに、テスト用のDBも作ってみます。

まず、MariaDBをインストールしたサーバのコンソール上から、以下のコマンドを実行し、MariaDBのコンソールに入ります。
以下を実行すると、パスワードを質問されるので、さきほど設定したrootのパスワードを入力します。

mysql -u root -p

以下のコマンドを実行し、「TestDB」というデータベースをサンプルとして作成します。
そして、どのホストからも使用可能な「TestUser1」というユーザーを追加します(パスワードは「password」)。
その後、TestUser1に、TestDB上の権限をすべて付与します。
外部から「TesetUser1」というユーザーを使い、「TestDB」にアクセスし、様々な操作が可能な状態となりました。
MariaDBのコンソールを抜けるには「quit;」でOKです。

> create database TestDB character set utf8 collate utf8_bin;
> create user TestUser1@'%' identified by 'password';
> grant all on TestDB.* to TestUser1@'%';

ファイヤーウォールの穴あけ

ファイヤーウォールに穴あけをしないと、外部からアクセスできません。
そのため、MariaDBが使用するポートを開けるため、firewalldの設定を変更します。
MariaDBは3306番のポートをTCPで使用しますので、以下のコマンドを実行します。

# firewall-cmd --add-port=3306/tcp --zone=public --permanent
# firewall-cmd --reload

ページの一番上へ