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 don’t 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-tables
및 skip-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
모든 내용을 덮어 씁니다.
경고 : 데이터가 손실 될 수 있습니다. 잘 모르겠습니다. 새로 설치했습니다.