MySQL 8.0のインストール【CentOS 7】

MySQL8.0をインストールします。

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

miriadb-libsの旧バージョンがインストールされていたら、削除します。

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

2. インストール

(1) MySQL 8.0
yumのリポジトリの追加登録方法 (CentOS 7)で「3. MySQL」のリポジトリを追加して、MySQLの8.0をインストールします。
# yum --enablerepo=mysql80-community install mysql-community-server

(2) postfix
postfixの再インストールを行います。
# yum install postfix
# systemctl start postfix.service
# systemctl enable postfix.service

3. MySQLの設定

(1) DBの初期化
DBの初期化を行います。
# mysqld --initialize --user=mysql --datadir=/var/lib/mysql

このコマンドで初期化を行うと、初期ユーザとして「root@localhost」が作成されます。
また、初期パスワードが「/var/log/mysqld.log」に書き込まれます。
ちなみに「mysqld --initialize-insecure」とすると、パスワードは空となります。

(2) rootパスワードの変更
初期パスワードでログインすることはできますが、そのまま使い続けようとすると、
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
というエラーが表示されるので、パスワードを変更します。
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '(パスワード)';

ついでにパスワードの有効期限のデフォルトが無期限であることを確認します。
mysql> SELECT @@default_password_lifetime;
+-----------------------------+
| @@default_password_lifetime |
+-----------------------------+
|                           0 |
+-----------------------------+
 

(3) /etc/my.cnfの設定
■旧MySQLの認証プラグインを使用(コメントを外す)
default-authentication-plugin=mysql_native_password

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

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

(6) mysql_secure_installationの実行
MySQLのセキュリティを向上させるために「mysql_secure_installation」を実行します。
# /usr/bin/mysql_secure_installation
このコマンドは、
  • rootユーザのパスワード文字列を設定する
  • VALIDATE PASSWORD PLUGINをインストール(Yes|No)
  • anonymousユーザを削除する(Yes|No)
  • リモートからのrootログインを禁止する(Yes|No)
  • TESTデータベースを削除する(Yes|No)
  • 権限を再読み出しする(Yes|No)
という作業を対話式に順次実行します。

4. その他のコマンド

(1) ユーザ作成
CREATE USER '(ユーザID)'@'localhost' IDENTIFIED WITH mysql_native_password BY '(パスワード)';
GRANT ALL PRIVILEGES ON (テーブル名).* TO '(ユーザID)'@'localhost';
※※【注意事項】※※
「my.cnf」で「skip-name-resolve」を指定している場合には、ホストの名前解決ができないため「localhost」ではエラーとなる。その場合には「127.0.0.1」と記述すること。


5. cronでの実行の場合

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

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

(2) コマンドラインでの実行
「--defaults-extra-file」オプションで設定ファイルを読み込みます。
【例】
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

6. MySQLのコマンド

(1) mysqldump
■データベースを出力
mysqldump --defaults-extra-file=/root/.mysql_config -c -skip-extended-insert (DB名) > (出力ファイル名)

■テーブルを指定して出力
mysqldump --defaults-extra-file=/root/.mysql_config -c -skip-extended-insert (DB名) (テーブル名) > (出力ファイル名)

(2) mysql
■ダンプファイルをインポート
mysql --defaults-extra-file=/root/.mysql_config (DB名) < (ダンプファイル名)




最終更新:2021年04月05日 08:26