tech_memo / MySQL / RHEL7_MySQL5.7


tech_memo/MySQL

インストール

参考

手順

  1. MariaDBのアンインストール
    • RHEL7および、CentOS7よりデータベースサーバの MySQL が MariaDB に置き換えられたため、MySQLのインストール前に、競合を起こさないように削除する。
      sudo yum remove mariadb-libs
      sudo rm -rf /var/lib/mysql
  2. yum リポジトリの追加
    • MySQL公式のyumリポジトリを追加。
      sudo rpm -ivh http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
  3. MySQL のインストール
    sudo yum install mysql-community-server
  4. バージョン確認
    mysqld --version
    mysqld  Ver 5.7.14 for Linux on x86_64 (MySQL Community Server (GPL))

起動

  • MySQL の起動
    sudo systemctl start mysqld.service
  • 自動起動の設定。
    sudo systemctl enable mysqld.service

インストール後にやること


初期パスワードの確認

  • MySQL 5.7 では、初回起動時に初期パスワードが生成されるので、ログファイルから生成されたパスワードを確認する必要がある。
    sudo cat /var/log/mysqld.log | grep password
    2016-09-01T13:09:03.337119Z 1 [Note] A temporary password is generated for root@localhost: uhsd!Aid;3Zt
    • 上記の場合、uhsd!Aid;3Zt の部分が初期パスワードになる。

セキュリティ設定

  • mysql_secure_installation コマンドを実行して、MySQL のセキュリティ設定を行う。
    mysql_secure_installation
    • 設定できること
      • rootユーザの新パスワード設定
      • 匿名ユーザ(誰でもログインできるテストユーザ)を削除するかどうか
      • ローカルホスト以外からアクセス可能な root アカウントを削除するかどうか
      • test データベースを削除するかどうか
    • 実際の設定の参考は下記

パスワードの有効期限設定

  • デフォルトは360日で切れる。無効化は/etc/my.cnfに、以下を追記。
    default_password_lifetime = 0
  • MySQLを再起動
    sudo systemctl restart mysqld.service

文字コード変更

  • デフォルトの文字コードをUTF-8に変更。
  • /etc/my.cnfに、以下を追記。
    character-set-server = utf8
  • MySQLを再起動
    sudo systemctl restart mysqld.service

パスワードポリシーの変更

  • デフォルトでは、validate_password_policyの初期値はMEDIUMで、パスワード設定に必要な条件は以下になる。
    • 最低 1 つの数値文字を含み
    • 1 つの小文字および大文字を含み
    • 1 つの特殊文字 (英数字以外) を含む必要がある
  • 確認
    mysql> SHOW VARIABLES LIKE 'validate_password%';
    +--------------------------------------+--------+
    | Variable_name                        | Value  |  
    +--------------------------------------+--------+
    | validate_password_check_user_name    | OFF    |
    | validate_password_dictionary_file    |        |
    | validate_password_length             | 8      |
    | validate_password_mixed_case_count   | 1      |
    | validate_password_number_count       | 1      |
    | validate_password_policy             | MEDIUM |
    | validate_password_special_char_count | 1      | 
    +--------------------------------------+--------+
    7 rows in set (0.01 sec)
  • ポリシーをLOWに変更
    mysql> SET GLOBAL validate_password_policy=LOW;
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> SHOW VARIABLES LIKE 'validate_password%';
    +--------------------------------------+-------+
    | Variable_name                        | Value |
    +--------------------------------------+-------+
    | validate_password_check_user_name    | OFF   |
    | validate_password_dictionary_file    |       |
    | validate_password_length             | 8     |
    | validate_password_mixed_case_count   | 1     |
    | validate_password_number_count       | 1     |
    | validate_password_policy             | LOW   |
    | validate_password_special_char_count | 1     |
    +--------------------------------------+-------+
    7 rows in set (0.00 sec)

パスワード変更

  • 下記コマンドでパスワードをrootに変更。
    set password for root@localhost=password('root');
    • ※事前に、validate_password_policyをLOW、validate_password_lengthを4に設定しておく必要がある