旧 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をかぶせているだけなので、コマンドがあっているのなら、当たり前の結果。)
検索してみたところ、
というサイトに情報がありました。ありがとうございます。
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からユーザー登録をしたら、あっさりパス。
解決しました。