programing

MySQL | 정의자('test'@'%')로 지정된 사용자가 없습니다.

sourcejob 2023. 8. 7. 22:31
반응형

MySQL | 정의자('test'@'%')로 지정된 사용자가 없습니다.

내 안에서phpmyadmin나는 "testDB"라는 데이터베이스가 있고 내 명령줄로 데이터베이스를 내보내려고 하지만, 내가 이 명령을 실행하려고 할 때마다 나는 받습니다.mysql오류 1449:

mysqldump -u root -p testDB > data-dump.sql

오류는 다음과 같습니다. "LOCK TABLES를 사용할 때 정의자('myuser'@'%')로 지정된 사용자가 없습니다."

sql 파일을 분석해보니 이 사용자 이름이 파일 하단에 한 번만 표시됩니다.

"/* 50013 DEFINER='myuser'@'%' sql security definer */"

내보내기 데이터베이스가 없으면 새 사용자를 생성할 수 없으므로 이 문제를 해결하려면 어떻게 해야 합니까?

이 값을 데이터베이스에 대한 특정 SQL 명령으로 바꿀 수 있습니까?

내 서버 세부 정보:

-Apache/2.4.29

-MariaDB 10.4.18

-PHP 7.4.18

다음과 같은 이유로 사용자 이름이 아래에 한 번만 나타납니다.mysqldump데이터 내보내기를 완료하기 전에 종료됩니다.두 가지 가능한 해결책이 있습니다.

  1. 테이블, 루틴 및 트리거 생성 파일을 사용할 수 있는 경우 데이터만 내보낼 수 있습니다.
    mysqldump -u [user] -p --no-create-info testDB > data-dump.sql
    
  2. "아무도 보고 있지 않음"인 경우 다음을 생성할 수 있습니다.'myuser'@'%'임시로 계정을 생성하고 적절한 권한을 부여한 다음 덤프를 수행한 다음 사용자를 제거합니다.다음을 사용하여 데이터 내보내기를 수행하고 있습니다.root그래서 당신은 성에 대한 열쇠를 가지고 있습니다.
    mysql > CREATE USER IF NOT EXISTS 'myuser'@'%' IDENTIFIED WITH mysql_native_password BY 'superSecretPassword!123';
    mysql > GRANT USAGE ON `testDB`.* TO 'myuser'@'%';
    mysql > FLUSH PRIVILEGES;
    mysql > exit;
    
    그런 다음 데이터를 덤프합니다.
    $ mysqldump -u root -p testDB > data-dump.sql
    
    그런 다음 사용자 계정을 제거합니다(필요한 경우).
    mysql > DROP USER 'myuser'@'%';
    mysql > FLUSH PRIVILEGES;
    mysql > exit;
    
    제거하려는 경우DEFINERSQL 내보내기 행, 다음에 수행할 수 있습니다.mysqldump으로 완료합니다.sed:
    sed -i 's/DEFINER=[^*]*\*/\*/g' data-dump.sql
    
  3. 이 "DBA 방식"을 수행하려면 다음을 수정합니다.DEFINER데이터베이스의 모든 개체에 대해.DBA 스택 사이트의 이 답변을 통해 이 목표를 달성하는 방법을 시작할 수 있습니다.작업이 완료되면 오류가 다시 표시되지 않습니다.

언급URL : https://stackoverflow.com/questions/67413611/mysql-the-user-specified-as-a-definer-test-does-not-exist

반응형