« 映画について | トップページ | HHKBについて »

2017年11月 5日

【備忘録】WindowsのMySQL(zip版)における初期セットアップについて

先週、今週にかけてデータベースエンジニアとして活動していた。
俺はネットワークエンジニアになりたくて

この業界に入ったんだが?


でも上の命令には逆らえないからね。
ノーと言えない日本人。それが俺。



今回は言葉の通り、MySQLについての話。


なんでこんな話をしてるかというと、今の現場で上から
『今後VMで用意しておくと検証が楽だから、作っといて』
と言われたからだ。


環境を用意するだけならmsi版の方が操作が楽なのだが、zip版だと
・レジストリ弄らないで済む
・前提となるファイル(.NET Frameworkとか)を気安くインストールできない環境の場合
・横浜駅前の工事はいつになったら終わるのか
こんな時に便利なので、覚えておいて損はない。
客先常駐で勝手にソフトをインストールしたりするとPCチェックで引っかかって
「何遊んどるんじゃゴラァ」
とヤクザ(偉い人)に凄まれかねないので注意しようね。いやマジで。


※実際にやって困ったところも合わせて記載しているので、参考程度に。
 MySQLのバージョンは5.7.20を対象としている。



まず服を脱ぎます。まずzip版をダウンロードします。
MySQLの公式サイトからzip版を落としてくる。
32bitとか64bitとか聞かれるので選ぶ。
自分のOSが32bitか64bitか分からくなったお茶目さんは、デスクトップ上から
[Win]+[Pause]でバージョン確認できるので、それを試してね。

※バージョンの確認

0001


※MySQL公式サイトからのダウンロード

0000

途中で「Sign Up」とか言われてもNo thanksでOK。


zipを解凍して、事前準備を実施する。
まず親フォルダ(binフォルダやdocsフォルダが入っているところ)の名前を
[mysql-5.7.20-winx64]から[mysql]に変え、mysqlフォルダをCドライブ直下に置く。
でも場所はどこでも良いよ。パス書きやすいところに置きたいだけだから。

0002


Webで情報を漁る限り、かつて[my-default.ini]ファイルがあったらしいのだが
今は入っていない。なので作成する。

#####ここから下の内容を書く#####
[client]
port=3306
[mysqld]
port=3306
# dirs
basedir="C:/mysql"
datadir="C:/mysql/data"
tmpdir = "C:/mysql/temp"
autocommit=0
# logging
log_output=TABLE,FILE
log_error_verbosity=3
log_error="C:/mysql/logs/mysqld_error.log"
general_log=1
general_log_file="C:/mysql/logs/general_query_all.log"
log-slow-admin-statements=1
log-queries-not-using-indexes=1
slow_query_log=1
long_query_time=1
slow_query_log_file="C:/mysql/logs/slow_query.log"
log_syslog=0
log_timestamps=SYSTEM
character_set_server = utf8
[mysql]
default_character_set=utf8
default-time-zone="+9:00"
#####ここまで#####

パスはバックスラッシュじゃなくてスラッシュにすること。
ポートの指定とかはデフォルト値なので書かなくても問題ない気もするが、
念のため書いている。
合わせてそれぞれの用途に使うフォルダ(data/temp/logs)を用意する。
作った[my-default.ini]ファイルは[mysql]フォルダ直下に置く。

0003



さっそくコマンドプロンプトを起動させて、以下を打ち込む。

cd C:\mysql\bin

mysqld --defaults-file="C:\mysql\my-default.ini" --standalone --console
ここで分かってくれたと思うが、パスを用意するときに
mysqlのバージョンまで書いてあると何かと不便だから②でフォルダ名を変更したということ。

さあSQL Serverが立ち上がるぞ!
と思いきやこける。

0004

この
[Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist]
というのは、テーブルの初期化をやっていないからこけたということ。
なので、一回初期化する。

mysqld --initialize

そしてこける。

0005

どうもさっきの[mysqld --defaults-file= ~]実施時に
dataフォルダ内にファイルが生成され、それが邪魔してるみたい。
0006
なので、これら生成されたファイルを一度削除し、再度

mysqld --initialize

を実施。

0007

上手くいったね。
それじゃ最初に戻って以下のコマンドを打ち込もう。

mysqld --defaults-file="C:\mysql\my-default.ini" --standalone --console
0013


なんかここで止まったんだが?
ふざけてんの?



Webで調べると、どうもWebから「http://localhost」でアクセスチェックできることを
確認したいみたい。
ちなみにこの時点でもう一つコマプロ立ち上げてSQLログインしようとしても
弾かれます。

0009

あとDockerってなんだ?
しらねーよ。

俺は!
SQLを!!
使いたいだけなんだ!!!



ムンクの如く魂の雄叫びを心に刻みながら冷静に読み解くと、
どうもこの箇所は「--disable-partition-engine-check」でスキップできるようだ。
なので[Ctrl]+[C]で抜けて、打ち直し。

mysqld --defaults-file="C:\mysql\my-default.ini" --standalone --console --disable-partition-engine-check
0010

(゚∀゚)キタコレ!!


しかしClient側はaccess denyとかで入れないので、
サーバ側でスキップグラントオプションを指定する必要がある。

mysqld --defaults-file="C:\mysql\my-default.ini" --standalone --console --disable-partition-engine-check --skip-grant-tables
そうすれば入れるので、速やかにパスワードを設定してあげよう。



さて、これでSQLが使えるようになったわけだが
これだとSQL Serverを立ち上げてSQL Clientを立ち上げる工程が
非常に面倒くさい。
なのでバッチファイルを用意して、自動でログイン直前までできるようにする。

・mysqlフォルダ内にcalls.batを用意する。

#####中身(calls.bat)######

@echo off
start "SQL Server" /min C:\mysql\bat\serv.bat
timeout /T 2
start "SQL Client" C:\mysql\bat\client.bat

#####ここまで######


・mysqlフォルダ内に[bat]フォルダを用意して、
 [serv.bat]と[client.bat]を用意する。

#####中身(serv.bat)######

@echo off
cd c:\mysql\bin
mysqld --defaults-file="C:\mysql\my-default.ini" --console --standalone --disable-partition-engine-check
pause

#####ここまで######
#####中身(client.bat)######

@echo off
cmd /k cd c:\mysql\bin

#####ここまで######


これで、calls.batを叩くだけでmysqlコマンド直前まで一発でいける。
以上、おしまい。

早くネットワークの仕事に戻りたいなあ。

« 映画について | トップページ | HHKBについて »

仕事」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

« 映画について | トップページ | HHKBについて »