Contents
概要
MariaDBを使用してデータベースサーバーを構築します。
前提条件
OS
CentOS Stream 8を使用します。
SELinux
有効です。無効にする場合はこちらを参照して下さい。
Firewalld
無効です。有効化する場合はこちらを参照して必要な許可設定をして下さい。
その他
本稿ではMariaDBの起動設定とrootパスワードの設定まで取り上げます。各アプリケーションからの利用は他の投稿に記載します。
標準ポート番号
TCP:3306 (MariaDB)
設定
インストール
MariaDBをインストールします。
[root@centos ~]# dnf install mariadb-server
サービス起動設定
MariaDBを起動します。
[root@centos ~]# systemctl enable --now mariadb.service [root@centos ~]# systemctl status mariadb.service
rootパスワード設定
まずはMariaDBにログインします。初期状態はrootパスワードが設定されていません。
[root@centos ~]# mysql -u root
rootパスワードを変更します。testpasswordが今回設定する仮のパスワードです。
MariaDB [(none)]> use mysql Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed MariaDB [(none)]> update user set password=PASSWORD("testpassword") where User='root'; Query OK, 4 rows affected (0.000 sec) Rows matched: 4 Changed: 4 Warnings: 0 MariaDB [(none)]> exit Bye
サービス再起動
MariaDBを再起動します。
[root@centos ~]# systemctl restart mariadb.service
ログイン確認
パスワード無しでログインできないことを確認します。
[root@centos ~]# mysql -u root
ログインできることを確認します。-pオプションは対話形式でパスワード入力ができます。
[root@centos ~]# mysql -u root -p
mysql_secure_installationは不要?
以前までMariaDBの初期設定に「mysql_secure_installation」を使用していたのですが、対話形式の為、自動化(Ansible等)と相性が良くありません。また、mysql_secure_installationは相当前から存在していますが、改めて現在での必要性を確認してみました。
mysql_secure_installationがしていること
こちらによるとmysql_secure_installationの機能は下記とのことです。
- rootアカウントのパスワードをセットすることができます。
- ローカルホストの外からアクセス可能なrootアカウントを削除することができます。
- 匿名ユーザアカウントを削除することができます。
- 匿名ユーザが既定でアクセス可能なtestデータベースを削除することができます。
MariaDBの初期状態とmysql_secure_installationの必要性
下記の結果の通り、CentOS8のMariaDBの初期状態では、①testデータベースが存在していない、②匿名ユーザーは存在していない、③ローカルホスト以外からアクセス可能なrootアカウントは存在しない、となっており、rootアカウントのパスワード設定だけ行えばmysql_secure_installationの必要性はありません。大分前のCentOSでは確かにtestデータベースがありましたが、最近では予め削除した状態で配布しているようです。
MariaDB [(none)]> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | +--------------------+ 3 rows in set (0.098 sec) MariaDB [(none)]> select user, host from mysql.user; +------+-------------+ | user | host | +------+-------------+ | root | 127.0.0.1 | | root | ::1 | | root | localhost | | root | centos | +------+-------------+ 4 rows in set (0.266 sec)