MySQL: 新規ユーザー登録をしようとしてエラー発生

旧 www.lifewithunix.jp サーバーで新しいWordPress のテーマをテストしようと、ローカルにテストサイトを一つ作成しようとして、MySQL のエラー発生。

WordPress の場合は、一台のサーバーに(リソースが許せば)複数のサイトを構築することが出来ます。対応する MySQL データベースは、一つでもいいし、Wordpress  サイトごとに複数準備してもいい。継続運用するなら、一つの MySQL データベースを使うのが楽なのですが、テストして没になる場合や、あとでテストURLを削除する予定の場合、データベースを分けておく方が、Wordpress とともデータベース丸ごと消去できるので便利だと思います。

それで、前のデータベースとは別に新しいデータベースとユーザーを追加しようとしました。

mysql コマンドを起動して、root でログインしたのち、

mysql> CREATE USER 'wordpress'@'localhost' IDENTIFIED BY 'wordpress';

とコマンドを発行したところ、最初に表示された、

ERROR 1054 (42S22): Unknown column 'plugin' in 'mysql.user'

と出て、ユーザーを追加できません。どういうこと?

データベースは追加できました。タイプミス?コマンドを間違った?

なら、phpMyAdminを使ったらどうだろう?とGUI から同じコマンドを発行したところ、やっぱり同じエラーが発生。(GUIをかぶせているだけなので、コマンドがあっているのなら、当たり前の結果。)

検索してみたところ、

http://blogeek.me/?p=88

というサイトに情報がありました。ありがとうございます。

MySQL をアップグレードする際、mysql.user がアップデートされていなかったんだそうです。pkg コマンドでインストール、更新メンテナンスしているので、pkg コマンドが全部やってくれるものと思っていました。よく考えると、pkg コマンドは、mysql の root パスワードを知らないわね。

対策は、

# mysql_upgrade -u root -p

で、アップグレードするんだそうです。

パスワードを入力すると、次のようにメッセージがたくさん出て来て、終了。

Enter password: 
Looking for 'mysql' as: mysql
Looking for 'mysqlcheck' as: mysqlcheck
Running 'mysqlcheck with default connection arguments
Warning: Using a password on the command line interface can be insecure.
Running 'mysqlcheck with default connection arguments
Warning: Using a password on the command line interface can be insecure.
mysql.columns_priv                                 OK
mysql.db                                           OK
mysql.event                                        OK
mysql.func                                         OK
mysql.general_log                                  OK
mysql.help_category                                OK
mysql.help_keyword                                 OK
mysql.help_relation                                OK
mysql.help_topic                                   OK
mysql.host                                         OK
mysql.ndb_binlog_index                             OK
mysql.plugin                                       OK
mysql.proc                                         OK
mysql.procs_priv                                   OK
mysql.servers                                      OK
mysql.slow_log                                     OK
mysql.tables_priv                                  OK
mysql.time_zone                                    OK
mysql.time_zone_leap_second                        OK
mysql.time_zone_name                               OK
mysql.time_zone_transition                         OK
mysql.time_zone_transition_type                    OK
mysql.user                                         OK
以下省略

この後で、(開いたままにしておいた phpMyAdminの)GUIからユーザー登録をしたら、あっさりパス。

解決しました。

コメントを残す