MySQL5.7をCentOS7にインストールする方法
このページではMySQL5.7をCentOSへのサーバーとクライアントのインストールはもちろん、アンインストールや起動・再起動に加えて接続確認やセキュリティ対策など丁寧に解説しています。
mariaDBの削除
CentOS7にはmariaDB というDBが最初からインストールされていることが多いので削除します。競合して誤動作の原因となるのを防ぎます。
# systemctl stop mysqld
# yum -y remove mariadb-libs
# yum -y remove mysql-community-*
# rm -rf /var/lib/mysql/
MySQLのリポジトリをダウンロード
yumでインストールするためにMySQL公式のリポジトリを追加します。
# yum localinstall http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
2021/4現在、MySQL5.7系はel-11が最新版です。
リポジトリのバージョン調整
公式のyumリポジトリ
https://dev.mysql.com/downloads/repo/yum/
公式に掲載されているのは常に最新のリポジトリ。最新のリポジトリは過去のリポジトリもすべて含まれる。
ただ、デフォルトでインストールされるのが最新のMySQL8になってしまうので、以下のコマンドを使って取得先を過去のバージョンのものに調整するといい
対象リポジトリのコントロール
# yum repolist all | grep mysql
# yum-config-manager --disable mysql80-community
# yum-config-manager --enable mysql57-community
# yum repolist all | grep mysql
mysql-cluster-7.5-community/x86_64 MySQL Cluster 7.5 Community 無効
mysql-cluster-7.5-community-source MySQL Cluster 7.5 Community - 無効
mysql-cluster-7.6-community/x86_64 MySQL Cluster 7.6 Community 無効
mysql-cluster-7.6-community-source MySQL Cluster 7.6 Community - 無効
mysql-connectors-community/x86_64 MySQL Connectors Community 有効: 203
mysql-connectors-community-source MySQL Connectors Community - S 無効
mysql-tools-community/x86_64 MySQL Tools Community 有効: 129
mysql-tools-community-source MySQL Tools Community - Source 無効
mysql-tools-preview/x86_64 MySQL Tools Preview 無効
mysql-tools-preview-source MySQL Tools Preview - Source 無効
mysql55-community/x86_64 MySQL 5.5 Community Server 無効
mysql55-community-source MySQL 5.5 Community Server - S 無効
mysql56-community/x86_64 MySQL 5.6 Community Server 無効
mysql56-community-source MySQL 5.6 Community Server - S 無効
mysql57-community/x86_64 MySQL 5.7 Community Server 有効: 504 ←
mysql57-community-source MySQL 5.7 Community Server - S 無効
mysql80-community/x86_64 MySQL 8.0 Community Server 無効
mysql80-community-source MySQL 8.0 Community Server - S 無効
MySQL5.7をインストール
ダウンロードできるバージョンを確認
# yum list | grep mysql-community-server
mysql-community-server.x86_64 5.7.33-1.el7 mysql57-community
MySQLサーバーのインスト―ル
# yum -y install mysql-community-server
数分かかるかもしれません。
MySQLクライアントのインストール
サーバーだけでなくMySQLクライアントも一緒にインストールしておきましょう
# yum -y install mysql-community-client
MySQLバージョンの確認
# mysqld --version
mysqld Ver 5.7.34 for Linux on x86_64 (MySQL Community Server (GPL))
MySQLのアンインストール
もしアンインストールしたい場合は以下を実行してください
# yum remove mysql-community-server
MySQLの自動起動設定
自動起動を有効に
# systemctl enable mysqld
自動起動が有効になったか確認
# systemctl is-enabled mysqld
enabled
くわしいMySQL設定(my.cnf)
このあと最低限の設定だけで起動することになりますが、ちょっと物足りません。
とりあえずはまず起動したいという場合は先に進んでください。
時間に余裕のある方は初回起動の前に先にこちらを参照して設定を見てみてください。
最低限のMySQL設定(my.cnf)
最低限のMySQL設定をしておきましょう。
my.cnfを編集します。
一応バックアップ
# cp /etc/my.cnf /etc/my.cnf.org
MySQL設定ファイル編集
# vi /etc/my.cnf
開いたファイルは
[****]という記述でブロックが区切られているので
[mysqld]というブロックの末尾に以下を追記。
~略~
[mysqld]
~略~
character-set-server=utf8 #
default_password_lifetime=0 #定期的なパスワード変更を無効(デフォルト360日・期限切れでログイン不可)
~略~
MySQLの起動と確認
mysqlサーバーを起動
# systemctl start mysqld
startをrestartとすれば再起動になります。
起動の確認
# ps auxw | grep mysqld
polkitd 56074 0.4 0.0 1115204 384 ? Ssl 11:32 0:36 mysqld
mysql 59541 5.2 14.5 1122184 144868 ? Sl 13:52 0:02 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
systemctlのstatusでも確認できます
# systemctl status mysqld
● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: active (running) since 日 2021-05-23 00:31:23 JST; 11min ago
Docs: man:mysqld(8)
http://dev.mysql.com/doc/refman/en/using-systemd.html
Process: 28676 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS (code=exited, status=0/SUCCESS)
Process: 28610 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
Main PID: 28679 (mysqld)
Tasks: 27
Memory: 300.1M
CGroup: /system.slice/mysqld.service
└─28679 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
5月 23 00:31:17 localhost.localdomain systemd[1]: Starting MySQL Server...
5月 23 00:31:23 localhost.localdomain systemd[1]: Started MySQL Server.
MySQLに接続
rootといえどパスワードなしでは入れません。
初期化された一時パスワードを確認
# grep "temporary password" `find /var/log/ -name "mysql*log"`
2021-04-02T04:52:06.661371Z 1 [Note] A temporary password is generated for root@localhost: YDuqeuU9o=_M
この行の最後がパスワードです。これを使ってrootログイン
MySQLにrootで接続
# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.33
Copyright (c) 2000, 2021, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
rootパスワードの変更
これが出れば接続成功。
このままログインしてるので今すぐにパスワードを変えましょう。
8文字以上かつ英大文字・英小文字・数字・記号必須です!
厳しすぎる・・
mysql> SET PASSWORD = PASSWORD('●●●●●');
Query OK, 0 rows affected, 1 warning (0.09 sec)
OSのコマンドラインからもできます。
# mysqladmin --uroot password
my.cnf設定反映の確認
utf8が反映されたか確認
# mysql -uroot -p
mysql> show variables like "chara%";
+--------------------------+----------------------------+
| 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/ |
+--------------------------+----------------------------+
MySQLのセキュリティ対策設定
MySQL5.7ではmysql_secure_installationというコマンドが用意されています。
yumでインストールした場合はすでに実行済みの状態です。
以下のような機能があります。
- rootのパスワードの変更
- validate_passwordプラグインのインストール
- ポリシーに沿った rootパスワードの設定
- anonymousユーザーの削除
- リモートからrootログインの禁止
- 最初に用意されているtestデータベース削除
※MySQL5.7.8からvalidate_passwordプラグインはデフォルトで有効
一応、インストール方法を示しておきます。
# mysql_secure_installation
コメント
2022年1月18日よりGPGキーのインストールが必要となったようです。
https://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/
$ sudo rpm –import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022