विंडोज में डिफ़ॉल्ट MySQL टेबल्स स्थापित करना (mysql_install_db)


12

लिनक्स में, डिफ़ॉल्ट MySQL अनुदान तालिका mysql_install_dbस्क्रिप्ट के साथ बनाई जा सकती है , लेकिन यह विंडोज पर काम नहीं करती है।

डिफ़ॉल्ट अनुदान तालिकाओं को विंडोज पर कैसे स्थापित किया जा सकता है?

(नहीं, मैं इस प्रतिक्रिया की तलाश नहीं कर रहा हूं कि Google के परिणाम इस बात से भरे हुए हैं कि वे कैसे विंडोज पर स्वचालित रूप से इंस्टॉल हो जाते हैं, क्योंकि यह केवल इंस्टॉलर वितरण के साथ है, न कि ज़िप पैकेज। इसके अलावा, इसके बाद मदद नहीं करता है। MySQL स्थापित है और डेटा निर्देशिका क्षतिग्रस्त है या प्रतिस्थापित किया जा रहा है या ऐसे।)

जवाबों:


13

मुझे पता था कि मैंने इससे पहले सामना किया था और यह पता लगाने में कामयाब रहा, इसलिए मैंने अपनी ड्राइव की खोज की और एक बैच फ़ाइल मिली जिसे मैंने पिछली बार लिखा था।

किसी और के लिए जो इस मुद्दे का अनुभव करता है, जो आपको करने की ज़रूरत है वह --bootstrapपैरामीटर के साथ सर्वर डेमॉन को चलाने के लिए है।

यहां वह स्क्रिप्ट है जिसका उपयोग मैंने सभी डेटाबेस को एक एसक्यूएल फ़ाइल में डंप करने के लिए किया था और उन्हें फिर से आयात किया (जो कि, मैन्युअल रूप से और असुविधाजनक रूप से- 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_"

5

यदि आपके पास Windows के लिए MySQL अनुदान तालिकाओं में यह अजीब दुविधा है, तो मैं निम्नलिखित सलाह देता हूं:

चरण 1. ज़िप FIle वितरण प्राप्त करें जिसमें इसमें इंस्टॉलर नहीं है।

चरण 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' टाइप कर सकते हैं और आप अंदर हैं। हालाँकि, आप ग्रांट कमांड को अनुदान तालिका के साथ नहीं चला सकते।

चरण 4. आपको मैन्युअल रूप से एक सुपरयुसर दर्ज करना होगा। ऐशे ही

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

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

यह उपयोगकर्ता तालिका के सभी कॉलम दिखाएगा। आपको प्रत्येक कॉलम को मैन्युअल रूप से इस तरह बदलना होगा:

UPDATE mysql.user SET select_priv = 'Y', insert_priv = 'Y', ... व्हेयर यूजर = 'रूट' और होस्ट = 'लोकलहोस्ट';

ग) इस तरह रूट @ लोकलहोस्ट के लिए पासवर्ड सेट करें:

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 में पासवर्ड के रूप में 'जो कुछ भीpasspassyouwant' का उपयोग कर रूट के रूप में लॉग इन कर सकते हैं।

कोशिश तो करो !!!


सुझावों के लिए धन्यवाद; यह लिनक्स पर विचार करने के लिए बहुत सारे कदम हैं यह केवल एक स्क्रिप्ट लेता है। :-(
सिंटेक

3

FYI करें,

यह --initializeअब है, बजाय पदावनत--bootstrap


एनबी। परिपूर्णता के लिए:

एक अप्रकाशित खाते का उपयोग करके इसे चलाने के लिए:

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 (मेरी तरह) का उपयोग करे। मुझे उम्मीद नहीं है कि इसे स्वीकार किए जाने के रूप में चिह्नित किया जाएगा, लेकिन दूसरों के लिए संदर्भ के रूप में छोड़ दिया जाएगा।
एलेक गॉर्ज

ठीक है। मुझे महसूस नहीं हुआ कि XAMPP को मैन्युअल रूप से रीसेट करना एक आम समस्या थी।
Synetech

यह नहीं है, मुझे कोई सुराग नहीं है कि यह कैसे हुआ और मैं इंस्टॉलर को सावधानीपूर्वक मैनीक्योर कॉन्फ़िगरेशन फ़ाइलों को ओवरराइट करने के डर से इंस्टॉलर को फिर से चलाना नहीं चाहता था: पी
एलेक जॉर्ज

ओह, मुझे पता है! चूंकि MySQL में डेटाबेस फ़ाइल को सिकोड़ने की बिल्ट-इन विधि नहीं है (जैसे कि vacuumSQLite3, et। Al।), मुझे इसे मैन्युअल रूप से डंप करना होगा और एक नया बनाना होगा, क्योंकि तब मेरे पास बहुत जगह नहीं है; लेकिन मैं हमेशा ऐसा करने के बारे में चिंतित हूं, इसलिए मैंने इसे यथासंभव लंबे समय के लिए बंद कर दिया।
Synetech
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.