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 というアマチュア無線用のログデータベースが入っています。今回は、MySQL を D:\MySQLに格納し、次回クリーンインストールした時にサービス登録だけでそのまま使用出来るようにしたいと思います。(その時上手く行くかは別ですが)
■ MySQL Server のダウンロードと配置
- インストーラの下の一覧から32ビット、又は64ビットのZIPファイルをダウンロードします。
- 解凍したディレクトリーを MySQL にリネームして D:ドライブのルートに移動します。
- my-default.ini をコピーして my.ini とし、環境に合わせて内容を変更する。
今回は Windows (x86, 32-bit), ZIP Archive(mysql-5.7.17-win32.zip) を使用します。 Download をクリックするとログイン又はサインアップを求められますが、取り敢えずダウンロードしたい時は No thanks, just start my download をクリックします。
ディレクトリー内には次のファイルやサブディレクトリーが入っています。
[bin],[docs],[include],[lib],[share]
COPYING, my-default.ini, README
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 の初期化とサービスとしての起動
- MySQLシステムの初期化
- MySQLをWindowsのサービスとして登録・起動します。
初期化の処理に入る前に、引き継ぐデータの入っているディレクトリーをリネームして保全します。
例:\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
管理者: コマンド プロンプト
D:\MySQL>mysqld --install MySQL --defaults-file=D:\MySQL\my.ini Service successfully installed D:\MySQL>net start MySQL MySQL サービスを開始します。 MySQL サービスは正常に開始されました。
■MySQLユーザに対するパスワードの変更とアクセス出来る範囲の設定
- MySQLサーバに接続しパスワードを変更します。(旧データへのアクセス用と同じにする)
- 外部接続できるIPアドレスの範囲を設定します(例:192.168.1.0 セグメント)
管理者: コマンド プロンプト
D:\MySQL>mysql -u root -p Enter password: temporary password mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
管理者: コマンド プロンプト
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 | +-----------+-------------+
■アプリケーションとの接続を復活させます。
- $data(旧フォルダ)から、data(新フォルダ)へ必要なデータベース(hamlogフォルダ)のみコピーします。
- ODBC_MySQL_Driver の設定をして、アプリを立ち上げます。