プロが教える店舗&オフィスのセキュリティ対策術

mySQLが起動しなくて困っています。環境はwindows7です。

以下にエラーまでの手順を書かせていただきます。
(1)コマンドラインでmysqldを実行する
(2)ログファイルにエラーをはいて終了する。

以下にエラーログを貼り付けさせていただきます。また簡単なコメントも付加させていただきます。

120123 9:22:02 [Note] Plugin 'FEDERATED' is disabled.
MySQL: Table 'mysql.plugin' doesn't exist ・・・(1)
120123 9:22:02 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
・・・(2)
120123 9:22:02 InnoDB: The InnoDB memory heap is disabled
120123 9:22:02 InnoDB: Mutexes and rw_locks use Windows interlocked functions
120123 9:22:02 InnoDB: Compressed tables use zlib 1.2.3
120123 9:22:02 InnoDB: Initializing buffer pool, size = 128.0M
120123 9:22:02 InnoDB: Completed initialization of buffer pool
120123 9:22:02 InnoDB: highest supported file format is Barracuda.
120123 9:22:02 InnoDB: Waiting for the background threads to start
120123 9:22:03 InnoDB: 1.1.8 started; log sequence number 1647042
120123 9:22:03 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist

(1)これはデフォルトで出るものらしいので問題ないと思います
(2)ここが主な原因だと思われます。また、ここに書かれているmysql_upgradeを実行するためにはmySQLを起動させなければいけないため、実質実行不可能です。

以上です。何かお気づきの点がありましたら助言いただけると幸いです。

A 回答 (5件)

こんにちは。



>datadir=C:/software/study/mySQL/data
>という行を追加することによって

このパスは合ってますか?
    • good
    • 0
この回答へのお礼

すいません。結局再インストールして解決しました。
色々お付き合いいただいて、この結末で申し訳ありませんが、これにて質問終了とさせていただきます。

ありがとうございました。

お礼日時:2012/01/26 11:52

こんばんは。



>まずこの点なのですが、私の環境はWindowsなのでこれはないんじゃないかと推測しております。

そうね・・・、ないです。

>こちらも実は探したのですが、見つかりませんでした。

いや、これは見つけてもらわないと話が進みません・・・。
my.iniならそのままですが、my.cnfならmyだけになってます。
これは死ぬ気で見つけてください・・・笑。
ここにデータフォルダのパスが設定されてるので、間違っていたら修正してください。
もしも間違っていないのなら、設定ファイルをちゃんと読めてないのかも知れません。
その場合、起動スクリプトのオプションで、
--defaults-file="設定ファイルのパス"
を指定すれば、うまくいくかも知れません・・・。

>なぜこれが原因だとわかったのですか?

だって、MySQLが言ってます。
テーブルが開けないから作れ・・・と。
そんなテーブルねぇよ!!・・・と。

この回答への補足

なんどもお返事ありがとうございます。

色々検索した結果、
mysqlのフォルダ以下にこのようなファイルを発見しました。
my-large.ini
my-small.ini
my-medium.ini
my-innodb-heavy-4G.ini
my-huge.ini
そしてこのファイルの中身を見たところ、どうも設定ファイルぽいです。

ただ問題はどのファイルを読んでいるかわからないことです。そこで設定ファイルを読み込んでいる場所をさがすために、mysqlコマンドにオブションでhelpをつけました。
その結果、以下のようなメッセージを発見しました(ちょっときれてますが。。。)
Default options are read from the following files in the given order:
C:\Windows\my.ini C:\Windows\my.cnf C:\my.ini C:\my.c
y\mySQL\my.ini C:\software\study\mySQL\my.cnf
おそらくここに書かれている場所から設定ファイルを読み込もうとしているでしょう。しかしmy.iniやmy.cnfというファイルはドライブ全体に検索をかけてもヒットしませんでした。

そこで自分でmySQLフォルダ以下にmy.cnfというファイルを作成して、内容は
my-medium.iniに書かれていた内容をコピペしました。
そしてそこに対して
datadir=C:/software/study/mySQL/data
という行を追加することによって(デフォルトではそれらしい設定は書かれていませんでした)、dataフォルダのありかを指定するようにしました。
が結果は残念ながら、変わりませんでした。

そこで
<<起動スクリプトのオプションで、--defaults-file="設定ファイルのパス"
をやったところ以下のメッセージがかえってきました。変わった点としては
「120123 9:22:03 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist」がなくなっているところです。

120123 20:11:53 [Note] Plugin 'FEDERATED' is disabled.
mysqld: Table 'mysql.plugin' doesn't exist
120123 20:11:53 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgr
ade to create it.
120123 20:11:53 InnoDB: The InnoDB memory heap is disabled
120123 20:11:53 InnoDB: Mutexes and rw_locks use Windows interlocked functions
120123 20:11:53 InnoDB: Compressed tables use zlib 1.2.3
120123 20:11:53 InnoDB: Initializing buffer pool, size = 128.0M
120123 20:11:53 InnoDB: Completed initialization of buffer pool
120123 20:11:53 InnoDB: highest supported file format is Barracuda.
120123 20:11:53 InnoDB: Waiting for the background threads to start
120123 20:11:54 InnoDB: 1.1.8 started; log sequence number 1647042
120123 20:11:54 [ERROR] Aborting

このことから考えるに、もとから二つのバグがあり、片方がとれたということでしょうか?

何度もお手数をおかけいたしますが、何かお気づきの点や、見解などがあればご指摘いただけると幸いです。よろしくお願いいたします。

補足日時:2012/01/23 20:20
    • good
    • 0

こんにちは。



単純に、MySQLのデータディレクトリがおかしい・・・という事ですね。
データベースが初期化されていないので、本来あるべきテーブルとかが、見えてないです・・・はい。
mysql_install_dbをやり直し。
または、my.cnf(my.ini)のパスを修正。
ですな。

この回答への補足

お返事ありがとうございます。

<<mysql_install_dbをやり直し。
まずこの点なのですが、私の環境はWindowsなのでこれはないんじゃないかと推測しております。私もこれを探したのですが、少なくともインストールされたフォルダ内にはないようです。

<<my.cnf(my.ini)のパスを修正。
こちらも実は探したのですが、見つかりませんでした。Windowsでは拡張子のせいで隠れているという話もあったのですが、どうにも自分にはみつけれませんでした。ただ、ならWindowsではどこで設定を保存しているのか、という問題になるのでこれの代わりになるようなファイルはあるはずなのですが、今のところ発見できていません。

また少し質問の意図からそれますが
<<データベースが初期化されていないので
なぜこれが原因だとわかったのですか?今後、またこのような問題が発生したときのために
検索方法などを伺いたいです。

補足日時:2012/01/23 17:48
    • good
    • 0

サービスプログラムはサービスから起動するようにプログラムされているので


「コマンドラインでmysqldを実行する」ことは多分出来ないと言う意味です。

この回答への補足

お返事ありがとうございます。

サービスから起動させてみたのですが、残念ながら動きませんでした。

また少し論争になるかもしれませんが、私の環境では実行すると、コンソールにエラーメッセージが出て、そのメッセージはログとして保存されていますので、実行できていると考えます。

また何かお気づきの点がありましたら、ご指摘いただけると幸いです。

補足日時:2012/01/23 11:32
    • good
    • 0

mysqldはサービスプログラムとして作られているはずですので、コントロールパネルの管理ツールのサービスのMySQLで開始する必要があると思います。

この回答への補足

お返事ありがとうございます。

サービスから起動しているプログラムがこのmysqldだと私は認識しています。
間違っていたらお手数ですが再度ご指摘ください。

補足日時:2012/01/23 11:09
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!