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の初期設定
$ 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にログインします。
パスワードを設定します。
mysql> SET PASSWORD FOR root@localhost=PASSWORD('xxxxxx');
mysql> exit;
パスワードなしでログインしてエラーが発生することを確認します。
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
設定したパスワードでログインできることを確認します。
パスワードを入力します。
ログインできればOKです。
5. ユーザの作成
CREATE USER '(ユーザID)'@'localhost' IDENTIFIED BY '(パスワード)';
GRANT ALL PRIVILEGES ON (DB名).* TO '(ユーザID)'@'localhost';
6. cronでの実行の場合
定期バックアップなどでコマンドラインからMySQLを実行する場合に、パスワードをコマンドラインに含めると警告が発生しますし、またセキュリティ上問題があります。
そこで、設定ファイルを作成して、コマンドラインから読込みます。
(1) 設定ファイルの作成
「/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のダウンロード
# 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
ファイルを編集します。
暗号化のためのパスフレーズ
$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