การติดตั้ง MySQL Tables เริ่มต้นใน Windows (mysql_install_db)


12

ใน Linux ตาราง MySQL อนุญาตเริ่มต้นสามารถสร้างด้วยmysql_install_dbสคริปต์ได้ แต่ใช้ไม่ได้กับ Windows

ตารางการให้สิทธิ์เริ่มต้นสามารถติดตั้งบน Windows ได้อย่างไร

(ไม่ฉันไม่ต้องการคำตอบที่ว่าผลลัพธ์ของ Google นั้นเต็มไปด้วยวิธีการติดตั้งบน Windows โดยอัตโนมัติเพราะนั่นเป็นเพียงกรณีที่มีการกระจายตัวติดตั้งไม่ใช่แพ็คเกจ ZIP นอกจากนี้ไม่ได้ช่วยอะไร ติดตั้ง MySQL และไดเรกทอรีข้อมูลเสียหายหรือถูกแทนที่หรือเช่นนั้น)

คำตอบ:


13

ฉันรู้ว่าฉันเคยเจอสิ่งนี้มาก่อนและพยายามหาทางดังนั้นฉันจึงค้นหาไดรฟ์และพบไฟล์แบตช์ที่ฉันเขียนครั้งล่าสุด

สำหรับผู้อื่นที่ประสบปัญหานี้สิ่งที่คุณต้องทำคือเรียกใช้ daemon เซิร์ฟเวอร์ด้วย--bootstrapพารามิเตอร์

นี่คือสคริปต์ที่ผมใช้ในการถ่ายโอนฐานข้อมูลทั้งหมดออกไปยังแฟ้ม SQL และนำเข้าอีกครั้ง (ซึ่งก็คือตนเองและลำบาก-ดำเนินการคู่ MySQL เพื่อ SQLite ของvacuumคำสั่ง)

::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_"

5

หากคุณมีภาวะที่กลืนไม่เข้าคายไม่ออกนี้ใน MySQL ให้ตารางสำหรับ Windows ฉันขอแนะนำต่อไปนี้:

ขั้นตอนที่ 1 รับการแจกจ่าย ZIP FIle ที่ไม่มีตัวติดตั้ง

ขั้นตอนที่ 2. Unzip มันเป็นเนื้อหาที่จะ 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 โดยปิดใช้งานตารางการให้สิทธิ์

ขั้นตอนที่ 4 คุณจะต้องป้อน superuser ด้วยตนเอง แบบนี้

ก) 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', ... ผู้ใช้ที่ไหน = 'รูท' และโฮสต์ = '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

ตอนนี้คุณสามารถเข้าสู่ mysql ในฐานะรูทโดยใช้ 'whatpasswordyouwant' เป็นรหัสผ่าน

ให้มันลอง !!!


ขอบคุณสำหรับเคล็ดลับ; นั่นเป็นขั้นตอนหลายขั้นตอนในการพิจารณาบน Linux มันใช้เพียงสคริปต์เดียว :-(
Synetech

3

FYI,

ก็--initializeตอนนี้แทนการเลิกใช้--bootstrap


NB เพื่อความสมบูรณ์:

วิธีเปิดใช้งานโดยใช้บัญชีที่ไม่ได้รับสิทธิพิเศษ:

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

จากนั้นเริ่มเซิร์ฟเวอร์:

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

2

สำหรับทุกคนที่ใช้ XAMPP และประสบปัญหานี้ XAMPP มาพร้อมกับข้อมูลสำรองของตาราง mysql เริ่มต้นเหล่านี้

คัดลอกทุกอย่างในโฟลเดอร์นี้C:\xampp\mysql\backup\mysqlแล้ววางลงC:\xampp\mysql\data\mysqlทับเขียนทุกอย่าง

ถูกเตือน: ข้อมูลอาจสูญหาย - ฉันไม่รู้ฉันติดตั้งใหม่ทั้งหมด


มันมีประโยชน์สำหรับ XAMPP แต่มันเป็นสถานการณ์การใช้งานที่ จำกัด เนื่องจาก MySQL มีจุดประสงค์ทั่วไปมากกว่าเว็บเซิร์ฟเวอร์เดียว
Synetech

โอ้ฉันรู้. ฉันแค่ต้องการโพสต์ว่ามีใครก็ตามที่ลงจอดในหน้านี้หลังจาก Googling สำหรับข้อผิดพลาดนั้นและยังใช้ XAMPP (เช่นฉัน) ฉันไม่คาดหวังว่าสิ่งนี้จะถูกทำเครื่องหมายว่ายอมรับ แต่จะถูกทิ้งไว้เป็นข้อมูลอ้างอิงสำหรับผู้อื่น
Alec Gorge

โอเคเท่ห์ ฉันไม่ทราบว่าต้องรีเซ็ต XAMPP ด้วยตนเองเป็นปัญหาทั่วไป
Synetech

มันไม่ใช่ฉันไม่มีเงื่อนงำว่าเกิดอะไรขึ้นและฉันไม่ต้องการเรียกใช้ตัวติดตั้งอีกครั้งเนื่องจากกลัวว่าจะเขียนทับไฟล์กำหนดค่าที่ตกแต่งอย่างระมัดระวัง: P
Alec Gorge

โอ้ฉันรู้! เนื่องจาก MySQL ไม่มีวิธีการย่อขนาดไฟล์ฐานข้อมูล (เช่นvacuumคำสั่งของ SQLite3, et al.) ฉันต้องทำการดัมพ์ด้วยตนเองและสร้างขึ้นมาใหม่ตอนนี้เนื่องจากไม่มีพื้นที่เยอะ แต่ฉันมักจะกังวลเกี่ยวกับการทำเช่นนั้นดังนั้นฉันจึงทำให้มันนานที่สุด
Synetech
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.