MariaDBのインストール 【Amazon Linux 2】

amazon-linux-extrasを利用して、MariaDBをインストールします。

1. miriadb-libs5.5のアンインストール

Amazon Linux 2でもmiriadb-libsの5.5がデフォルトでインストールされているので、削除します。

$ rpm -qa | grep -i "mariadb"
mariadb-libs-5.5.44-1.el7_1.x86_64
$ sudo yum remove mariadb-libs
※依存性関連で「postfix」も削除されてしまうので、MariaDBのインストール後に再インストールして下さい。

2. amazon-linux-extrasによるインストール

まずインストールすることのできるソフトウェアおよびバージョンを確認します。
$ sudo amazon-linux-extras
0  ansible2                 available    \
        [ =2.4.2  =2.4.6  =2.8  =stable ]
  2  httpd_modules            available    [ =1.0  =stable ]
  3  memcached1.5             available    \
        [ =1.5.1  =1.5.16  =1.5.17 ]
  5  postgresql9.6            available    \
        [ =9.6.6  =9.6.8  =stable ]
  6  postgresql10             available    [ =10  =stable ]
  9  R3.4                     available    [ =3.4.3  =stable ]
 10  rust1                    available    \
        [ =1.22.1  =1.26.0  =1.26.1  =1.27.2  =1.31.0  =1.38.0
          =stable ]
 11  vim                      available    [ =8.0  =stable ]
  _  php7.2                   available    \
        [ =7.2.0  =7.2.4  =7.2.5  =7.2.8  =7.2.11  =7.2.13  =7.2.14
          =7.2.16  =7.2.17  =7.2.19  =7.2.21  =7.2.22  =7.2.23
          =7.2.24  =7.2.26  =stable ]
  _  lamp-mariadb10.2-php7.2  available    \
        [ =10.2.10_7.2.0  =10.2.10_7.2.4  =10.2.10_7.2.5
          =10.2.10_7.2.8  =10.2.10_7.2.11  =10.2.10_7.2.13
          =10.2.10_7.2.14  =10.2.10_7.2.16  =10.2.10_7.2.17
          =10.2.10_7.2.19  =10.2.10_7.2.22  =10.2.10_7.2.23
          =10.2.10_7.2.24  =stable ]
 18  libreoffice              available    \
        [ =5.0.6.2_15  =5.3.6.1  =stable ]
 19  gimp                     available    [ =2.8.22 ]
 20  docker=latest            enabled      \
        [ =17.12.1  =18.03.1  =18.06.1  =18.09.9  =stable ]
 21  mate-desktop1.x          available    \
        [ =1.19.0  =1.20.0  =stable ]
 22  GraphicsMagick1.3        available    \
        [ =1.3.29  =1.3.32  =1.3.34  =stable ]
 23  tomcat8.5                available    \
        [ =8.5.31  =8.5.32  =8.5.38  =8.5.40  =8.5.42  =8.5.50
          =stable ]
 24  epel=latest              enabled      [ =7.11  =stable ]
 25  testing                  available    [ =1.0  =stable ]
 26  ecs                      available    [ =stable ]
 27  corretto8                available    \
        [ =1.8.0_192  =1.8.0_202  =1.8.0_212  =1.8.0_222  =1.8.0_232
          =1.8.0_242  =stable ]
 28  firecracker              available    [ =0.11  =stable ]
 29  golang1.11               available    \
        [ =1.11.3  =1.11.11  =1.11.13  =stable ]
 30  squid4                   available    [ =4  =stable ]
  _  php7.3                   available    \
        [ =7.3.2  =7.3.3  =7.3.4  =7.3.6  =7.3.8  =7.3.9  =7.3.10
          =7.3.11  =7.3.13  =stable ]
 32  lustre2.10               available    \
        [ =2.10.5  =2.10.8  =stable ]
 33  java-openjdk11           available    [ =11  =stable ]
 34  lynis                    available    [ =stable ]
 35  kernel-ng                available    [ =stable ]
 36  BCC                      available    [ =0.x  =stable ]
 37  mono                     available    [ =5.x  =stable ]
 38  nginx1                   available    [ =stable ]
 39  ruby2.6                  available    [ =2.6  =stable ]
 40  mock                     available    [ =stable ]
 41  postgresql11             available    [ =11  =stable ]
  _  php7.4                   available    [ =stable ]
 43  livepatch                available    [ =stable ]
 44  python3.8                available    [ =stable ]
 45  haproxy2                 available    [ =stable ]
 46  collectd                 available    [ =stable ]
 47  aws-nitro-enclaves-cli   available    [ =stable ]
 48  R4                       available    [ =stable ]
 49  kernel-5.4               available    [ =stable ]
 50  selinux-ng               available    [ =stable ]
 51  php8.0=latest            enabled      [ =stable ]
 52  tomcat9                  available    [ =stable ]
 53  unbound1.13              available    [ =stable ]
 54  mariadb10.5              available    [ =stable ]
 55  kernel-5.10              available    [ =stable ]
 56  redis6                   available    [ =stable ]
 57  ruby3.0                  available    [ =stable ]
 58  postgresql12             available    [ =stable ]
 59  postgresql13             available    [ =stable ]
 60  mock2                    available    [ =stable ]
 

ここで54の「mariadb10.5」をインストールします。
$ sudo amazon-linux-extras install mariadb10.5

3. postfixのインストール

先ほど削除したPostfixを再インストールします。
$ sudo yum install postfix
$ sudo systemctl enable postfix.service
$ sudo systemctl start postfix.service

4. MariaDBの初期設定

MariaDBのデフォルト値から変更する部分のみ [mysqld] セクションに記述します。
$ sudo cp /etc/my.cnf.d/mariadb-server.cnf{,.default}
$ sudo vi /etc/my.cnf.d/mariadb-server.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mariadb/mariadb.log
pid-file=/run/mariadb/mariadb.pid
 
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
 
#  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) 不要なプラグインを除外
「/etc/my.cnf.d/auth_gssapi.cnf」は不要なので、除外します。
$ sudo mv /etc/my.cnf.d/auth_gssapi.cnf /etc/my.cnf.d/auth_gssapi.cnf.bak

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

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

(6) mysql_secure_installationの実行
MySQLのセキュリティを向上させるために「mysql_secure_installation」を実行します。
$ sudo /usr/bin/mysql_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」を入力します。

(7) rootパスワードの設定
インストール直後のMySQLは「root」ユーザにパスワードが設定されていないので、パスワードを設定します。
※前述の「mysql_secure_installation」を実行した場合には不要です。

MySQLにログインします。
$ sudo mysql -u root

パスワードを設定します。
mysql> SET PASSWORD FOR root@localhost=PASSWORD('xxxxxx');
mysql> exit;

パスワードなしでログインしてエラーが発生することを確認します。
$ sudo mysql -u root

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

設定したパスワードでログインできることを確認します。
$ sudo mysql -u root -p

パスワードを入力します。
Enter password:

ログインできればOKです。

5. ユーザの作成

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

6. 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

7.phpMyAdminのインストール

PHPがインストールされていない場合、もしくは必要とされているバージョンより低い場合には動作しませんので、注意して下さい。
(1) phpMyAdminのダウンロード
phpMyAdminのダウンロードサイトより「phpMyAdmin-x.x.x-all-languages.tar.gz」をダウンロードします。
# wget https://files.phpmyadmin.net/phpMyAdmin/x.x.x/phpMyAdmin-x.x.x-all-languages.tar.gz
※「x.x.x」にはphpMyAdminのバージョン番号が入ります。
(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'] = ROOT_PATH . '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
# 送信元IPアドレスとして、X-Forwarded-Forを利用する
RemoteIPHeader X-Forwarded-For
 
Alias /pma "/usr/local/phpmyadmin"
<Directory "/usr/local/phpmyadmin">
    Options FollowSymLinks
    AllowOverride All
    Require all denied
    <RequireAny>
      Require ip xxx.xxx.xxx.xxx
  </RequireAny>
</Directory>
※「Reauire ip」にアクセス許可を行うIPアドレスを記載します。

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

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


最終更新:2022年02月08日 07:52