Mysql सेवा शुरू / बंद नहीं कर सकते


28

MySQL के साथ Debian Etch वेब सर्वर पर चलना।

मैं आमतौर पर msyql का उपयोग शुरू, बंद और पुनः आरंभ करता हूं:

/etc/init.d/mysql पुनः आरंभ करें

इस सेट पर किसी कारण के लिए मुझे निम्नलिखित मिलते हैं:

: ~ # /etc/init.d/mysql stop

MySQL डेटाबेस सर्वर को रोकना: mysqld विफल!

Mysql प्रक्रिया ठीक चल रही है:

:~# ps aux | grep mysql 
root      2045  0.0  0.1   2676  1332 ?        S    Jun25   0:00 /bin/sh /usr/bin/mysqld_safe
mysql     2082  0.6 10.7 752544 111188 ?       Sl   Jun25  18:49 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --skip-external-locking --port=3306 --socket=/var/run/mysqld/mysqld.sock
root      2083  0.0  0.0   1568   504 ?        S    Jun25   0:00 logger -p daemon.err -t mysqld_safe -i -t mysqld
root     11063  0.0  0.0   2856   716 pts/0    S+   17:29   0:00 grep mysql

मुझे यकीन है कि ऐसा करने के लिए वास्तव में कुछ आसान तरीके हैं लेकिन मैं समझना चाहता हूं कि क्या हो रहा है। मेरे लिए ठेठ तरीका काम क्यों नहीं कर रहा है?

अद्यतन के रूप में अद्यतन करें:

JBRLSVR001:/var/log/mysql# mysqladmin shutdown
JBRLSVR001:/var/log/mysql# dpkg --list mysql\*
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed 
|/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad)
||/ Name                                         Version                                      Description
 +++-============================================-============================================-========================================================================================================
un  mysql-client                                 <none>                                       (no description available)
un  mysql-client-4.1                             <none>                                       (no description available)
ii  mysql-client-5.0                             5.0.32-7etch8                                mysql database client binaries
ii  mysql-common                                 5.0.32-7etch8                                mysql database common files (e.g. /etc/mysql /my.cnf)
un  mysql-common-4.1                             <none>                                       (no description available)
ii  mysql-server                                 5.0.32-7etch8                                mysql database server (meta package depending on the latest version)
un  mysql-server-4.1                             <none>                                       (no description available)
ii  mysql-server-5.0                             5.0.32-7etch8                                mysql database server binaries

mysqladmin शटडाउन काम करता है, लेकिन मैं अभी भी उत्सुक हूं कि /etc/init.d/mysql कमांड क्यों काम कर रहा है।


मेरे लिए मुद्दा यह था कि हस्तनिर्मित स्थापना के /tmp/mysql.sockबजाय देखा गया था /var/run/mysqld/mysqld.sock। इसलिए, डेबियन अनुरक्षकों द्वारा स्क्रिप्ट चुपचाप, एक त्रुटि जारी कर रही थी। तुम बस ठीक करने के लिए है socket=में/etc/mysql/debian.cnf
Yvan

जवाबों:


25
mysqladmin shutdown

सर्वर को बंद करने के लिए काम करना चाहिए।

मैं दो संभावित संभावनाएं देखता हूं:

  1. MySQL में एक समस्या है और किसी कारण से बंद होने से इनकार कर रहा है।
  2. पिछले एडमिन ने कुछ अजीब किया। MySQL को स्थापित करने के लिए या तो init.d स्क्रिप्ट को संशोधित किया गया या डेबियन पैकेजों का उपयोग करने की जहमत नहीं उठाई।

क्या dpkg --list mysql\*कहता है?

/Var/log/mysql.err क्या कहता है? या अन्य mysql लॉग?

संपादित करें:

तो mysqladmin shutdownकाम किया?

उसी के अनुसार, mysql- सर्वर पैकेज स्थापित किया गया है (mysql-server-5.0; mysql-server पैकेज शायद सिर्फ एक स्टब है)। तो उन्होंने इसे स्थापित किया हो सकता है? दौड़ना debsums mysql-server-5.0आपको अधिक बता सकता है। dpkg --listfiles mysql-server-5.0मदद कर सकता है, भी ...

वास्तव में /etc/init.d/mysql में क्या है? मैंने पैकेज के उस विशिष्ट संस्करण की जाँच नहीं की है, लेकिन इसका उपयोग करने का प्रयास करना चाहिए mysqladmin shutdown... हो सकता है कि आप भाग्यशाली हों और उन्होंने ही इसे तोड़ा ...


चीयर्स, ने पोस्ट में कुछ और जानकारी जोड़ी।
डेरेक ऑर्गन

मुझे संदेह है कि उन्होंने Myqql
Derek Organ

किसी ने एक बार डेबियन पैकेज का इस्तेमाल किया, कम से कम। वे स्रोत से संकलित हो सकते हैं और वास्तविक फाइलों को उखाड़ फेंक सकते हैं, या इसे किसी और तरीके से तोड़ सकते हैं ...
फ्री

22

ऐसा क्यों हो रहा है

यह एक आम समस्या है यदि आप mysql आयात करते हैं और mysql डेटाबेस को स्वयं अधिलेखित करते हैं, जैसे कि जब आप mysqldump- बैकअप से पुनर्स्थापित हो सकते हैं।

यह एक अच्छी बात है: आप शायद अपने सभी mysql उपयोगकर्ताओं, अनुमतियों, आदि का बैकअप लेना चाहते हैं - लेकिन यह उन चीजों के साथ कहर बरपा सकता है जैसे कि डेबियन-एसआईएस-मेन्ट उपयोगकर्ता mysql को साफ़-साफ़ बंद करने के लिए उपयोग किया जाता है।

यद्यपि यह नया डेटाबेस संभवतः रूट पासवर्ड और डेबियन-एसआईएस-मेन्ट पासवर्ड दोनों को बदल देगा, निश्चित रूप से यह स्वचालित रूप से /etc/mysql/debian.cnf में अपेक्षित डेबियन-एसआईएस-मेन्ट पासवर्ड को नहीं बदलेगा। वास्तव में, जब तक आप उस फ़ाइल का बैकअप नहीं लेते, तब तक आप शायद यह भी नहीं जानते कि वह पासवर्ड अब क्या है!

Mysql रूट पासवर्ड (वैकल्पिक) रीसेट करना

पहली चीजें पहले। यदि पुराने और नए सर्वर के बीच mysql रूट पासवर्ड अलग था, तो आप इसे ठीक करने के लिए mysqladmin का उपयोग कर सकते हैं:

mysql -p -u root password 'newpassword'

हालाँकि, जब आपने mysql-server इंस्टॉल किया था, तो यह संभवत: आपको नए mysql रूट पासवर्ड के लिए प्रेरित करता था और आपने शायद उसी का उपयोग किया था जिसे आप पहले से उपयोग कर रहे थे।

डेबियन sys maint पासवर्ड को ठीक करें।

तो अब डेबियन सीस मेन्ट पासवर्ड देखें जो कि आपके लिए बनाया गया डेबियन है जब आपने इसे नए सर्वर पर स्थापित किया था। (आपको sudo की आवश्यकता है क्योंकि यह एक अत्यधिक संरक्षित फ़ाइल होनी चाहिए।)

sudo cat /etc/mysql/debian.cnf

अब, ऊपर सेट किए गए रूट पासवर्ड का उपयोग करके mysql में लॉग इन करें:

mysql -p -u root   # use your new password when prompted

डेबियन-सीस-मेन्ट उपयोगकर्ता के लिए पासवर्ड रीसेट करें और विशेषाधिकारों को फ्लश करना न भूलें:

>  SET PASSWORD FOR 'debian-sys-maint'@'localhost' = PASSWORD('samepassword');
>  FLUSH PRIVILEGES;
>  QUIT

यह सुनिश्चित करने के लिए परीक्षण करें कि यह काम करता है:

sudo /etc/init.d/mysql restart

जल्द सलाह

अगर आपको कभी सर्वर डाउन करने के लिए बिना सर्वर के रूट पासवर्ड को रीसेट करने की आवश्यकता होती है, तो इस उपयोगकर्ता खाते के पास ऐसा करने का अधिकार है - बस debian.cnf फ़ाइल को कैट करें और उस उपयोगकर्ता के साथ लॉग इन करें। NB इस उपयोगकर्ता खाते को रूट की तरह सुरक्षित रखें।


2
धन्यवाद, जैमिसन, इसने संभवतः मुझे काम के घंटे बचाए।
slhck

1
बहुत बढ़िया, और पूरी तरह से आपका स्वागत है! मुझे उस फ़ाइल पर वापस गिरना पड़ा है जितना बार मैं स्वीकार करना चाहता हूं;)
जेमिसन बेकर

1
शानदार जवाब। डेटाबेस डंप आयात करना (और इसके साथ, रूट पासवर्ड) मेरे मामले में बिल्कुल यही कारण था। अंतर केवल इतना है कि मेरी debian.cnf फ़ाइल ने "debian-sys-maint" के बजाय mysql "root" उपयोगकर्ता का उपयोग किया। मैं बस debian.cnf में रूट पासवर्ड डालता हूं और अब मैं "सेवा mysql <कमांड" के माध्यम से mysql को नियंत्रित कर सकता हूं।
टॉमाज़ पी। स्ज़िनल्स्की

6

2 और संकेत:

sh -x /etc/init.d/mysql restart

यह आपको init स्क्रिप्ट द्वारा निष्पादित कमांड दिखाएगा।

पैकेज डिम्बस स्थापित करें, और आप जांच कर सकते हैं कि कौन से पैकेज संशोधित किए गए (आरपीएम के लिए भी सत्यापन उपलब्ध है, लेकिन IMHO बेहतर काम करता है)।


1
मुझे ओपी के रूप में एक ही समस्या थी और इस कमांड को चलाने का सुझाव दिया "Access denied for user 'debian-sys-maint'@'localhost'"गया था, जो बिल्कुल सही था: मेरे mysql डेटाबेस ने अभी तक कोई अनुमति नहीं दी थी, इसलिए mysql stopडेटाबेस में खुद को बंद करने की अनुमति नहीं थी। एक मैनुअल mysqladmin shutdownपूरी तरह से काम किया।
jevon

5
pkill mysql

निश्चित रूप से काम करेंगे


यह मेरे सवाल का हल है "mysql डेटाबेस सर्वर mysqld को रोकना विफल"। आपको एक लाख अंक मिलना चाहिए!
हंस वासिंक

2

मान लिया जाए कि पैकेज कुछ अजीब है तो समस्या फ़ाइल हो सकती है। मुझे संदेह है कि नए पैकेज या संकलित इंस्टॉलेशन ने / var / run / mysql / बनाया नहीं है या पिड फ़ाइल के लिए जो भी लिखा है, उसके लिए मानक है या init स्क्रिप्ट दूसरी जगह पर mysqld.pid फ़ाइल की तलाश में है। यदि आप init / pid फ़ाइल को ठीक कर सकते हैं तो बेमेल चीजों को शायद काम करना चाहिए।


Init स्क्रिप्ट सर्वर को रोकने के लिए pid फ़ाइल का उपयोग नहीं करता है।
अभिषेक

2

Myetql शटडाउन स्क्रिप्ट 'mysqladmin shutdown' को चलाने के लिए deet-sys-maint उपयोगकर्ता का उपयोग करती है, /etc/mysql/debian.cnf से उपयोगकर्ता के लिए पासवर्ड पढ़कर। आपको जाँचना चाहिए कि यह फ़ाइल मौजूद है, और आप इस उपयोगकर्ता के रूप में mysqladmin शटडाउन चला सकते हैं।


1

आप इसे तकनीकी रूप से समाप्त कर सकते हैं:

pkill -9 mysqld

लेकिन आप डेटा खो सकते हैं?

आप http://www.serverfault.com पर किसी से पूछना बेहतर हो सकता है


मैं इसे इस तरह से करने के बारे में पता कर रहा हूँ, लेकिन डिओ नहीं है जो मैं नियमित रूप से करने के लिए देख रहा हूँ।
डेरेक ऑर्गन

1

"Pkill mysql" का उपयोग करने से आपको संभवतः डेटा खोना होगा, खासकर अगर "pkill -9" :(

मैं 'sh-x' का उपयोग करने की अनुशंसा करता हूं, यह देखने के लिए कि क्या init स्क्रिप्ट में समस्या हो सकती है, और आप MySQL (/ var / log / mysql या / var / lib / mysql) के लिए त्रुटि लॉग में भी जा सकते हैं , विन्यास पर निर्भर करता है) यह देखने के लिए कि क्या यह वास्तव में लंबे समय से चल रही क्वेरी या किसी चीज़ पर अटका हुआ है और इस तरह से अभी तक अनुग्रहपूर्वक छोड़ने के लिए तैयार नहीं है।


1

आपके प्रश्न पर टिप्पणी का पालन करने के लिए, मैं एक पूर्ण उत्तर लिखूंगा:

मुद्दा यह है कि डिफ़ॉल्ट सॉकेट /tmp/mysql.sockMySQL स्रोत के /var/run/mysqld/mysqld.sockसाथ है , और डेबियन बायनेरिज़ के साथ है।

समाधान में सॉकेट पथ को ठीक करने के लिए है /etc/mysql/debian.cnf, अच्छा प्रदान करके socket=। या इसे रखकर, लेकिन फिर एक को बदल दें /etc/mysql/my.cnf

यहां बताया गया है कि मुझे यह कैसे पता चला: /etc/init.d/mysqlजब «संदेश» में विफल रहा, तो आपके पास यह पंक्ति है:

echo -e "$ps_alive processes alive and '$MYADMIN ping' resulted in\n$ping_output\n" | $ERR_LOGGER -p daemon.debug

इसने मुझे इशारा किया $MYADMIN ping, जो है mysqladmin --defaults-file=/etc/mysql/debian.cnf ping। इस आदेश को चलाने पर समाप्त होता है:

/ usr / bin / mysqladmin: 'localhost' पर सर्वर से कनेक्ट विफल रहा

त्रुटि: 'सॉकेट के माध्यम से स्थानीय MySQL सर्वर से कनेक्ट नहीं किया जा सकता' /var/run/mysqld/mysqld.sock '(2)'

जांचें कि mysqld चल रहा है और सॉकेट: '/var/run/mysqld/mysqld.sock' मौजूद है!

तो मैंने एक नज़र देखा /etc/mysql/debian.cnfऔर पाया कि खराब सॉकेट था।


0

निम्नलिखित कमांड का उपयोग करें:

$ mysqladmin बंद

यह आपके मामले में / usr / bin डायरेक्टरी में उपलब्ध होना चाहिए।


0

डेबियन पर mysql (और अधिकांश अन्य सेवाओं) को रोकने के लिए आपको एक सुपर उपयोगकर्ता होने की आवश्यकता है।

निश्चित नहीं कि आप पहले से हैं या नहीं ... यदि नहीं, तो आपको एक काम करने की जरूरत है

  • रूट के रूप में लॉग इन करें
  • अपने /etc/init.d/mysql पुनरारंभ कमांड से पहले sudo लगाएं (यह आपसे आपका पासवर्ड मांगेगा, और आपको sudoers समूह में रहने की आवश्यकता होगी)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.