公開日:2026/1/25 0:00:00

AlmaLinux 10.1 セットアップメモ

Section 4.1 データベースサーバー構築編(MySQL)

About

MySQL のインストールと設定手順を残しています。

環境は、Section 1.1Section 1.3で作成したvirtualboxの環境で実行しています。 そのため、SELinuxは有効な状態で作業を進めています。

起動後、rootアカウントになって作業を進めます。

パッケージの確認

リポジトリに登録されているものからパッケージ名とバージョンを指定してインストールすることになります。 まずは、提供されているかどうかを調べます。

[root@localhost ~]# dnf search mysql
============================================ Name & Summary Matched: mysql =============================================
akonadi-server-mysql.x86_64 : Akonadi MySQL backend support
apr-util-mysql.x86_64 : APR utility library MySQL DBD driver
dovecot-mysql.x86_64 : MySQL back end for dovecot
exim-mysql.x86_64 : MySQL lookup support for Exim
freeradius-mysql.x86_64 : MySQL support for freeradius
golang-github-sql-driver-mysql-devel.noarch : MySQL driver for Go's database/sql package
libnss-mysql.x86_64 : NSS library for MySQL
lighttpd-mod_vhostdb_mysql.x86_64 : Virtual host module for lighttpd that uses MySQL
mysql-mmm.noarch : Multi-Master Replication Manager for MySQL
mysql-selinux.noarch : SELinux policy modules for MySQL and MariaDB packages
mysql8.4.x86_64 : MySQL client programs and shared libraries
(略)

[root@localhost ~]# dnf repoquery mysql8.4
mysql8.4-0:8.4.6-2.el10_0.x86_64
mysql8.4-0:8.4.7-1.el10_1.x86_64
[root@localhost ~]#

MySQLは、バージョン付きで管理しているようなので、バージョンまで入れたパッケージ名で進めていきます。

インストール

対象バージョンが有効になったのでインストールしていきましょう。

[root@localhost ~]# dnf -y install mysql8.4 mysql8.4-server
Dependencies resolved.
========================================================================================================================
 Package                                  Architecture       Version                        Repository             Size
========================================================================================================================
Installing:
 mysql8.4                                 x86_64             8.4.7-1.el10_1                 appstream             2.5 M
 mysql8.4-server                          x86_64             8.4.7-1.el10_1                 appstream              18 M
Installing dependencies:
 checkpolicy                              x86_64             3.9-1.el10                     appstream             366 k
 libicu                                   x86_64             74.2-5.el10_0                  baseos                 10 M
 libtirpc                                 x86_64             1.3.5-1.el10                   baseos                 94 k
 mariadb-connector-c-config               noarch             3.4.4-1.el10                   baseos                8.9 k
 mecab                                    x86_64             0.996-9.el10                   appstream             361 k
 mysql-selinux                            noarch             1.0.14-1.el10_0                appstream              37 k
 mysql8.4-common                          noarch             8.4.7-1.el10_1                 appstream              69 k
 mysql8.4-errmsg                          noarch             8.4.7-1.el10_1                 appstream             521 k
 policycoreutils-python-utils             noarch             3.9-1.el10                     appstream              45 k
 protobuf-lite                            x86_64             3.19.6-11.el10                 appstream             261 k
 python3-audit                            x86_64             4.0.3-4.el10                   appstream              69 k
 python3-distro                           noarch             1.9.0-5.el10                   appstream              51 k
 python3-libsemanage                      x86_64             3.9-1.el10                     appstream              81 k
 python3-policycoreutils                  noarch             3.9-1.el10                     appstream             2.1 M
 python3-setools                          x86_64             4.5.1-5.el10                   baseos                691 k
 python3-setuptools                       noarch             69.0.3-12.el10_0               baseos                1.4 M

Transaction Summary
========================================================================================================================
Install  18 Packages

(中略)

Complete!
[root@localhost ~]#

インストールが終わりました。

データの保存場所について

Databaseに記録された情報がディスク内のどこに保存されるか?その場所は変更できるのか?という事に対する対応方法については、SELinuxが有効になっているため複雑なことになっているのでここでの解説はしません。

SELinux コンテキスト、ラベルを適切に設定したり、それの永続化など考えると長くなってしまうので……

サービス起動とセキュリティ設定

サービスを起動してから、MySQL の mysql_secure_installation を使って設定するのですが、初期状態で、anonymous ユーザは存在せず、rootユーザはリモートアクセスを許可しておらず、test となずけられたDatabaseも、ユーザもない。 例外的にパスワードにルール(複雑性などの)を設定するか?というものがありますが、開発用でこれを設定してしまうと簡易なパスワード設定ができなくなってしまうので設定しないとなると、実質、rootユーザのパスワード設定のみとなります。

なので、mysqlコマンドを使って実行します。

まずはサービスを起動します

[root@localhost ~]# systemctl start mysqld

rootアカウントのパスワードは定番通り ALTER USER を使って変更します。

[root@localhost ~]# mysql -u root --execute "ALTER USER 'root'@'localhost' IDENTIFIED BY 'vagrant';"
[root@localhost ~]#

これ以降は、-p オプションをつけて実行することになります。

サービスの有効化

systemd を通じてサービスの有効化を行います。これでサーバー起動時に勝手にサービスがスタートします。

[root@localhost ~]# systemctl enable mysqld
Created symlink /etc/systemd/system/multi-user.target.wants/mysqld.service → /usr/lib/syst//system/mysqld.service.
[root@localhost ~]# 

別のサーバーからアクセスさせる場合の設定

初期設定では、外部からのアクセスが完全に禁止されています。 そのため許可するように設定を変更してみましょう。

[root@localhost ~]# cp --preserve=context /etc/my.cnf.d/mysql-server.cnf /etc/my.cnf.d/mysql-server.cnf.org
[root@localhost ~]# cat /etc/my.cnf.d/mysql-server.cnf.org \
| sed -E "/^\[mysqld\]/a character-set-server = utf8mb4" \
| sed -E "/^pid-file=.*$/a bind_address = *" \
> /etc/my.cnf.d/mysql-server.cnf
[root@localhost ~]# diff -cT /etc/my.cnf.d/mysql-server.cnf.org /etc/my.cnf.d/mysql-server.cnf
*** /etc/my.cnf.d/mysql-server.cnf.org  YYYY-mm-dd hh:ii:ss.000000000 +0900
--- /etc/my.cnf.d/mysql-server.cnf      YYYY-mm-dd hh:ii:ss.000000000 +0900
***************
*** 11,18 ****
--- 11,20 ----
        # instructions in http://fedoraproject.org/wiki/Syst/

        [mysqld]
+       character-set-server = utf8mb4
        datadir=/var/lib/mysql
        socket=/var/lib/mysql/mysql.sock
        log-error=/var/log/mysql/mysqld.log
        pid-file=/run/mysqld/mysqld.pid
+       bind_address = *

設定を変えたらサービスを再起動しましょう。

[root@localhost ~]# systemctl restart mysqld
[root@localhost ~]# 

ロールとデータベースを作成する

データベースにアクセスするためのユーザーと権限(ロール)とデータベースを作成します。

vagrant ユーザーがいるのでそのユーザー用のロールとを作成します。 phpMyAdminなどを使って作成するほうがわかりやすいので、初めて作成する場合はそちらをお勧め。

とりあえず、phpMyAdminでユーザーを作成した時のSQLを実行します。

まずは、ユーザーの作成。 vagrant ユーザーを作成して、ローカルとそれ以外からのアクセスを許可するまでを一本で。 パスワード入力が求められますが、-p—password=mysqlのrootアカウントのパスワード にすることで、警告されますが聞かれずに入れることができます。

[root@localhost src]# mysql -u root -p --execute "\
CREATE USER 'vagrant'@'%' IDENTIFIED BY 'vagrant'; \
GRANT USAGE ON *.* TO 'vagrant'@'%'; \
ALTER USER 'vagrant'@'%' REQUIRE NONE WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;"
Enter password:
[root@localhost src]#

次にデータベースを作成しつつ、権限(ロール)設定。vagrant データベースと 頭に vagrant_ とついたデータベースにアクセスできるようにします。

[root@localhost src]# mysql -u root -p --execute "\
CREATE DATABASE IF NOT EXISTS vagrant; \
GRANT ALL PRIVILEGES ON vagrant.* TO 'vagrant'@'%'; \
GRANT ALL PRIVILEGES ON \`vagrant_%\`.* TO 'vagrant'@'%';"
Enter password:
[root@localhost src]#

接続確認

mariadbコマンドを使ってアクセスします。

[vagrant@localhost ~]$ mysql -u vagrant -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 8.4.7 Source distribution

Copyright (c) 2000, 2025, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

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

mysql> \q
Bye
[vagrant@localhost ~]$

注意事項

Redhat 10 系では、MariaDBとMySQLのパッケージが競合する状態になっているため、どちらもインストールすることはできません。 おおよそ互換があるのでどちらかでいいと思いますが、どうしても同時に存在させたい場合はコンテナを使えというが回答となっています。

なお、本当に入らないのか確認したところ入りませんでした……

[root@localhost]# dnf install mariadb-server
Error:
 Problem: problem with installed package mariadb-(略)
(以下略)

こうなってしまうので、同居させたい場合は構成を再検討しましょう。