MySQL -恐怖の設定ファイル、エラー1067- | パークのソフトウエア開発者ブログ|ICT技術(Java・Android・iPhone・C・Ruby)なら株式会社パークにお任せください

パークのソフトウエア開発者ブログ|ICT技術(Java・Android・iPhone・C・Ruby)なら株式会社パークにお任せください

開発の解決方法や新しい手法の情報を、パークのエンジニアが提供します。パークのエンジニアが必要な場合は、ぜひお気軽にお問い合わせ下さい。 株式会社パーク:http://www.pa-rk.co.jp/

こんにちは、むらしです。初投稿となります。
”こんなこともわからねーのか”というような事ばかり書くと思いますが、何かに役立てば幸いです。

DBの勉強をするためにMySQLを自宅パソコンにインストールすることになりました。
その時に設定ファイルで詰まってしまいましたが、以下の方法で解決しましたのでまとめておきます。

今回は勉強ということもあり、インストーラーを使わずに行いました(*1)。順を追って書いていきますので、インストーラ無しでインストールする方の手助けになれば幸いです(設定ファイルの内容は意図的に間違えています。ですので最後まで読んでください!!)。

今回OSとしてwindows7、使用するMySQLのバージョンは5.6を用いました。

順を追って説明していきます。

まずダウンロードしたものを任意の場所(僕の場合はC直下)に解凍、そしてコマンドプロンプトで(MySQLフォルダ/bin)に移動します。次に

mysqld.exe --install(ハイフンは2つ)

と打ちます(環境変数をこのフォルダに設定しておくと楽です、下記からは設定したものとして進めます(*2)。

次に設定ファイルを作成し、指定のフォルダへ置きます。今回は「my.ini」というファイルを作成し、中身に以下の内容を書き込みました。指定のフォルダは、僕の環境では"C:/windows"でした(*3)。

//////////////my.ini///////////////////

[mysqld]
basedir = C:/(MySQLフォルダ)/
datadir = C:/(MySQLフォルダ)/data
default-character-set = utf8

[mysql]
default-character-set = utf8

///////////////////////////////////////

MySQLのサービスを開始します。方法は「コントロールパネル」→「管理ツール」→「サービス」に移動してMySQLを選択し、”サービスを開始”をクリック。コマンドプロンプトで行う場合は、管理者権限で実行して

net start mysql

と打つとサービスが開始されます。…のはずが以下の内容がポップアップで表示されました。

ローカルコンピュータのMySQLサービスを開始できません。エラー1067:プロセスを途中で強制終了しました

コマンドプロンプトで開始しようとすると以下の内容が…

MySQL サービスを開始します…MySQL サービスを開始できませんでした。システムエラーが発生しました。システムエラー1067が発生しました。プロセスを途中で強制しました。

エラー1067が立ちはだかります。再起動してみたり、設定ファイルを何回も見たり…時間が水のように流れます。調べたところ、このエラーは設定ファイルの"my.ini"が原因であるようです。汎用エラーコードのため、特定できませんので、設定ファイル内のパラメータをコメントアウト(*4)するなりして、ひたすらサービスを開始し続けます(*5)。そして[mysqld]の"default-character-set = utf8"をコメントアウトすると…

開始出来ました!!!

よくわからないけど出来たからいいや…いや、何かひっかかる。スペルミスはなかったはずなのに…!?調べたところ、"default-character-set"は、MySQL5.5から表記が変わったようです。正しくは"character-server-set"。設定ファイル"my.ini"を以下のように書き直します。

//////////////my.ini///////////////////

[mysqld]
basedir = C:/(MySQLフォルダ)/
datadir = C:/(MySQLフォルダ)/data
character-server-set = utf8

[mysql]
default-character-set = utf8

///////////////////////////////////////

これでサービス開始したところ、うまく開始出来ました。安心、安心…。
コマンドプロンプトでmysql -u rootでMySQLのコンソールに移ります。


せっかくなので設定ファイルについて軽くお勉強してみました。
設定ファイルはmysqlをコンソール上で実行した時に起動オプションとして実行されるもののようです(そこからか!)。設定ファイルが読み込まれる場所なのですが、デフォルトでは3か所あるようです(下記)。

●(WINDIR)¥my.ini(*3)
●C:¥my.cnf
●(MySQLフォルダ)¥my.ini

設定ファイル名は"my.ini"又は"my.cnf"、複数置いてしまうと、パソコンがどれを読み込んでよいのかわからなくなるのでやめましょう。

中身はクライアントセクションサーバーセクションに分かれているようです。

<クライアントセクション>
[mysql]はクライアントが参照します。クライアントセクションには他に[client]があります。[client]は、設定ファイルを参照するクライアント全てに適用されるのに対して、[mysql]はMySQLコマンドラインツール(mysql)だけが参照するようです。
<サーバーセクション>
[mysqld]はMySQLサーバが利用します。

mysqlを実行する時に起動オプションを付けますが(例えば"mysql -u root")、この起動オプションを設定ファイルに書き込んであげれば(mysqlで実行するので[mysql]内に記述)、いちいち入力しなくてすみます。
起動オプションは"mysql --help"と入力してあげると、一覧が出力されす。起動オプションを紹介しているサイト様もあるようなので、そちらも参考にしてみると良いかもしれません。default-storage-engine=InnoDBとか便利かもしれません(デフォルトのストレージエンジン変更)。


これでやっと勉強が始められる…本当に環境設定って嫌いです。


(*1)MySQL(http://dev.mysql.com/)のMySQL Community Serverのダウンロードページに飛び、
アーカイブ版をダウンロード
(*2)コマンドプロンプトに"setx"という、環境変数を設定するコマンドがあるようです
(setと異なり、永続的)
(*3)確認するには、コマンドプロンプトで"echo %WINDIR"と打ちましょう
(*4)"#"でコメントアウト出来るようです
(*5)設定ファイルで指定したdataフォルダの中に(コンピュータ名).errファイルがあるのです
が、そこを見ればエラーになったパラメータがわかりました

参考サイト
http://d.hatena.ne.jp/nightmare_tim/20110530/1306704112
http://darutk-oboegaki.blogspot.jp/2014/03/mysql-error-1067-process-terminated.html
http://www.dbonline.jp/mysql/myini/