Mysql

如何在 mysql CLI 中將 mysql DB 使用者與 mysql DB 關聯和授權?

  • November 17, 2017

在測試環境中,我以這種方式創建了一個具有相同名稱的使用者和一個數據庫:

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

當我以這種方式將使用者與數據庫關聯時(同時還向使用者授予所有權限):

grant all privileges on test.* to test; 

我收到了這個錯誤:

ERROR 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)

與 PostgreSQL 不同,MySQL 和 MariaDB 沒有單一使用者名角色。test未定義主機名的使用者被解釋為 user 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 將負責其餘的工作。

引用自:https://unix.stackexchange.com/questions/405175