Mysql
如何在 mysql CLI 中將 mysql DB 使用者與 mysql DB 關聯和授權?
在測試環境中,我以這種方式創建了一個具有相同名稱的使用者和一個數據庫:
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
未定義主機名的使用者被解釋為 usertest@%
,對於任何主機,它是不同的使用者,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 將負責其餘的工作。