如何在 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未定义主机名的用户被解释为 user test@%,例如任何host,它是不同的用户,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 将处理剩下的事情。

相关内容