programing

사용자 테이블에서 일치하는 행을 찾을 수 없습니다.

i4 2023. 7. 25. 20:26
반응형

사용자 테이블에서 일치하는 행을 찾을 수 없습니다.

이 쿼리를 실행하려고 합니다.

DROP DATABASE IF EXISTS `hotel`;

GRANT USAGE ON *.* TO 'user'@'localhost';
DROP USER 'user'@'localhost';

CREATE USER user@localhost IDENTIFIED BY 'user';

CREATE DATABASE `hotel`
    CHARACTER SET 'utf8'
    COLLATE 'utf8_general_ci';

GRANT USAGE ON *.* to 'user'@'localhost' identified by 'user';

하지만 저는 항상 오류가 납니다.

GRANT USAGE ON *.* TO 'user'@'localhost' Error Code: 1133. Can't find any matching row in the user table    0.000 sec

나는 생각했습니다.Grant usage사용자가 없는 경우 새 사용자를 만듭니다.뭐가 문제야?

저도 같은 오류가 발생했습니다.

grant all on newdb.* to newuser@localhost;

'식별자'로 해결:

grant all on newdb.* to newuser@localhost  identified by 'password';

사용자가 존재하지 않으면 Grant usage가 새 사용자를 생성한다고 생각했습니다.뭐가 문제야?

이전 버전의 mysql에서는 이러한 경우가 있었습니다.새로운 방법으로 수행하려면 이 답변을 참조하십시오.시스템 설정을 수정하여 이전과 같은 방식으로 작동하도록 하려면 계속 읽어 보십시오.그러나 링크된 설명서에 나와 있듯이 이 동작은 권장되지 않는 동작입니다.

NO_AUTO_CREATE_USER는 향후 MySQL 릴리스에서 제거될 예정이며, 이 시점에서 해당 효과가 항상 활성화됩니다(GRANT는 계정을 생성하지 않습니다).

설명서에서 mysql이 없는 경우 사용자를 만들 수 있도록 허용하는 옵션을 설정할 수 있습니다.

NO_AUTO_CREATE_USER

GRANT 문은 비어 있지 않은 암호도 지정하지 않은 경우 새 사용자를 자동으로 만들지 못하도록 합니다.

옵션을 설정하려면:

SET [GLOBAL|SESSION] sql_mode='sql' 문을 사용하여 sql_mode 시스템 값을 설정하여 실행 시 SQL 모드를 변경할 수 있습니다.

이 명령은 더 이상 사용자를 자동으로 생성하지 않습니다.

변경하지 마십시오.NO_AUTO_CREATE_USER변수, 대신 먼저 사용자를 생성합니다.CREATE USER명령을 실행한 다음 권한을 부여합니다.

DROP USER IF EXISTS 'user'@'localhost';
CREATE USER 'user'@'localhost' IDENTIFIED BY 'pass';
GRANT ALL PRIVILEGES ON database_name.* TO 'user'@'localhost';

스크립트 끝에 추가해 보십시오.

FLUSH PRIVILEGES;

언급URL : https://stackoverflow.com/questions/17597144/cant-find-any-matching-row-in-the-user-table

반응형