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@%.어느호스트는 다른 사용자 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이 처리할 것입니다.

관련 정보