MAMPのMySQLサーバが起動しない件 – MySQL DatabaseのUpgradeでOK

MacでWebアプリ開発環境を作ろうとする時、手軽に始められるのでユーザーも多いMAMP

Apache(Webサーバ)・MySQL(SQLデータベースサーバ)・Webプログラミング言語のPHP・MySQL管理ツールのphpMyAdminSQLiteなど、いくつかの補助的なソフトウェアとライブラリモジュールを、まとめて一発でMacにインストールできちゃうという優れものです。

MacintoshApacheMySQLPHPの頭文字 を並べてMAMPっちゅうわけです。

世間的には、Webプログラミング言語のPerlもセットされていて、WindowsでもMacでもLinuxでも使えるXAMPPの方が有名で、ユーザーも多いんですが、私はもっぱらMAMPを使っています。

MAMP ver 2.1.3にバージョンアップしたが・・・

さて、ここから本題。

サイトを置いているレンタルサーバが皆PHP 5.4を使える様にしてくれたので、自分のローカル環境でもPHP 5.4がテスト出来る様にと、MAMPを2.1.3にバージョンアップしました。

まず、今まで使っていたMAMPをフォルダごとApplicationsフォルダ外に退避させ、新たにMAMP ver 2.1.3をインストール(デフォルトでApplicationsフォルダにインストールされます)します。

そして新しくインストールされたMAMPフォルダから「db」フォルダと「htdocs」フォルダはゴミ箱へ移動させます。

代わりに古い方のMAMPフォルダから「db」フォルダと「htdocs」フォルダを新しいMAMPのフォルダに移動させ、今まで作った実験サイトやアプリを丸ごと引っ越しさせます。(「db」フォルダにはMySQLとSQLiteのデータが、「htdocs」フォルダには自分が作成したサイトを構成する各ファイルやWebアプリのファイルが入っとります。)

これでバージョンアップは完了。MAMP.appを起動させ、localhost内の実験サイトにアクセス・・・としたところ、MAMPのMySQLサーバが立ち上がらない!

MySQLが起動しないMAMP

MySQLサーバがが起動しないMAMP

前回、MAMPを終了させた時、MySQLサーバが停止されないままになっていて、一部のプロセスが終了せずに残っていた時、こんな現象が起るんですよね。(と、またなっちゃったかと思う自分)

まずはKillall -9 mysqldなのだ

この場合はターミナルを使い、MySQLサーバの全てのプロセスを一旦終了させる為

を実行します。

ターミナル画面上では、

となります。

killallは「プロセス名を指定してプロセスを終了させる」。は「オプションの意味」で、9が付くと「Killシグナルによるプロセスの終了」。mysqldは「MySQLサーバのプロセス名」という事です。

これを実行しようとターミナルを起動させると、想定外のターミナルのトラブル発生です。bashのコマンドが見つからないと、ターミナルでエラーメッセージが出ます。MAMPのメンテナンス以前にターミナルのメンテをしなくちゃ。

これはbashのPATHがおかしくなっていたので、これを片付けて(詳細はこちら→ターミナルで-bash: 1: command not foundが出た。→PATHがおかしいんでしょ)、ターミナルで

を試してみたんですが、

No matching processes belonging to you were found(そんなプロセスはないよ)

との返答です。つまりMySQLサーバは起動していない→終了しているって事です。MySQLサーバが起動できない原因は別に有る様です。

MySQL ver 5.5からは’default-charactor-set’は’character-set-server’に

となると、まずMAMPを起動させた時のMySQLの状態をチェックしなければなりません。MySQLのエラーメッセージを調べてみます。

MAMPのMySQLのlogは、MAMP > logs > mysql_error_log.errに有ります。

MAMPのMySQLのエラーメッセージ unknown-variable 'default-character-set=utf8'

unknown variable ‘default-charactor-set=utf8’(default-charactor-set=utf8という宣言されていない変数がある)というエラーメッセージが出ています。

MySQLの起動時に、初期設定ファイルから設定を呼び込む時、未宣言の変数’default-charactor-set=utf8’がファイルに有ったという事ですね。

MAMPがバージョンアップすると共に、その中のMySQLのバージョンもアップしている筈です。

調べてみると、MAMP2.1.3のMySQLのバージョンは5.5.29でした。バージョンアップによる変更点を調べてみると、バージョン5.5では今迄使っていた変数’default-charactor-set’は使えなくなり、代わりに’character-set-server‘を使えとの事。

1.4. What Is New in MySQL 5.5 – MySQL

MAMPのMySQLの初期設定ファイルは、MAMP > db > mysql > my.cnfにありますが、このmy.cnfの[client]と [mysqld] セクション(グループ)に記述した

に変更・保存して、MAMPを再起動させます。

しかし、まだMySQLは起動しません。

my-medium.cnfを使ってmy.cnfを初期化する

エラーメッセージを開くと、

MAMPのMySQLのエラーメッセージ Found option without preceding group in config file

found option without preceding group in config file(初期設定ファイル内の先のグループにないオプションが見つかった)

と言う警告になっていますが、ちょっと意味が判り難いですね。

MySQLの初期設定ファイルmy.cnf内には[client]・ [mysqld] ・[mysqldump]・[mysql]・ [mysqlhotcopy] のグループ(セクション)毎にオプションの設定をまとめて記述する様になっています。

my.cnf中のグループの中に、他のグループとは違オプションが有るという事です。

見落とし箇所が有る様なので、とりあえずmy.cnfをMySQL ver 5.5.29用のもので初期化し、そこから文字コードの設定をした方が間違いがなさそうです。

my.cnfをver 5.5.29用に初期化するには、my.cnfの中身を消去し、

MAMP > Library > Support-file > my-medium.cnf

の中身をコピーしてやるだけでいいです。

初期化後、[client]と [mysqld] セクション(グループ)に

を付け加えてやります。

さて、これでMAMPを再起動させればMySQLも起動するだろうと思ったんですが、またもや起動せず。

mysql_upgradeするんですね

エラーメッセージは、

MAMPのMySQLのエラーメッセージ mysql_upgrade

please run mysql_upgrade to create it(mysql_upgradeして下さい)です。

MySQLのバージョンがアップしたから、以前のデータベースのシステムテーブルのmysqlプロキシーが無くなったので、それを作る為にmysql_upgradeするってことですか。

具体的なやり方は、

MAMP PRO, MySQLをアップグレード – biginsprite log

で紹介されていました。ターミナルを使わなくても、簡単な方法で出来るんですね。

私の使っているのはPRO版じゃない無印のMAMPなんですが、メニューバーのTools > Upgrade MySQL databasesを選択し、

MAMPのupgrade MySQL databasees

出てきたウインドウ下部の「Upgrade」ボタンをクリックすとmysql_upgradeできます。

MAMPのupgrade MySQL databaseesのUpgradeボタン

さあこれでMySQLも起動できるでしょうと、MAMPを再起動させます。

MAMP 起動

やっとこさ、MySQLを起動させられました。時間がかかりましたー。

 

参 考

エラーメッセージ – unknown variable ‘default-charactor-set=utf8’で悩まされた人が多いんですね。

[MySQL] “[ERROR] /usr/libexec/mysqld: unknown variable ‘default-character-set=utf8″の対処法 – DQNEO起業日記

でも、解決の過程を丁寧に書かれています。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です