MySQL จะไม่เริ่มทำงาน!


12

ฉันได้รับข้อผิดพลาดนี้เมื่อพยายามเข้าสู่ MySQL จากบรรทัดคำสั่ง:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

ฉันคิดว่านี่หมายความว่า MySQL ยังไม่ได้เริ่ม ดังนั้นฉันพยายามเริ่ม:

sudo /etc/init.d/mysql start

และฉันได้รับข้อความนี้:

* Starting MySQL database server mysqld [fail] 

ฉันจะดูได้ที่ไหน / ฉันจะทำอย่างไรเพื่อให้ MySQL เริ่มต้น? ฉันใช้ Ubuntu 8.04 และติดตั้ง MySQL ผ่าน apt-get ฉันสามารถเริ่มต้นใช้งานและใช้งานได้สองครั้งดังนั้นฉันจึงไม่รู้ว่าทำไมจึงหยุดทำงาน

อัปเดต:เมื่อใช้งาน sudo /etc/init.d/mysql สถานะฉันได้รับข้อความ:

* MySQL is stopped.

อัปเดต # 2:ไฟล์บันทึกของฉัน (/var/log/mysql.log & /var/log/mysql.err) ว่างเปล่า (ถ้าไฟล์เหล่านี้ถูกต้อง)


สิ่งที่เกิดขึ้นเมื่อคุณ sudo สถานะ /etc/init.d/mysql
emgee

คำตอบ:


10

ใน Ubuntu 12.04 ฉันมีปัญหาเดียวกันนี้หลังจากเปลี่ยนขนาดบัฟเฟอร์ในไฟล์ /etc/mysql/my.cnf ฉันคิดว่าตัวเองหายไปเล็กน้อย อย่างไรก็ตามหลังจากพยายามเปลี่ยนกลับไปเป็นค่าเริ่มต้น MySQL ก็จะไม่เริ่มทำงาน

ฉันลองวิธีการหลายวิธีเพื่อแก้ไขปัญหาฉันสังเกตว่า /var/run/mysql/mysql.sock หายไป นี่อาจเป็นปัญหาดังนั้นคุณอาจตรวจสอบที่นั่นและหากมันหายไปคุณสามารถแทนที่ได้โดยทำดังต่อไปนี้:

sudo touch /var/run/mysql/mysql.sock
sudo chown mysql /var/run/mysql/mysql.sock

นี้ไม่ไม่ได้แก้ไขปัญหาให้ฉัน! แต่มันอาจสำหรับบางคน

สิ่งที่ฉันต้องทำคือติดตั้ง MySQL ใหม่อย่างสมบูรณ์เพื่อทำสิ่งนี้คุณจะต้องใช้คำสั่ง sudo ขั้นตอนในการลบและติดตั้ง MySQL ใหม่อย่างสมบูรณ์มีดังนี้:

ลบ MySQL

sudo apt-get --purge remove mysql-server
sudo apt-get --purge remove mysql-client
sudo apt-get --purge remove mysql-common

คุณสามารถใช้ความถนัดโดยเลือกแทนที่apt-get --purgeด้วยaptitude

ทำความสะอาด

sudo apt-get autoremove
sudo apt-get autoclean

ลบ MySQL dir

sudo rm -rf /etc/mysql

ติดตั้ง MySQL

sudo apt-get install mysql-server mysql-client

MySQL ควรจะทำงานอยู่คุณสามารถตรวจสอบสิ่งนี้ได้โดยทำดังนี้

sudo service mysql status

คุณควรเห็น

mysql start/running, process xxxxx

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

หมายเหตุ: หากคุณมีนามสกุล mysql สำหรับ php คุณจะต้องติดตั้งใหม่อีกครั้ง

sudo apt-get install php5-mysql

สิ่งนี้ใช้งานได้สำหรับฉัน แต่ฉันต้องเปลี่ยนเป็น: sudo touch /var/run/mysqld/mysqld.sockและฉันพบสิ่งนี้ตั้งแต่สิ้นสุดการ/var/log/syslog เปลี่ยนแปลง (เช่นเปลี่ยนเป็น mysqld)
Programter

มันเป็น/var/run/mysqldหรือ/var/run/mysql?
CMCDragonkai

การสัมผัสไฟล์ถุงเท้านั้นเป็นความคิดที่ไม่ดีคุณได้สร้างไฟล์ปกติขึ้นมาแล้วเมื่อซ็อกเก็ตจริงๆซึ่งเป็นไฟล์ชนิดพิเศษ
Criggie

3

คำเตือน: สิ่งนี้เป็นอันตราย mysql ของคุณจะไม่ปลอดภัยและใครก็ตามที่สามารถเชื่อมต่อแก้ไข ฯลฯ ตารางของคุณอย่าปล่อยให้เซิร์ฟเวอร์ของคุณทำงานด้วยคำสั่งนี้

ลองเริ่มในเซฟโหมด: /usr/local/mysql/bin/safe_mysqld --user=mysql --skip-grant-tables

หากใช้งานได้แสดงว่าอาจมีปัญหากับ information_schema ของคุณหรือตาราง mysql ของคุณ ถ้ามันไม่ทำงานกว่าสิ่งที่ผิดพลาดกับการติดตั้งของคุณ


1
นี่เป็นสิ่งที่ดีมันให้ข้อผิดพลาดโดยละเอียดใน syslog คำสั่งมีการเปลี่ยนแปลงใน Ubuntu 12.04 มันเป็นsudo /usr/bin/mysqld_safe --user=mysql --skip-grant-tables
newz2000

3

ตรวจสอบไฟล์บันทึกของคุณเช่นเดียวกับคำตอบอื่น ๆ ตรวจสอบด้วยว่าคุณมีเพียงพอ (หรือพื้นที่ว่างบนดิสก์) MySQL สามารถทำงานในลักษณะนี้ในพาร์ติชันที่ว่างเปล่า

df -h

หากไม่ใช่อย่างนั้นให้ตรวจสอบเอกสารของ MySQL ว่ามีการดีบั๊กเซิร์ฟเวอร์หรือไม่ ของพวกเขาmyisamchk(ถ้าคุณกำลังใช้ MyISAM) เป็นประโยชน์อย่างยิ่ง


3

ฉันเพิ่งเจอปัญหานี้หลังจากอัปเดต Ubuntu ยังไม่แน่ใจว่าปัญหาคืออะไร หนึ่งในความกังวลที่ทำงานในขณะนั้นเพื่อให้ mysql ทำงานแม้ว่าจะต้องทำ:

sudo aa-complain /etc/apparmor.d/*mysql*

สิ่งนี้ทำให้การทำงานแสดงให้เห็นว่าผู้ใช้งานหยุดการทำงานของ mysql และอธิบายว่าเหตุใดบันทึกจึงว่างเปล่าเช่นกัน: mysql ไม่ได้รับอนุญาตให้ทำงาน

มันยังคงเป็นปัญหาที่แปลกเนื่องจากจนถึงขณะนี้ยังไม่มี "การร้องเรียน" จากสิ่งนี้ใน/var/log/apparmorและรายการตรวจสอบเพียงรายการเดียวใน kern.log มาจากการ chaning โปรไฟล์ไปยังโหมดบ่น

โปรดทราบว่าในการทำเช่นนี้ฉันได้เพิ่ม/etc/apparmor.d/local/usr.sbin.mysqlไฟล์(ว่าง) เนื่องจากคำสั่ง aa-บ่นที่บ่นว่าไม่พบไฟล์นี้


ขอบคุณมาก! หลังจากเข้าใกล้ผมของฉันจนขาด
โอเลเท

3

ฉันมีปัญหาเดียวกันกับหยดมหาสมุทรดิจิตอล 512MB

ปรากฎว่ามันเป็นเพราะหน่วยความจำไม่เพียงพอ

ทางออกทันทีคือรีสตาร์ทบริการอื่น ๆ เพื่อเพิ่มหน่วยความจำเช่น

sudo service apache2 restart

หวังว่าถ้ามีหน่วยความจำเพียงพอคุณควรจะสามารถเริ่ม mysql ใหม่ได้

sudo service mysql restart

การแก้ปัญหาระยะยาวคือการอย่างใดอย่างหนึ่งได้รับ RAM มากขึ้นหรือสร้างหน่วยความจำแลกเปลี่ยน


2

ดูไฟล์บันทึกของคุณ ใน Debian /var/logอย่างน้อยคุณจะได้รับการบันทึกใน


3
mysql.err และ mysql.log ว่างเปล่าทั้งคู่
Andrew

1

หากมีปัญหาเดียวกันนี้กลับกลายเป็นทางออกที่จ้องมองฉันในหน้า ไดรฟ์เต็ม คุณไม่มีบันทึกเพราะไม่มีที่ให้เขียน .....


0

ปัญหาเดียวกันเกิดขึ้นกับฉันสำหรับทุกวัยใน Ubuntu 12.04 Digital Ocean VPS ที่ติดตั้ง mysql 5.6 จาก PPA อาการคือไฟล์ mysql.sock ที่/var/run/mysqld/mysql.sockจะถูกลบ แต่ไม่เคยสร้างขึ้นใหม่ดังนั้นฉันต้องรันคำสั่งต่อไปนี้ด้วยตนเองทุกครั้งที่ mysql ได้รับการอัปเดตหรือรีบูตเซิร์ฟเวอร์:

sudo touch /var/run/mysqld/mysql.sock
sudo chown mysql /var/run/mysqld/mysql.sock

นี่คือคำตอบของ Kyle C (ยกเว้นกับ mysqld แทนที่จะเป็น mysql) ในตอนท้ายฉันปรับลดรุ่นเป็น mysql 5.5 ซึ่งจะเกิดขึ้นเมื่อคุณปกติจะใช้sudo apt-get install mysql-serverคำสั่ง อย่างไรก็ตามมันไม่ได้ตรงไปตรงมาดังนั้นนี่คือสิ่งที่ฉันต้องทำ:

# Manually get mysql running if it is not
sudo touch /var/run/mysqld/mysql.sock
sudo chown mysql /var/run/mysqld/mysql.sock
sudo service mysql start

# take a dump of all databases 
# we are going to remove the mysql files so don't skip this)
mysqldump -u root -p > all-databases.sql

# Completely remove mysql
sudo apt-get remove --purge mysql-server mysql-client mysql-common
sudo apt-get autoremove
sudo apt-get autoclean

# Remove mysql 5.6 from debs (otherwise it will reinstall 5.6)
rm /etc/apt/sources.list.d/ondrej-(mysql something please check)

# remove a flag that would prevent the installation
# because it is seen as a downgrade
sudo rm /var/lib/mysql/debian-5.6.flag

# I had to remove the mysql files as well
# reference http://ubuntuforums.org/showthread.php?t=1998260&page=3
rm -rf /var/lib/mysql
rm -rf /etc/mysql*

# Install mysql
sudo apt-get install mysql-server mysql-client mysql-common php5-mysql

# manually update the all-databases.sql file and 
# remove all STATS_PERSISTENT clauses on table creation statments

# re import the databses
mysql -u root -p < all-databases.sql

# restart apache
sudo service apache2 restart

# at this point my wordpress site stated error connecting to database.
# This was resolved by logging into mysql and running:
FLUSH PRIVILEGES

หวังว่านี่จะช่วยคนอื่นที่มีอาการเจ็บปวดเหมือนกัน


0

รูปนี้อาจช่วยคนอื่น ๆ ... ดังนั้นที่นี่เป็น

ฉันต้องการย้าย mysql ของฉัน 5.5 (ค่าเริ่มต้นของ Ubuntu) ไปเป็น 5.7 ใหม่
(ต้องการเล่น arround ด้วยชนิด JSON ดั้งเดิม)

ฉันทำตามคำแนะนำเพื่อติดตั้งเวอร์ชันล่าสุด ....
แต่ MySQL ไม่ต้องการเริ่มต้น

ใช้เวลาค่อนข้างมองแล้วก็พบบรรทัดนี้ใน/var/log/mysql/errors.log:

unknown variable 'key_buffer=16M'

และนั่นคือสิ่งที่ตั้งไว้ใน/etc/mysql/my.cnfนั้นในระหว่างการอัพเกรดฉันเลือกที่จะเก็บไว้

ดังนั้นค่อนข้างง่ายหลังจากนั้น:
แทนที่ของฉันmy.cnfกับmy.cnf.dpkg-distรุ่นอยู่ในไดเรกทอรีเดียวกัน ...

จากนั้นก็ต้องวิ่ง

sudo mysql_upgrade -u root -p sudo service mysql restart

และตอนนี้ MySQL กลับมาทำงานอีกครั้ง


0

พบความหลากหลายในสิ่งที่ผิด ฉันย้ายไดเรคทอรีข้อมูลแล้วกลับกลายเป็นว่าฉันลืมที่จะเชคไดเรกทอรีสำหรับผู้ใช้ mysql ซึ่งก็ล้มเหลวโดยที่ไม่มีผลลัพธ์ เห็นได้ชัดว่ามีปัญหาในการเข้าใจถึงปัญหาย้อนหลัง แต่การขาดข้อความแสดงข้อผิดพลาดทำให้ทุกปัญหาเล็ก ๆ น้อย ๆ หายาก

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.