- AquaNet IT Business - https://todo.vc/aquanet -

MySQL 5.7にアップグレードする

長年使っているデータベースの MySQL Community Server ですが、5.0 の時代の物です。データその物は Raid1 のハードディスクに収まっているのですが、実は、Windows7 からアップグレードした Wdindows10 が更新(1511から1607)不能に陥り、具体的解決が図れなかったためクリーンインストールしました。
それに伴い、環境も大きく変わっているので Windows10 に整合性のある MySQL 5.7 にアップグレードする事にしました。



 

■ サーバのレイアウト

図中、 MySQL Installer 5.7 for Windows  Download  をクリックして、インストーラに依るインストールをすると非常に簡単ですが、新規の場合を除いてレイアウトを自由にしたい場合など、何れコマンドレベルの調整が必要になると思い、手動でインストールする事にしました。

レイアウトは、既存のデータが存在するディレクトリーが D:\Data\MySQL\data で、その中に hamlog というアマチュア無線用のログデータベースが入っています。今回は、MySQLD:\MySQLに格納し、次回クリーンインストールした時にサービス登録だけでそのまま使用出来るようにしたいと思います。(その時上手く行くかは別ですが)
 

■ MySQL Server のダウンロードと配置

  1. インストーラの下の一覧から32ビット、又は64ビットのZIPファイルをダウンロードします。
  2. 今回は Windows (x86, 32-bit), ZIP Archive(mysql-5.7.17-win32.zip) を使用します。  Download  をクリックするとログイン又はサインアップを求められますが、取り敢えずダウンロードしたい時は No thanks, just start my download をクリックします。

  3. 解凍したディレクトリーを MySQL にリネームして D:ドライブのルートに移動します。
  4. ディレクトリー内には次のファイルやサブディレクトリーが入っています。
    bin],[docs],[include],[lib],[share
    COPYING, my-default.ini, README

  5. my-default.ini をコピーして my.ini とし、環境に合わせて内容を変更する。
  6. Text Editor
    # ------------------------------------------------------------------------
    # CLIENT
    # ------------------------------------------------------------------------
    [client]
    default-character-set=utf8
    port=3306
    
    [mysql]
    default-character-set=utf8
    
    # ------------------------------------------------------------------------
    # SERVER
    # ------------------------------------------------------------------------
    [mysqld]
    #
    # Base
    #
    basedir=D:/MySQL
    datadir=D:/Data/MySQL/data
    explicit_defaults_for_timestamp=true
    default-storage-engine=MYISAM
    port=3306
    server_id=1
    character-set-server=utf8
    
    # Remove leading # to set options mainly useful for reporting servers.
    # The server defaults are faster for transactions and fast SELECTs.
    # Adjust sizes as needed, experiment to find the optimal values.
    # join_buffer_size = 128M
    # sort_buffer_size = 2M
    # read_rnd_buffer_size = 2M 
    
    sql_mode=NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,ONLY_FULL_GROUP_BY,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
    

    取り敢えずは、[myspld] のセクションだけで良いと思います。ただ default-character の指定方法が変更されている(黄色とオレンジ色の違い)ので注意が必要です。後のWindowsサービス起動でエラーが発生する場合、この my.ini 内での文法違いに起因する事が良く有ります。

これで、必要なファイルの配置が完了しました。
 

■ MySQL の初期化とサービスとしての起動

  1. MySQLシステムの初期化
  2. 初期化の処理に入る前に、引き継ぐデータの入っているディレクトリーをリネームして保全します。
    例:\Data\MySQL\data ➡ \Data\MySQL\$data

    管理者: コマンド プロンプト
    Microsoft Windows [Version 10.0.14393]
    (c) 2016 Microsoft Corporation. All rights reserved.
    
    C:\WINDOWS\system32>D:
    
    D:\>cd \MySQL
    
    D:\MySQL>mysqld --defaults-file=D:\MySQL\my.ini --initialize
    
    dataフォルダをリネームしていない場合のエラー
    [ERROR] -initialize specified but the data directory has files in it. borting.
    [ERROR] Aborting  
    

    例のように $data にリネームされていると、隣に新しく data が作成されています。
    又、この –initialize によって、‘root’@’localhost’ アカウントとランダムなパスワードが作成されます。
    パスワードはサーバのエラーログに出力されていますので、dataディレクトリー内の(コンピュータ名.errをテキストエディタで開き[temporary password]と言う文字列を検索してください。

    パスワードを今は割り当てたくない場合は、次のようにします。

    管理者: コマンド プロンプト
    D:\MySQL>mysqld --defaults-file=D:\MySQL\my.ini --initialize-insecure
    

     

  3. MySQLをWindowsのサービスとして登録・起動します。
  4. 管理者: コマンド プロンプト
    D:\MySQL>mysqld --install MySQL --defaults-file=D:\MySQL\my.ini
    Service successfully installed
    
    D:\MySQL>net start MySQL
    MySQL サービスを開始します。
    MySQL サービスは正常に開始されました。
    

 

■MySQLユーザに対するパスワードの変更とアクセス出来る範囲の設定

  1. MySQLサーバに接続しパスワードを変更します。(旧データへのアクセス用と同じにする
  2. 管理者: コマンド プロンプト
    D:\MySQL>mysql -u root -p
    Enter password: temporary password
    
    mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
    

     

  3. 外部接続できるIPアドレスの範囲を設定します(例:192.168.1.0 セグメント)
  4. 管理者: コマンド プロンプト
    mysql> grant all privileges on *.* to root@"192.168.1.%" identified by 'PASSWORD' with grant option;
    mysql> select user, host from mysql.user;
    +-----------+-------------+
    | user      | host        |
    +-----------+-------------+
    | root      | 192.168.1.% |
    | mysql.sys | localhost   |
    | root      | localhost   |
    +-----------+-------------+
    

 

■アプリケーションとの接続を復活させます。

  1. $data(旧フォルダ)から、data(新フォルダ)へ必要なデータベース(hamlogフォルダ)のみコピーします。
  2. ODBC_MySQL_Driver の設定をして、アプリを立ち上げます。