MySQL8.0のインストール

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

1. インストール

yumのリポジトリの追加登録方法 (CentOS 7)で「MySQL」のリポジトリを追加して、MySQLの8.0をインストールします。
# yum --enablerepo=mysql80-community install mysql-community-server
CentOSではデフォルトで「mariadb-libs」がインストールされていますが、上記コマンドを実行すると入れ替わります。

2. MySQLの設定

(1) DBの初期化
DBの初期化を行います。
# mysqld --initialize --user=mysql --datadir=/var/lib/mysql
※5.6までは「mysql_install_db」コマンドで行いましたが、5.7からは変更になりました。

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

(2) /etc/my.cnfの設定
MySQLの設定は、「/etc/my.cnf」で行います。

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

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

(5) 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)
という作業を対話式に順次実行します。

3. rootパスワードの変更

インストール直後は、「root」ユーザにテンポラリーパスワードが設定されているので、パスワードを変更します。
※前述の「mysql_secure_installation」を実行した場合には不要です。

MySQLにログインします。
# mysql -u root -p
Enter password:

パスワードを変更します。
mysql> SET PASSWORD FOR root@localhost='xxxxxx';
mysql> exit;
※従来の「SET PASSWORD FOR root@localhost=PASSWORD('xxxxxx');」だとSyntaxエラーが発生します。

変更したパスワードでログインできることを確認します。
# mysql -u root -p
Enter password:

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

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名) < (ダンプファイル名)




最終更新:2020年08月05日 14:19