테스트 환경에서 다음과 같이 동일한 이름의 사용자와 DB를 만들었습니다.
create user 'test'@'localhost' identified by 'blablabla';
create database test;
다음과 같이 사용자를 DB와 연결하려고 할 때 (사용자에게 모든 권한을 부여하는 동시에) :
grant all privileges on test.* to test;
이 오류가 발생했습니다.
오류 1133 (42000) : 사용자 테이블에서 일치하는 행을 찾을 수 없습니다.
일치하지 않는 것이 무엇인지 이해할 수 없습니다. 때문에 show databases;
그리고 SELECT user FROM mysql.user;
나는이 오류가 발생하는 이유 단서은 사용자와 DB가 모두 성공적으로 만들어 졌는지, 내가 그리워.
이 오류가 발생하는 이유는 무엇입니까?
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
호스트 이름이 정의되지 않은 이름 의 사용자 는 다른 사용자이며 완전히 다른 암호를 가질 수있는 모든 호스트에 test@%
대해 user로 해석됩니다 .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이 처리합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다