mysql CLIでmysql DBユーザーをmysql DBに関連付け、権限を付与する方法は?

mysql CLIでmysql DBユーザーをmysql DBに関連付け、権限を付与する方法は?

テスト環境では、次のように同じ名前とデータベースを持つユーザーを作成しました。

create user 'test'@'localhost' identified by 'blablabla';
create database test;

このようにユーザーをデータベースに関連付けると(ユーザーにすべての権限も付与されます):

grant all privileges on test.* to test; 

次のエラーが発生します。

エラー1133(42000):ユーザーテーブルに一致する行がありません。

矛盾が何であるか理解していません。ユーザーとデータベースの両方が正常に作成されたという手がかりがshow databases;あるため、このエラーが発生した理由はわかりません。SELECT user FROM mysql.user;

このエラーが発生するのはなぜですか?

Abhik Boseのアップデート:

mysql> grant all privileges on test.* to 'test'@'localhost';
grant all privileges on test.* to 'test'@'localhost';
^C
mysql> grant all privileges on test.* to 'test'@'localhost';
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id:    4774
Current database: *** NONE ***

Query OK, 0 rows affected (0.00 sec)

答え1

PostgreSQLとは異なり、MySQLとMariaDBには単一のユーザー名の役割はありません。test未定義のホスト名を持つユーザーはユーザーとして解釈されますtest@%どのホストは別のユーザーでtest@localhostあり、まったく異なるパスワードを持つことができます。

やりたいことになります

GRANT ALL PRIVILEGES ON test.* TO test@localhost;

代わりに。実際にはCREATE USER別のステートメントを完全に省略し、次のことができます。

CREATE DATABASE test;
GRANT ALL PRIVILEGES ON test.* TO test@localhost IDENTIFIED BY 'password'; 

残りはMySQLが処理します。

関連情報