Debian 8 (jessie) でミニマムな MySQL 5.7 開発用DB構築
方針
- ミニマムインストールの Debian 8.11 (2020年5月現在) を利用
- 必要十分・必要最小限
- MySQL Community のDEBパッケージを入れて apt で構築
- LAN内想定でFWも使用しない (ミニマムだと入らないはず…)
OSインストール要件
- インストールウィザードにしたがった最小限の設定
- ネットワーク
- ユーザ・サーバ名
- パーティション分割やLVMは利用しない
- OpenSSH server はインストールしておく
- その他追加パッケージのインストールはなし
なぜjessieを使うのか
- インストールウィザードにしたがった最小限の設定
- ネットワーク
- ユーザ・サーバ名
- パーティション分割やLVMは利用しない
- OpenSSH server はインストールしておく
- その他追加パッケージのインストールはなし
なぜjessieを使うのか
本稿執筆時点より約2ヶ月後に、Debian 8 は2020年6月30日をもってサポートが終了します。
そんな中で、jessieをチョイスしたのは確実に MySQL 5.7 を入れたかったことだけが理由です。
最新のOSにするとCommunityのリポジトリ的に 8.0 しか選べなかったりしたので…
あくまでLAN内想定なので、セキュリティ面のことはあまり考えないことに。。
手数を減らすため、開発で使いたいバージョンのみに絞って判断します。
OS基本設定と最新化
初期インストールが完了したら、対象サーバへSSHして構築していきます。
- dbusのインストール
Debianの最小構成では入らず、 timedatectl に必要です。
# apt install dbus
- タイムゾーンの設定 (OSインストールオプションで Asia/Tokyo にしなかった場合)
# date // 時刻確認
# timedatectl set-timezone Asia/Tokyo // 日本を指定 (必要なら)
- 現状のパッケージの最新化
# apt upgrade
MySQL 5.7 のインストール
以下のように、標準だと 5.5 が入ってしまいます。
# apt search mysql-server
出力例…
ソート中... 完了
全文検索... 完了
auth2db/oldoldstable 0.2.5-2+dfsg-5 all
Powerful and eye-candy IDS logger, log viewer and alert generator
mysql-server/oldoldstable 5.5.62-0+deb8u1 all
MySQL データベースサーバ (最新版に依存するメタパッケージ)
mysql-server-5.5/oldoldstable 5.5.62-0+deb8u1 amd64
MySQL データベースサーババイナリおよびシステムデータベースの設定
mysql-server-core-5.5/oldoldstable 5.5.62-0+deb8u1 amd64
MySQL データベースサーババイナリ
MySQL Community の DEB Package を先にインストールします。
(2020年5月現在の最新公開パッケージは、 mysql-apt-config_0.8.15-1_all.deb
です。)
# apt install software-properties-common // リポジトリ追加のために必要
# cd /usr/local/src // DEBパッケージはここに配置
# wget https://dev.mysql.com/get/mysql-apt-config_0.8.15-1_all.deb --no-check-certificate
// 私の環境では証明書が信用できない…と出たのでオプション追加
# dpkg -i mysql-apt-config_0.8.15-1_all.deb
インストールすると、コンソール内に以下のような設定画面が出てきます。
まず、 [MySQL Server & Cluster] を選択し、 [Enter] を押します。
次の画面では、 [mysql-5.7] を選択し [Enter]。
最初の画面に戻ったら、 [OK] を選択し [Enter] を押すと画面から抜けます。
# apt update // 設定したリポジトリ情報の適用
以下のように、再度確認すると私の環境では 5.7.30
が入るように変更されています。
# apt search mysql-server
出力例…
ソート中... 完了
全文検索... 完了
auth2db/oldoldstable 0.2.5-2+dfsg-5 all
Powerful and eye-candy IDS logger, log viewer and alert generator
mysql-server/不明 5.7.30-1debian8 amd64
MySQL Server meta package depending on latest version
mysql-server-5.5/oldoldstable 5.5.62-0+deb8u1 amd64
MySQL データベースサーババイナリおよびシステムデータベースの設定
mysql-server-core-5.5/oldoldstable 5.5.62-0+deb8u1 amd64
MySQL データベースサーババイナリ
実際にインストールを実施します。
# apt install mysql-server
出力例…
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
libaio1 libmecab2 libsasl2-2 libsasl2-modules libsasl2-modules-db mysql-client mysql-common
mysql-community-client mysql-community-server psmisc
提案パッケージ:
libsasl2-modules-otp libsasl2-modules-ldap libsasl2-modules-sql libsasl2-modules-gssapi-mit
libsasl2-modules-gssapi-heimdal
以下のパッケージが新たにインストールされます:
libaio1 libmecab2 libsasl2-2 libsasl2-modules libsasl2-modules-db mysql-client mysql-common
mysql-community-client mysql-community-server mysql-server psmisc
アップグレード: 0 個、新規インストール: 11 個、削除: 0 個、保留: 0 個。
44.1 MB のアーカイブを取得する必要があります。
この操作後に追加で 291 MB のディスク容量が消費されます。
続行しますか? [Y/n] Y // 「Y」 を入力して続行
途中、MySQLのrootユーザのパスワードを求められるので入力します。
(パスワードの確認入力と合わせ、同様の画面が2回出現。)
インストールが完了したら、パッケージの状況を確認します。
# dpkg -l | grep mysql
ii mysql-apt-config 0.8.15-1 all Auto configuration for MySQL APT Repo.
ii mysql-client 5.7.30-1debian8 amd64 MySQL Client meta package depending on latest version
ii mysql-common 5.7.30-1debian8 amd64 MySQL Common
ii mysql-community-client 5.7.30-1debian8 amd64 MySQL Client
ii mysql-community-server 5.7.30-1debian8 amd64 MySQL Server
ii mysql-server 5.7.30-1debian8 amd64 MySQL Server meta package depending on latest version
MySQL 5.7 の初期設定と my.cnf の設定
すでにプロセスは起動していますしこのままでも使えますが、運用・セキュリティのために以下の初期化コマンドを実行します。
# mysql_secure_installation
入出力例…
Securing the MySQL server deployment.
Enter password for user root: // インストール時設定したrootパスワード入力
VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?
Press y|Y for Yes, any other key for No: Y // パスワードチェックのプラグインを入れる
There are three levels of password validation policy:
LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 0 // プラグインのパスワード強度設定
Change the password for root ? ((Press y|Y for Yes, any other key for No) : N
// パスワードポリシーに合わないパスワードの場合は変更 (ここでは変更していない)
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.
Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y // anonymousユーザ削除
Success.
Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y // リモートrootログインを許可しない
Success.
By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y // testデータベース削除
- Dropping test database...
Success.
- Removing privileges on test database...
Success.
Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y // FLUSH PRIVILEGES の実行
Success.
All done!
開発DBなので細かい設定をする必要はないですが、文字コードがずれていると開発に支障を来すので確認します。
# mysql -u root -p -e 'SHOW GLOBAL VARIABLES LIKE "%char%";'
Enter password:
+--------------------------------------+----------------------------+
| Variable_name | Value |
+--------------------------------------+----------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
| validate_password_special_char_count | 1 |
+--------------------------------------+----------------------------+
latin1 はデフォルトなので、予想通りです…
UTF-8
へ変更します。
また、デフォルトではlocalhost以外から接続できないネットワーク設定が入っています。これも併せて無効化しておきます。
さらに、私の環境ではパスワードポリシーが保存されていなかったようなのでこれも直しています。
Debianのメインコンフィグの場所は以下になるようです。
(→ /etc/mysql/my.cnf でここが示されている)
メインコンフィグのパス :
/etc/mysql/mysql.conf.d/mysqld.cnf
以下のように追記/変更します。
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
log-error = /var/log/mysql/error.log
# By default we only accept connections from localhost
# bind-address = 127.0.0.1 // 【コメントアウトする】
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
## /* ↓↓追記↓↓ */
validate_password_policy=LOW
character-set-server=utf8
[client]
default-character-set=utf8
編集できたら、MySQLサーバを再起動します。
# systemctl status mysql.service // プロセス状態確認
# systemctl restart mysql.service // 再起動
文字コードの設定を再確認しましょう。
# mysql -u root -p -e 'SHOW GLOBAL VARIABLES LIKE "%char%";'
Enter password:
+--------------------------------------+----------------------------+
| Variable_name | Value |
+--------------------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
| validate_password_special_char_count | 1 |
+--------------------------------------+----------------------------+
これで使いはじめることができます。
Fin ❤︎
Author And Source
この問題について(Debian 8 (jessie) でミニマムな MySQL 5.7 開発用DB構築), 我々は、より多くの情報をここで見つけました https://qiita.com/kapibarasensei/items/4e912423f377ae9a814e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .