web-dev-qa-db-ja.com

エラーコード:1133。ユーザーテーブルで一致する行が見つかりません

私はO'Relly "Learning MySQL"を読んでいて、これを行うだけでMySQLでユーザーを作成できると言っています:

mysql> GRANT ALL ON *.* TO 'jill'@'%.invyhome.com' IDENTIFIED BY 'the_password';
Query OK, 0 rows affected (0.01 sec)

しかし、私がやろうとした場合:

-> grant select on testgrounds.personas to ''@'localhost';
--> Error Code: 1133. Can't find any matching row in the user table

しかし、パスワードを使用すれば成功します。

->grant select on testgrounds.personas to ''@'localhost' identified by 'pass';
--> 0 row(s) affected

私は実験していてそれらを台無しにしたので、ユーザーrootの特権を復元する必要があったので、実行する前に本のステートメントを実際に使用できると思います(100%覚えていません)

-> select current_user;
--> 'root@localhost'

-> show grants;
--> 'GRANT ALL PRIVILEGES ON *.* TO \'root\'@\'localhost\' IDENTIFIED BY PASSWORD \'*4ACFE3202A5FF5CF467898FC58AAB1D615029441\' WITH GRANT OPTION'
--> 'GRANT ALL PRIVILEGES ON `testgrounds`.* TO \'root\'@\'localhost\' WITH GRANT OPTION'
--> 'GRANT PROXY ON \'\'@\'\' TO \'root\'@\'localhost\' WITH GRANT OPTION'

MySQLのインストールまたはセットアップに何か問題がありますか?

7
Jh62

これはMySQLのインストールまたはセットアップの問題ではありません。

ホスト名が指定されていない場合でも、各アカウント名は「user_name」@「Host_name」のようにユーザーとホスト名の両方で構成されます。 MySQLリファレンスマニュアル: から

MySQLアカウント名は、ユーザー名とホスト名で構成されます。これにより、異なるホストから接続できる同じ名前のユーザーのアカウントを作成できます。

これにより、MySQLは接続に使用するホストに応じてさまざまなレベルの権限を付与することもできます。

MySQLがホスト部分を認識しないアカウントの許可を更新すると、このアカウントを識別するためのパスワードがない場合、エラーコード1133が返されます。

また、MySQLはアカウント名をそのユーザー名のみで指定できるようにしますが、この場合は 'user_name' @ '%'として扱われます。

2
cjtcook