Windows에서 기본 MySQL 테이블 설치 (mysql_install_db) Windows의 결과가 Windows에 자동으로 설치되는 방법에

Linux에서 mysql_install_db스크립트를 사용 하여 기본 MySQL 권한 부여 테이블을 작성할 수 있지만 Windows에서는 작동하지 않습니다.

Windows에서 기본 부여 테이블을 어떻게 설치할 수 있습니까?

(아니요, Windows의 결과가 Windows에 자동으로 설치되는 방법에 대한 결과로 가득 찬 구글의 결과는 찾지 못했습니다. 왜냐하면 ZIP 패키지가 아닌 설치 프로그램 배포의 경우에만 해당되기 때문입니다. MySQL이 설치되어 있고 데이터 디렉토리가 손상되었거나 교체 중입니다.)



답변

나는 이것을 전에 직면하고 그것을 알아낼 수 있다는 것을 알았으므로 드라이브를 검색하고 마지막에 쓴 배치 파일을 찾았습니다.

이 문제가 발생하는 다른 사람은 --bootstrap매개 변수를 사용 하여 서버 데몬을 실행해야합니다 .

다음은 모든 데이터베이스를 SQL 파일로 덤프하고 다시 가져 오는 (즉, SQLite vacuum명령에 대한 MySQL 대응 물을 수동으로 그리고 불편하게) 가져 오는 데 사용한 스크립트 입니다.

::Start the server, change to the MySQL bin directory, and dump all databases
net start MySQL
cd       /d "%serverdir%\MySQL\bin"
mysqldump  -uroot -p --all-tablespaces --all-databases --add-drop-database --add-drop-table --add-locks --comments --complete-insert --compress --create-options --events --routines --quick --quote-names --set-charset --triggers > %temp%\all.sql

::Stop the server and rename the data directory (as backup)
net stop mysql
ren         "%datadir%\MySQL"        MySQL_

::Delete data folder in MySQL directory, optionally copy old mysql tables
rd    /s /q "%serverdir%\MySQL\data"
md          "%serverdir%\MySQL\data"
xcopy /s /e "%datadir%\MySQL_\mysql" "%serverdir%\MySQL\data"

::Bootstrap the server (creates grant tables if they dont exist)
mysqld --bootstrap

::Run server, optionally upgrade tables and move upgrade log to data directory
start mysqld --skip-grant-tables
mysql_upgrade --force
move "%serverdir%\MySQL\bin\mysql_upgrade_info" "%serverdir%\MySQL\data"

::Import all databases, shutdown, delete logs, then move to old data dir
mysql      -uroot -p < %temp%\all.sql
mysqladmin -uroot -p shutdown
md  "%datadir%\MySQL"
del "%serverdir%\MySQL\data\ib_logfile?"
xcopy /s /e "%serverdir%\MySQL\data\*" "%datadir%\MySQL"
rd    /s /q "%serverdir%\MySQL\data"

::Start the server, if it works, then all should be well, so del
net start mysql
rd    /s /q "%datadir%\MySQL_"

답변

Windows 용 MySQL 권한 부여 테이블에서이 이상한 딜레마가 발생한 경우 다음을 권장합니다.

1 단계. 설치 프로그램이없는 ZIP 파일 배포판을 가져옵니다.

2 단계. 내용을 압축 해제 C:\MySQLZipStuff

3 단계. 폴더를 찾습니다 C:\MySQLZipStuff\data\mysql

단계 4. 모든 파일을 C:\MySQLZipStuff\data\mysql원하는 데이터 디렉토리의 mysql 폴더로 복사하십시오.

5 단계. net start mysql

mysql 폴더가 이미 있다면 대신 다음을 수행 할 수 있습니다.

1 단계. my.ini[mysqld] 섹션에이 줄을 추가하여 편집

[mysqld]
skip-grant-tables
skip-networking

2 단계. net stop mysql

3 단계. net start mysql

이때 ‘mysql’만 입력하면됩니다. 그러나 grant 테이블이 비활성화 된 상태에서 GRANT 명령을 실행할 수 없습니다.

단계 4. 하나의 수퍼 유저를 수동으로 입력해야합니다. 이렇게

ㅏ) INSERT INTO mysql.user SET user='root',host='localhost';

비) SELECT * FROM mysql.user WHERE user='root' AND host='localhost'\G

사용자 테이블의 모든 열이 표시됩니다. 다음과 같이 각 열을 수동으로 변경해야합니다.

업데이트 mysql.user SET select_priv = ‘Y’, insert_priv = ‘Y’, … WHERE user = ‘root’AND host = ‘localhost’;

c) 다음과 같이 root @ localhost의 비밀번호를 설정하십시오.

UPDATE mysql.user SET password=PASSWORD('whateverpasswordyouwant')
WHERE user='root' AND host='localhost';

5. 제거 단계 skip-grant-tablesskip-networking에서를my.ini

단계 6. net stop mysql

7 단계. net start mysql

이제 비밀번호로 ‘whateverpasswordyouwant’를 사용하여 mysql에 root로 로그인 할 수 있습니다.

시도 해봐 !!!


답변

참고로,

그건 --initialize대신 사용되지 않는의 지금--bootstrap


NB. 완전성을 위해 :

권한이없는 계정을 사용하여이를 실행하려면 다음을 수행하십시오.

mysqld.exe --log_syslog=0 --console --standalone --initialize

그런 다음 서버를 시작하십시오.

mysqld.exe   --log_syslog=0 --console --standalone

답변

XAMPP를 사용하고이 문제가 발생하는 모든 사람에게 XAMPP는 이러한 기본 mysql 테이블의 백업을 제공합니다.

이 폴더의 모든 내용을 복사 C:\xampp\mysql\backup\mysql하여에 붙여넣고 C:\xampp\mysql\data\mysql모든 내용을 덮어 씁니다.

경고 : 데이터가 손실 될 수 있습니다. 잘 모르겠습니다. 새로 설치했습니다.