MariaDBのインストール【AlmaLinux 8】

MariaDBをインストールします。

1. MariaDBリポジトリの追加

MariaDB Foundationにリポジトリのジェネレータツールがあるので、それを利用します。
AlmaLinux固有のものはないので、ここでは、Redhat EL 8用のものを利用します。
なお、最終行に「enabled=0」を追加しておきます。
# vi /etc/yum.repos.d/MariaDB.repo
# MariaDB 10.10 RedHat repository list - created 2023-02-01 05:34 UTC
# https://mariadb.org/download/
[mariadb]
name = MariaDB
baseurl = https://ftp.yz.yamagata-u.ac.jp/pub/dbms/mariadb/yum/10.10/rhel8-amd64
module_hotfixes=1
gpgkey=https://ftp.yz.yamagata-u.ac.jp/pub/dbms/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck=1
enabled=0

2. インストール

MariaDBリポジトリからインストールします。
# dnf --enablerepo=mariadb install MariaDB-server MariaDB-client

3. 初期設定

※設定ひな型ファイルは、10.3.2以降なくなりました。
公式では、以下のように発表されています。
This is intentional. We set generally useful defaults in the server. Configuration files are for the end user to modify the defaults, not for us to set them.(これは意図的なものです。 一般的に便利なデフォルトをサーバーに設定します。 構成ファイルは、エンドユーザーがデフォルトを変更するためのものであり、設定するためのものではありません。)

MariaDBのデフォルト値から変更する部分のみ [mysqld] セクションに記述します。
# cp /etc/my.cnf.d/server.cnf{,.default}
# vi /etc/my.cnf.d/server.cnf
[mysqld]
innodb_data_home_dir = /var/lib/mysql/
innodb_log_group_home_dir = /var/lib/mysql/
 
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
 
expire_logs_days = 30
 
max_allowed_packet=128M
 
#  Error log
log_error="mysqld.log"
log_warnings=1
 
#  Query log
general_log = 0
general_log_file="sql.log"
 
#  Slow Query log
slow_query_log = 0
slow_query_log_file="slow_query.log"
log_queries_not_using_indexes
log_slow_admin_statements
long_query_time=5
 
[client]
default-character-set=utf8mb4
general_log:「0」:ログを出力しない、「1」:ログを出力する
slow_query_log:「0」:ログを出力しない、「1」:ログを出力する

※「Query log」や「Slow Query log」を有効にすると、ファイルサイズがかなり大きくなる可能性がありますので、必要時のみ有効にして下さい。

■collation-server
utf8mb4_bin 英字の大文字小文字を含めて、すべて区別。
utf8mb4_general_ci 英字の大文字小文字は区別しない。他は全て区別。
utf8mb4_unicode_ci 大文字小文字/全角半角を区別しない。

(3) MariaDBの起動
設定が完了したら、MariaDBのサービスを起動します。
# systemctl start mariadb.service

(4) 自動起動設定
サーバを再起動した場合に自動的にサービスが起動するようにします。
# systemctl enable mariadb.service

(5) mysql_secure_installationの実行
MySQLのセキュリティを向上させるために「mysql_secure_installation」を実行します。
# /usr/bin/mysql_secure_installation
※10.6から、コマンドの名前が「mariadb-secure-installation」に変更されました。
# /usr/bin/mariadb-secure-installation

■現在のrootパスワードの入力
現在のrootのパスワードを入力します。
Enter current password for root (enter for none):
インストール直後は空白なので、そのまま[Enter]キーを押します。

■unix_socket認証への切り替え
パスワード認証からUnix Socket認証に切り替えるかどうかの質問です。
Switch to unix_socket authentication [Y/n]
従来通りのパスワード認証にするので、「n」を入力します。

■rootパスワードの設定
rootパスワードを変更(設定)するかどうかの質問です。
Change the root password? [Y/n]
rootパスワードを設定するので、「Y」と入力します。
New password:
Re-enter new password:
新しいパスワード、および確認のため再度同じパスワードを入力します。

■匿名アカウントの削除
パスワードのない匿名アカウントを削除するかどうかの質問です。
Remove anonymous users? [Y/n]
削除するので「Y」を入力します。

■rootアカウントのリモートログインの不許可
Disallow root login remotely? [Y/n]
rootアカウントのリモートログインは許可しないので、「Y」と入力します。

■testデータベースの削除
どのユーザからでもアクセスできるtestデータベースを削除するかどうかの質問です。
Remove test database and access to it? [Y/n]
削除するので「Y」を入力します。

■特権テーブルのリロード
すぐに特権テーブルをリロードして反映させるかどうかの質問です。
Reload privilege tables now? [Y/n]
すぐにリロードするので「Y」を入力します。

4. ユーザの作成

CREATE USER '(ユーザID)'@'localhost' IDENTIFIED BY '(パスワード)';
GRANT ALL PRIVILEGES ON (DB名).* TO '(ユーザID)'@'localhost';

5. cronでの実行の場合

定期バックアップなどでコマンドラインからMySQLを実行する場合に、パスワードをコマンドラインに含めると警告が発生しますし、またセキュリティ上問題があります。
そこで、設定ファイルを作成して、コマンドラインから読込みます。

(1) 設定ファイルの作成
「/root/.mysql_config」という設定ファイルを作成します。
# vi /root/.mysql_config
内容は以下の通りです。
[client] 
user = root
password = '(パスワード)'
host = localhost
「root」以外読めないようにします。
# chmod 400 /root/.mysql_config
以下のようにログインできます。
# mysql --defaults-extra-file=/root/.mysql_config

(2) コマンドラインでの実行
「--defaults-extra-file」オプションで設定ファイルを読み込みます。
【例1:DBがlocalhostの場合】
for DBNAME in `ls -p /var/lib/mysql | grep / | tr -d /`
do
  # mysqldump
  if [ "$DBNAME" = 'performance_schema' ]
  then
    /usr/bin/mysqldump --defaults-extra-file=/root/.mysql_config --skip-lock-tables --skip-extended-insert $DBNAME > $DBNAME.dump
  else
    /usr/bin/mysqldump --defaults-extra-file=/root/.mysql_config --events --skip-lock-tables --skip-extended-insert $DBNAME > $DBNAME.dump
  fi
done

【例2:DBが外部の場合】
for DBNAME in $(mysql --defaults-extra-file=/root/.mysql_config  -e "show databases;" | tr -d "|")
do
  if [ "$DBNAME" != 'Database' ]
  then
    # mysqldump
    if [ "$DBNAME" = 'performance_schema' ]
    then
      /usr/bin/mysqldump --defaults-extra-file=/root/.mysql_config --skip-lock-tables --skip-extended-insert $DBNAME > $DBNAME.dump
    else
      /usr/bin/mysqldump --defaults-extra-file=/root/.mysql_config --events --skip-lock-tables --skip-extended-insert $DBNAME > $DBNAME.dump
    fi
  fi
done

6.phpMyAdminのインストール

PHPがインストールされていない場合、もしくは必要とされているバージョンより低い場合には動作しませんので、注意して下さい。
(1) phpMyAdminのダウンロード
phpMyAdminのダウンロードサイトより「phpMyAdmin-x.x.x-all-languages.tar.gz」をダウンロードします。
(2) ファイルの解凍
ダウンロードしたファイルを解凍します。
# tar xvfz phpMyAdmin-x.x.x-all-languages.tar.gz
(3) ファイルの移動(リネーム)
解凍したファイルをディレクトリごと「/usr/local/phpmyadmin」に移動します。
# mv phpMyAdmin-x.x.x-all-languages /usr/local/phpmyadmin
※ディレクトリ名は任意です。
(4) phpMyAdminの設定
「libraries/config.default.php」というファイルが設定ファイルのひな型です。これを親ディレクトリに「config.inc.php」というファイル名でコピーにします。
# cd /usr/local/phpmyadmin
# cp libraries/config.default.php config.inc.php
ファイルを編集します。
# vi config.inc.php
暗号化のためのパスフレーズ
$cfg['blowfish_secret'] = '(任意のパスフレーズ)';
非表示データベース名
$cfg['Servers'][$i]['hide_db'] = 'schema|sys|mysql';
※「schema」、「sys」、「mysql」という名前が含まれるデータベースを非表示にする。(部分一致)
テンポラリーディレクトリ名
/*
if (defined('TEMP_DIR')) {
   $cfg['TempDir'] = TEMP_DIR;
} else {
   $cfg['TempDir'] = './tmp/';
}
*/
$cfg['TempDir'] = '/tmp/';
※「/tmp」に変更しています。

編集が完了したら保存して終了します。
(5) 管理テーブルの作成
管理テーブルを作成すると、phpMyAdminで設定した値が保存できるようになります。
「sql」というディレクトリに移動し、「create_tables.sql」を実行します。
# cd /usr/local/phpmyadmin/sql
# mysql -u root -p < create_tables.sql
Enter password:
※「phpmyadmin」というデータベースが作成されます。
(6) Apacheの設定
「/usr/local/phpmyadmin」を「/pma」というURLでアクセスする場合の設定は、以下のようにします。
# vi /etc/httpd/conf.d/phpmyadmin.conf
Alias /pma "/usr/local/phpmyadmin"
<Directory "/usr/local/phpmyadmin">
    SSLRequireSSL
 
    Options FollowSymLinks
    AllowOverride All
    <RequireAny>
      Require ip xxx.xxx.xxx.xxx
  </RequireAny>
</Directory>
※「Reauire ip」にアクセス許可を行うIPアドレスを記載します。

Apacheを再起動します。
# systemctl restart httpd.service

以下のようにアクセスします。
https://www.example.jp/pma/



最終更新:2023年02月06日 08:58