programing

MySQL에 대해 삭제된 'root' 사용자 및 암호를 복원하는 중

codeshow 2023. 10. 19. 22:54
반응형

MySQL에 대해 삭제된 'root' 사용자 및 암호를 복원하는 중

제가 실수로 삭제를 했습니다.rootOS X에서 실행되는 MAMP/MySQL의 로컬 개발 설정에서 사용자.MySQL에 다시 들어가기 위해 만들어진 다른 사용자가 없습니다.

이건 가벼운 악몽이야, 아니면 아무것도 할 수 없을 것 같아요.root.

이것을 찾았습니다: http://hack2live.blogspot.com/2009/04/restore-repair-reset-mysql-root.html . 내가 정확히 필요로 하는 것 같습니다.

또한 MAMP를 다시 설치해도 효과가 없을 것이라고 생각합니다. 왜냐하면 많은 간단한 검색을 통해 성공하지 못한 사람들이 나왔기 때문입니다.

OSX에 친숙한 재생성 방법을 아는 사람이 있습니까?root@localhost다시 MAMP의 MySQL로 돌아가는 건가요?저는 기본적으로 MySQL이 MAMP에서 어디에 살고 있는지, 단말기에서 올바른 명령을 실행하여 수정하는 방법을 모릅니다.

갱신하다

루트를 복원하기 위해 아래의 몇 가지 옵션을 시도했지만 아무 소용이 없었고 전체 MAMP 애플리케이션의 백업을 복원하기로 결정했습니다.그래서 나는 루트를 되찾았고, php myadmin 등을 열 수 있습니다.

나는 빠르고 더러운 방법을 가지고 있습니다.

SysAdmin 권한을 가진 사람을 불러와 다음을 수행합니다.

  1. [mysqld] 섹션 아래의 my.cnf에 'skip-rant-tables'를 추가합니다.

  2. mysql을 다시 시작합니다.

  3. 암호가 없는 mysql을 입력하고 Enter 키를 누릅니다.

  4. 실행 내용:

    DELETE FROM mysql.user 
    WHERE  user = 'root' 
           AND host = 'localhost'; 
    
    INSERT INTO mysql.user 
    SET user = 'root', 
        host = 'localhost', 
        password = Password('whatevernewpassword'), 
        Select_priv = 'y',
        Insert_priv = 'y',
        Update_priv = 'y',
        Delete_priv = 'y',
        Create_priv = 'y',
        Drop_priv = 'y',
        Reload_priv = 'y',
        Shutdown_priv = 'y',
        Process_priv = 'y',
        File_priv = 'y',
        Grant_priv = 'y',
        References_priv = 'y',
        Index_priv = 'y',
        Alter_priv = 'y',
        Show_db_priv = 'y',
        Super_priv = 'y',
        Create_tmp_table_priv = 'y',
        Lock_tables_priv = 'y',
        Execute_priv = 'y',
        Repl_slave_priv = 'y',
        Repl_client_priv = 'y',
        Create_view_priv = 'y',
        Show_view_priv = 'y',
        Create_routine_priv = 'y',
        Alter_routine_priv = 'y',
        Create_user_priv = 'y',
        Event_priv = 'y',
        Trigger_priv = 'y',
        Create_tablespace_priv = 'y';
    
  5. mysql에서 나가기

  6. [mysqld] 섹션 아래의 my.cnf에서 'skip-grant-tables'를 제거합니다.

  7. mysql을 다시 시작합니다.

그게 다일거에요!

http://hack2live.blogspot.com/2009/04/restore-repair-reset-mysql-root.html 의 번역판 - OS X용.

TextEdit.app을 열고 Format -> "일반 텍스트 만들기"를 선택합니다.
다음 내용을 텍스트 편집에 잘라 붙여넣고 이름과 함께 홈 폴더에 저장합니다.restore_root_privileges.sql

update mysql.user set Super_priv='y' where user='root';
update mysql.user set Select_priv='y' where user='root';
update mysql.user set Insert_priv='y' where user='root';
update mysql.user set Update_priv='y' where user='root';
update mysql.user set Delete_priv='y' where user='root';
update mysql.user set Create_priv='y' where user='root';
update mysql.user set Drop_priv='y' where user='root';
update mysql.user set Reload_priv='y' where user='root';
update mysql.user set Shutdown_priv='y' where user='root';
update mysql.user set Process_priv='y' where user='root';
update mysql.user set File_priv='y' where user='root';
update mysql.user set Grant_priv='y' where user='root';
update mysql.user set References_priv='y' where user='root';
update mysql.user set Index_priv='y' where user='root';
update mysql.user set Alter_priv='y' where user='root';
update mysql.user set Show_db_priv='y' where user='root';
update mysql.user set Super_priv='y' where user='root';
update mysql.user set Create_tmp_table_priv='y' where user='root';
update mysql.user set Lock_tables_priv='y' where user='root';
update mysql.user set Execute_priv='y' where user='root';
update mysql.user set Repl_slave_priv='y' where user='root';
update mysql.user set Repl_client_priv='y' where user='root';
update mysql.user set Create_view_priv='y' where user='root';
update mysql.user set Show_view_priv='y' where user='root';
update mysql.user set Create_routine_priv='y' where user='root';
update mysql.user set Alter_routine_priv='y' where user='root';
update mysql.user set Create_user_priv='y' where user='root';

TextEdit.app을 저장했다가 종료합니다.

내 sqld 서버 좀 막아줘요MySQL에 어떤 설치를 사용했는지에 따라 이를 수행하는 방법이 달라집니다. 시스템 기본 설정에 기본 설정 창이 있을 수 있습니다. 그렇지 않은 경우 MySQL 설치에 대한 문서를 참조해야 합니다.

터미널.app(Applications/Utilities) 열기다음 명령을 입력합니다.

sudo mysqld --skip-grant-tables &  #start your MySQL server without access control
mysql -vv < ~/restore_root_privileges.sql
sudo mysqladmin -p shutdown

일반적으로 MySQL 서버를 시작합니다(예: 환경설정 창).
Terminal.app:에 다음을 입력합니다.

mysql -u root -p
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
mysql> quit;

그게 전부입니다.보증 없이.잘못하면 데이터를 모두 잃을 수 있습니다.먼저 mysql 파일을 백업합니다.

다음과 같은 것이 있다면:

-bash: mysql: command not found

즉, 당신의 설치가 잘못되었다는 것을 의미하며, 당신은 당신의 mysql 바이너리가 어디에 있는지 찾아야 하며, 당신의 PATH 변수에 디렉토리를 입력해야 합니다.

저도 똑같은 문제가 생겼어요.저는 윈도우 7에서 Xammp를 사용하고 있습니다.pphmyadmin에서 root 사용자를 실수로 삭제했습니다.

다음과 같이 쉬운 경로로 문제를 해결할 수 있었던 것 같습니다.

xammp 제어에서 apache 및 mysql 중지

.../xammp/mysql로 이동

resetroot 파일이 나타납니다.이 파일 실행

이 응용 프로그램이 끝나면 mysql과 apache를 다시 시작합니다.

phpmyadmin으로 이동하면 root 사용자가 복원된 것을 볼 수 있습니다.

이제 모든 데이터베이스에 다시 액세스할 수 있습니다.

MySQL 5.7은 password 필드를 authentication_string(mysql.user table에 있는)으로 대체했기 때문에 이것은 저에게 효과가 있었습니다.

INSERT INTO mysql.user 
SET user = 'root', 
host = 'localhost', 
authentication_string =Password('Yours_own_password'), 
Select_priv = 'y',
Insert_priv = 'y',
Update_priv = 'y',
Delete_priv = 'y',
Create_priv = 'y',
Drop_priv = 'y',
Reload_priv = 'y',
Shutdown_priv = 'y',
Process_priv = 'y',
File_priv = 'y',
Grant_priv = 'y',
References_priv = 'y',
Index_priv = 'y',
Alter_priv = 'y',
Show_db_priv = 'y',
Super_priv = 'y',
Create_tmp_table_priv = 'y',
Lock_tables_priv = 'y',
Execute_priv = 'y',
Repl_slave_priv = 'y',
Repl_client_priv = 'y',
Create_view_priv = 'y',
Show_view_priv = 'y',
Create_routine_priv = 'y',
Alter_routine_priv = 'y',
Create_user_priv = 'y',
Event_priv = 'y',
Trigger_priv = 'y',
Create_tablespace_priv = 'y',
ssl_cipher = '',
x509_issuer = '',
x509_subject = '';

맘프로다른 사용자를 생성할 때 루트 사용자를 삭제하는 흔한 실수를 저질렀습니다. 잠겼습니다!

그래서 이 게시물을 찾아서 지시를 따르려고 했지만...

명령 mysql 명령을 실행하려고 할 때 이 오류가 발생했습니다. -bash:mysql: 명령을 찾을 수 없습니다. 나중에 루트 사용자에게 적절한 권한을 설정하고 셸에서 mysql을 사용하면 해당 사용자에게 작업을 수행하려고 할 때 테이블 'user'에 대해 사용자 ''@'localhost'에 대해 DELETE 명령이 거부되었습니다.

그래서 에릭과 롤란도가 올린 명령을 사용하기 전에 (그것에 대해 감사합니다) 이것이 제가 한 일입니다.

sqld를 제대로 시작해야 해서 다음 작업을 수행해야 했습니다.

  1. 다음과 함께 발견된 mysqld 프로세스 중지

    psaux | grep mysql

and stop the mamp interface application aswell..

  1. 그리고 모든 mysql 프로세스를 중지했습니다.

    kill -9 [pid]

do make sure no mysql process are running before you go any further.

  1. 그런 다음 mysql 이진 파일이 있는 실제 위치에서 sqld를 제대로 재시작해야 했습니다. 이 명령어는 암호를 묻지 않고 sqld를 시작합니다(안전 모드에서와 같은).

/응용프로그램/MAMP/라이브러리/빈/mysqld --skip-rant-table --skip-networking &

.cnf 파일로 시도해 보았지만 작동하지 않았습니다.

  1. 그 다음에 나는 껍데기 안에 있는 mysql에 들어가야 했습니다.

/응용프로그램/MAMP/라이브러리/빈/mysql -u root -p

(비밀번호를 입력하라는 메시지가 나타나면 Enter 키를 누릅니다.)

  1. 그런 다음 eric과 Rolando가 게시한 명령을 실행합니다. 이번에는 테이블 'user'에 대해 DELETE 명령이 사용자 ''@'localhost'에 거부됨"이라는 오류가 나타나지 않았습니다. 만약 당신이 실행한다면, 당신은 내 sqld를 제대로 시작하지 않았습니다.

  2. 그런 다음 mysqld 서비스를 중지합니다.

/응용프로그램/MAMP/라이브러리/빈/mysqld 중지

그 다음에 gui로 평소처럼 mamp를 다시 시작했습니다.

그리고 모든 것이 예전처럼 다시 작동하기 시작했습니다...너무 안심했어요!!!

콘솔에 2시간 동안의 공황상태와 시행착오...귀중한 교훈.

만약 내가 명령이나 설명을 망쳤다면 (이 게시물을 쓰면서 내 단계를 추적하고 있었기 때문에 그럴 수 있습니다) 알려주세요.기꺼이 게시물을 업데이트하겠습니다.

마지막으로 주지 마세요.할 수 있습니다!!

맥과 sql 서버를 처음 접하는 어제도 똑같은 일을 했습니다.새로운 사용자와 비밀번호를 설정하려다가 권한의 버튼을 잘못 눌러 루트 사용자를 실수로 삭제하였습니다.

저는 이 컴퓨터에 어떤 용도로도 사용할 수 없었기 때문에 제 웹사이트를 삭제하는 것에 대해 걱정하지 않았습니다.

  • 먼저 MAMP Pro를 제거했습니다(Launchpad에 아이콘이 있음).
  • 그런 다음 Applications 폴더에서 MAMP 디렉토리를 삭제했습니다.
  • 그리고 나서 인터넷 다운로드에서 MAMP를 다시 설치했습니다.
  • 그런 다음 사파리에서 쿠키, 캐시 등을 모두 삭제했습니다.
  • 컴퓨터를 종료하고 재부팅했습니다.

MAMP가 부팅되면 시작 페이지의 링크를 통해 phpMyAdmin에 액세스할 수 있습니다.

제가 이 문제를 해결한 방법에 기여하고 싶었을 뿐입니다.MAMP PRO에서 루트 사용자를 실수로 삭제하고 Time Machine 백업과 함께 OSX를 사용하는 경우.찾기에서 이 폴더로 이동하기만 하면 됩니다.

/라이브러리/애플리케이션 지원/앱솔루트/

그런 다음 상단 메뉴 바에서 'Time Machine을 입력하고 MAMP PRO 폴더의 최근 백업을 복원합니다.수고를 덜었습니다.

MySQL 실행을 중지하고 함께 제공된 설치 파일을 여십시오.resetroot.bat라는 이름의 bat 파일이 있어야 합니다.실행하면 문제가 사라집니다.

센트OS 6에서 작업했습니다. 그렇지 않으면 버전이 모두 잘 흔들렸기 때문에 Create_tablespace_priv = 'y'를 꺼내야 했습니다.

언급URL : https://stackoverflow.com/questions/6085455/restoring-deleted-root-user-and-password-for-mysql

반응형