หลังจากติดตั้ง MySQL ผ่าน Brew ฉันได้รับข้อผิดพลาด - เซิร์ฟเวอร์หยุดทำงานโดยไม่อัปเดตไฟล์ PID


88

โอเคฉันค้นหาจนหมดแล้วและใช้เวลาพอสมควรในการติดตั้งถอนการติดตั้งลองใช้ตัวเลือกต่างๆ แต่ไม่ประสบความสำเร็จ

ฉันใช้ Mac OS X Lion (10.7.3) และกำลังพยายามตั้งค่า Python, MySQL

ฉันติดตั้ง Python และ MySQL สำเร็จผ่าน HomeBrew Python ทำงานได้ดี

หลังจากการติดตั้ง MySQL ฉันทำตาม 2 ขั้นตอนแรก - ยกเลิกการตั้งค่าและmysql_install_dbคำสั่ง

ตอนนี้เมื่อฉันพยายามเริ่ม mysql "mysql.server start" ฉันได้รับข้อผิดพลาดดังต่อไปนี้

ERROR! The server quit without updating PID file (/usr/local/var/mysql/Brajeshwar.local.pid).
  • Brajeshwar เป็นชื่อผู้ใช้ของฉันบนเครื่องของฉัน

คำตอบ:


81

แก้ไข 2012/09/18: ในฐานะที่เป็นแหลมออกโดยเทอรีเคนให้แน่ใจว่าmysqlฐานข้อมูลที่มีการตั้งค่าอย่างถูกต้องก่อนที่จะทำอะไรอย่างอื่น ดู“ ข้อผิดพลาด PID บน mysql.server start? ” สำหรับข้อมูลเพิ่มเติม

คำตอบเดิมเก็บไว้เพื่อประโยชน์ของประวัติศาสตร์: ส่วนใหญ่จะเป็นปัญหาการอนุญาต ตรวจสอบ/usr/local/var/mysql/*.err. ฉันพูดว่า:

120314 16:30:14  InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
InnoDB: File name ./ibdata1
InnoDB: File operation call: 'open'.
InnoDB: Cannot continue operation.
120314 16:30:14 mysqld_safe mysqld from pid file /usr/local/var/mysql/janmoesen.local.pid ended

ฉันต้องทำสิ่งนี้ด้วย:

sudo chown _mysql /usr/local/var/mysql/*

65
ฉันแก้ไขปัญหาการทำงาน:sudo chown -R _mysql:_mysql /usr/local/var/mysql
Matteo Alessani

1
ฉันได้รับข้อผิดพลาดเดียวกัน แต่ฉันไม่มีโฟลเดอร์ / usr / local / var / mysql :( ฉันใช้ homebrew ด้วย
Nathan Bashaw

2
ดูความคิดเห็นของbrew info mysqlหรือคำถามนี้เพื่อหาทางออกที่ถูกต้อง
Kane

4
sudo chmod ugo + w / tmp เป็นทางออกของฉัน
TR3B

2
ของฉันถูกแก้ไขด้วย sudo chown -R {my_user_name}: admin / usr / local / var / mysql55 /
Packet Tracer

101

ฉันพบว่ามันเป็นปัญหาเกี่ยวกับสิทธิ์ในmysqlโฟลเดอร์

chmod -R 777 /usr/local/var/mysql/ 

แก้ไขให้ฉัน


18
ไม่จำเป็นต้องทำ 777
JamesHalsall

2
ฉันก็ค้นหามานานและนี่คือสิ่งที่แก้ไขให้ฉัน
กัด

6
โปรดทราบว่าฉันไม่แนะนำให้ตั้งค่าอะไรเป็น 777 ในสภาพแวดล้อมการใช้งานจริง สิ่งนี้จำเป็นต้องติดตั้งในเครื่องเท่านั้น ฉันจะเปลี่ยนกลับเป็น 755 อย่างน้อยที่สุด
mikoop

1
หากคุณเห็นข้อผิดพลาดในการเริ่ม mysql คำเตือน: ไฟล์กำหนดค่าที่เขียนได้ทั่วโลก '/var/lib/mysql/none-dev/my.cnf' ถูกละเว้นจากนั้นคุณอาจต้องการ chmod ow / var / lib / mysql / none- dev / my.cnf
David Mann

1
ของฉันถูกแก้ไขด้วย sudo chown -R {my_user_name}: admin / usr / local / var / mysql55 /
Packet Tracer

66

ฉันลงเอยด้วยการติดตั้ง mysql ใหม่ทั้งหมดและในที่สุดมันก็ใช้งานได้

คำเตือนการดำเนินการนี้จะลบฐานข้อมูลทั้งหมดของคุณดังนั้นอย่าลืมบันทึกข้อมูลทิ้งก่อน

brew remove mysql
brew cleanup
launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
rm ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
sudo rm -rf /usr/local/var/mysql

brew install mysql
mysqld --initialize --explicit_defaults_for_timestamp
mysql.server start # no sudo!

3
ฉันพยายามเปลี่ยนสิทธิ์ทุกวิถีทาง แต่ไม่ประสบความสำเร็จ จบลงด้วยการปฏิบัติตามคำแนะนำเหล่านี้และ ... ความสำเร็จ :)
kartsims

นี่เป็นทางออกเดียวที่ฉันพบ นี่ควรเป็นอันดับหนึ่ง
แดน

ขอบคุณนี่เป็นสิ่งเดียวที่ใช้ได้ผลสำหรับฉัน แม้ว่าฉันจะไม่ต้องวิ่งก็ตามmysqld --initialize --explicit_defaults_for_timestamp
ลึก

1
เริ่มต้น MySQL ... ข้อผิดพลาด! เซิร์ฟเวอร์หยุดทำงานโดยไม่อัปเดตไฟล์ PID (<path> -.lightspeed.irvnca.sbcglobal.net.pid) รับข้อผิดพลาดนี้
Unnikrishnan

1
แค่ homebrew ฉบับ
McGrady

31

ฉันมีปัญหานี้ใน mac 10.10.5 Yosemite

สิ่งที่ฉันทำเพื่อแก้ปัญหานี้

cd /usr/local/var/mysql
sudo rm *.err && sudo rm *.pid
sudo reboot
sudo mysql.server start


ไชโย! วิธีนี้ง่ายที่สุดและช่วยวันของฉัน!
iplus26

สมบูรณ์แบบคุณช่วยวันของฉัน;)
Emy Stats

เฮ้อ. หลังจากลองใช้ทุกวิธีบนอินเทอร์เน็ตเป็นเวลา 2 ชั่วโมงนี่คือสิ่งที่แก้ไขได้ในที่สุด! เริ่มต้นใหม่ที่ดี! :)
SexyBeast

18

พฤศจิกายน 2014: หากคุณได้รับข้อผิดพลาดนี้บน MySQL 5.6.x บน Mac OS X Mavericks หรือ Yosemite และต้องการใช้ MySQL กับ PHP ในเครื่อง (/tmp/mysql.sock เป็นที่ที่ PHP PDO คาดว่าจะพบไฟล์ถุงเท้า) นี่คือสิ่งที่แก้ไขให้ฉัน:

1) ยกเลิกการใส่ข้อคิดเห็นบรรทัดไฟล์กำหนดค่า homebrew เริ่มต้นและแก้ไขดังต่อไปนี้

$ sudo vi /usr/local/Cellar/mysql/5.6.21/my.cnf
...
basedir = /usr/local/Cellar/mysql/5.6.21
datadir = /usr/local/var/mysql
port = 3306
server_id = <UNIQUE_NUMBER_HERE_OR_LEAVE_COMMENTED_OUT>
socket = /tmp/mysql.sock
pid-file = /usr/local/var/mysql/[BOXNAME].local.pid
....

BOXNAME คือสิ่งที่คุณมีใน System Prefs -> Network เป็น ID เฉพาะสำหรับคอมพิวเตอร์ของคุณบนเครือข่าย

2) ตั้งค่าสิทธิ์ในไฟล์ทั้งหมดใน mysql datadir ทั้งหมดนี้เป็นของ [my_username] MySQL เป็นคนพิถีพิถันในเรื่องนี้และปฏิเสธที่จะสร้างไฟล์ pid เว้นแต่ว่า (ผู้ใช้ _mysql) เป็นเจ้าของไดเร็กทอรี

$ sudo chown -R _mysql:mysql /usr/local/var/mysql

3) เริ่ม MySQL โดยใช้ bash helper / wrapper script:

$ sudo mysql.server start
Starting MySQL
. SUCCESS! 

หวังว่าจะช่วยได้ หากข้างต้นไม่ได้ผลสำหรับคุณลองเรียกใช้ไบนารี mysqld_safe ด้วยตนเองในไดเร็กทอรี Cellar / mysql / VERSION_ / bin / และตรวจสอบว่าการตั้งค่าคืออะไร (หากทำงาน)

sudo /usr/local/Cellar/mysql/5.6.12/bin/mysqld_safe &

หากเป็นเช่นนั้นคุณสามารถทำได้

ps aux | grep mysql 

และดูสิ่งที่ชอบ

[username]  6881   0.0  2.7  3081392 454836   ??  S     8:52AM   0:00.54 /usr/local/Cellar/mysql/5.6.21/bin/mysqld --basedir=/usr/local/Cellar/mysql/5.6.21 --datadir=/usr/local/var/mysql --plugin-dir=/usr/local/Cellar/mysql/5.6.21/lib/plugin --verbose --log-error=/usr/local/var/mysql/BOXNAME.local.err --pid-file=/usr/local/var/mysql/BOXNAME.local.pid

ฉันไม่แน่ใจว่าทำไมมันถึงได้ผลสำหรับฉัน แต่มันแสดงให้คุณเห็นว่าฉันได้รับตัวเลือกไฟล์ config my.cnf คุณยังสามารถใช้ตัวเลือกบรรทัดคำสั่งเพื่อพยายามแก้ไขปัญหาเมื่อเริ่ม mysqld ด้วยตนเอง

หากคุณทำการจัดการเพื่อรันเซิร์ฟเวอร์ MySQL โดยใช้ mysqld_safe คุณอาจต้องทำเช่นนี้เพื่อปิดเครื่องก่อนลองใช้ตัวช่วย bash mysql.server ต่อต้านการกระตุ้นให้ฆ่า -9 [PID] เนื่องจากคุณอาจทำให้ข้อมูลเสียหายได้

mysqladmin -uroot shutdown

โชคดี!


ขอบคุณ - ของฉันได้รับการแก้ไขด้วย sudo chown -R {my_user_name}: admin / usr / local / var / mysql55 /
Packet Tracer

18

ฉันมีปัญหาเดียวกันใน OS X El Capitan นี่คือลำดับคำสั่งเทอร์มินัลที่แก้ไขให้ฉัน

ลบไฟล์ข้อผิดพลาด (คุณจะต้องเปลี่ยนเส้นทางขึ้นอยู่กับการตั้งค่าของคุณ)

sudo rm /usr/local/mysql/data/*.err

ค้นหาข้อมูลสำหรับกระบวนการ mysql ที่ยังทำงานอยู่และฆ่ามัน:

ps -A | grep -m1 mysql | awk '{print $1}' | sudo xargs kill -9

ตอนนี้รีสตาร์ท MySQL:

/usr/local/mysql/support-files/mysql.server start

10

สิ่งนี้ใช้ได้ผลสำหรับฉัน:

sudo chmod -R 777 /usr/local/var/mysql/
sudo /usr/local/mysql/support-files/mysql.server start

สิ่งนี้แก้ปัญหาของฉันใน MAC os 10.11.3 (หลังจากเปลี่ยนโหมดเป็น 777 ของ mysql dir)
Ratha

ซึ่งหมายความว่า Read Write Execute หรือสิทธิ์แบบเต็มสำหรับผู้ใช้ทุกคนในโฟลเดอร์นั้นและ (-R) ไฟล์และโฟลเดอร์ทั้งหมดในโฟลเดอร์นั้น สำหรับคำอธิบายโดยละเอียดโปรดดูที่ลิงค์ต่อไปนี้linux.com/learn/understand-linux-file-permissions
Kresimir Plese


3

ถ้าจำไม่ผิดเป็นปัญหาเรื่องสิทธิ์ ลอง 'แตะ' และ 'chmod' ไฟล์ pid หรือโฟลเดอร์ที่มีไฟล์อยู่


ไม่ ฉันลอง chmod 777 เพื่อดูว่าสามารถแก้ปัญหาได้หรือไม่ แต่ไม่มีอะไรเลย ข้อผิดพลาดเดียวกัน
Brajeshwar

คุณพยายาม chmod 777 ไดเร็กทอรี mysql และลบไฟล์ pid และรีสตาร์ท MySQL หรือไม่?
LonnyLot

3

ปัญหาของฉันคือฉันเริ่มเซิร์ฟเวอร์เป็น sudo หนึ่งครั้งจากนั้นพยายามรีสตาร์ทในฐานะผู้ใช้ภายใน

ที่นี่ mysql ไม่สามารถเขียนไปยังไฟล์ ".err" ที่เป็นของรูทได้ ฉันต้องลบไฟล์นั้นและรีสตาร์ทเซิร์ฟเวอร์:

sudo rm /usr/local/var/mysql/*.err
mysql.server start

2

ฉันมีปัญหาคล้ายกันกับ MySQL บน Mac (Mac Os X ไม่สามารถเริ่มต้นเซิร์ฟเวอร์ MySQL ได้เหตุผล: 255 และ "ข้อผิดพลาด! เซิร์ฟเวอร์หยุดทำงานโดยไม่อัปเดตไฟล์ PID") หลังจากลองผิดลองถูกมานานในที่สุดเพื่อที่จะกู้คืนการอนุญาตไฟล์ฉันเพิ่งทำเช่นนั้น:

เปิด Disk Utilities.app
เลือกไดรฟ์ของฉันที่แผงด้านซ้าย
คลิกที่ปุ่ม "ซ่อมแซมการอนุญาตดิสก์"

นี่เป็นเคล็ดลับ สำหรับฉัน. หวังว่าสิ่งนี้จะช่วยคนอื่นได้



1

สิ่งที่ได้ผลสำหรับฉันคือ:

  1. ไปที่ไดเร็กทอรีการติดตั้ง mysql ของคุณ
  2. sudo chmod -R 777 data
  3. จากนั้นย้อนกลับไปหนึ่งไดเรกทอรี
  4. cd support-files/
  5. sudo ./mysql.server start

หลังจากนั้นเซิร์ฟเวอร์ก็เริ่มทำงาน

แต่ปัญหาของวิธีนี้คือต้องทำซ้ำทุกครั้งที่ต้องการเริ่ม mysql ทันที ไม่รู้ว่าทำไมมันเริ่มมีพฤติกรรมแบบนี้กะทันหัน


1

ค้นหาไฟล์ usr / local / var / mysql / your_computer_name.local.err และทำความเข้าใจข้อมูลเพิ่มเติมเกี่ยวกับข้อผิดพลาด

ตำแหน่ง: /usr/local/var/mysql/your_computer_name.local.err

อาจเป็นปัญหาเกี่ยวกับสิทธิ์

  1. ค้นหาว่า mysql ทำงานอยู่หรือไม่และฆ่ามัน

ps -ef | grep mysql

ฆ่า -9 PID

โดยที่ PID คือค่าคอลัมน์ที่สอง 2. ตรวจสอบความเป็นเจ้าของ mysql

ls -laF / usr / local / var / mysql /

if it is owned by root, change it mysql or your user name

sudo chown -R mysql / usr / local / var / mysql /


1

ลองใช้ (OSX)

ขั้นตอนที่ 1: ps -aux | grep mysql

จากนั้นฆ่าหมายเลข PID 4 หลัก

ขั้นตอนที่ 2: kill 1965

ขั้นตอนที่ 3: mysql.server start

หรือมีปัญหาในการค้นหาหมายเลข PID เหล่านั้นให้ลองทำตามด้านล่างนี้

ขั้นตอนที่ 1 อีกครั้ง: ps -aux | grep mysql

ขั้นตอนที่ 2 อีกครั้ง: killall

ขั้นตอนที่ 3 อีกครั้ง: mysql.server start


1

หากคุณมีการปรับรุ่นการติดตั้ง MySQL ของคุณเพื่อ 8.x ตรวจสอบว่ารุ่นก่อนหน้าของคุณได้รับการสนับสนุนสำหรับupgradation

ถ้าไม่ mysql จะไม่ทำงาน! ถอนการติดตั้ง mysql ของคุณพร้อมกับไฟล์กำหนดค่าทั้งหมดใน/usr/local/var/mysql (ลบทั้งโฟลเดอร์) ติดตั้ง mysql ใหม่

หมายเหตุ: การติดตั้งใหม่อาจทำให้ข้อมูลสูญหาย


1

โปรดตรวจสอบบันทึกคุณจะได้รับข้อมูลรายละเอียดเพิ่มเติม

ใช้คำสั่งด้านล่างเพื่อจัดเรียงบันทึกข้อผิดพลาด

tail -100 /usr/local/var/mysql/<user_name>.local.err

สำหรับฉันหนึ่งในไดเร็กทอรีหายไปเมื่อสร้างเซิร์ฟเวอร์ได้เริ่มทำงานแล้ว


1

สิ่งสำคัญคือการตรวจสอบไฟล์. err โดยค่าเริ่มต้นใน Mac OSX จะอยู่ใน/usr/local/var/mysqlไฟล์.

บันทึกดังกล่าวเปิดเผยให้ฉันทราบว่าฉันต้องลบไฟล์ต่อไปนี้:

ibdata1
ib_logfile0
ib_logfile1

เรียกใช้ MySQL ด้วยmysql.startทำงานได้สำเร็จหลังจากนั้น โปรดทราบว่าการลบไฟล์เหล่านั้นอาจทำให้ข้อมูลสูญหาย



0

ฉันมีปัญหาเดียวกัน:

แต่สถานการณ์คือทุกครั้งที่ฉันพยายามเข้า:

/usr/local/mysql/support-files/mysql.server start

ไฟล์ชื่อlocalhost.pidถูกสร้างขึ้นแทนที่จะiMax0.local.pidระบุไว้ในข้อผิดพลาด:

ERROR! The server quit without updating PID file (/usr/local/mysql/data/iMax0.local.pid).

การแก้ปัญหาที่ทำงานให้ฉันได้รับการคัดลอกและการเปลี่ยนชื่อไปยังlocalhost.pidiMax0.local.pid


0

วิธีแก้ปัญหาของฉันบน OSX El Capitan คือ:

sudo chmod ugo+w /tmp

มันหักทันที

ข้อผิดพลาดคือ:

ERROR! The server quit without updating PID file

และบันทึกแสดง:

Can't start server : Bind on unix socket: Permission denied

นอกจากนี้ยังอาจเป็นประโยชน์ที่จะทราบว่าภายใต้ OSX ไม่มีmy.cnfไฟล์โดยค่าเริ่มต้นและไม่จำเป็นต้องใช้โดยค่าเริ่มต้นซึ่งฉันไม่รู้ โชคดี!



0

ฉันมีปัญหาที่คล้ายกัน แต่คำสั่งต่อไปนี้ช่วยฉันได้

cd /usr/local/Cellar
sudo chown _mysql mysql

0

นี่คือปัญหาการอนุญาตไฟล์ ตรวจสอบสิทธิ์ดิสก์และซ่อมแซม

Osx => Cmd + Space => Disk Utilty => ตรวจสอบสิทธิ์ดิสก์

ตรวจสอบว่าเสร็จสิ้นหลังจากซ่อมแซมดิสก์สิทธิ์ mysql.server คำสั่ง start ทำงานได้สำเร็จ


สิ่งนี้ได้ผลสำหรับฉัน โปรดลองสิ่งนี้ก่อนทำอย่างอื่น
kamlesh

0

ไม่มีคำตอบใดที่เหมาะกับฉัน อย่างไรก็ตามฉันทำได้ดีsudo mysql.server startและได้ผลดี

นอกจากนี้สำหรับฉันมันไม่ได้แสดงปัญหาการอนุญาตในไฟล์ * .err


0

ฉันมีปัญหานี้บน Linux แต่สาเหตุเกี่ยวข้องกับการติดตั้ง mysql ใด ๆ ในกรณีของฉันเซิร์ฟเวอร์หยุดทำงานก่อนที่การเริ่มต้นจะเสร็จสมบูรณ์และอัปเดตไฟล์ pid พบข้อความแสดงข้อผิดพลาดเมื่อเริ่มต้น mysqld โดยตรงแทนที่จะส่งผ่าน "service mysql start"

ในกรณีของฉันสาเหตุคือพาร์ติชันที่พบไฟล์บันทึกเต็ม การลบไฟล์บันทึกทำให้ mysql เริ่มต้นใหม่ได้ ในการทดสอบสำหรับปัญหานี้ให้ไปที่สถานที่ตั้งของกิจกรรมบันทึก MySQL df .ของคุณและทำ


0

วิธีแก้ปัญหาทั้งหมดข้างต้นไม่ได้ผลสำหรับฉัน แต่พวกเขาให้เบาะแสแก่ฉันเพื่อแก้ไขข้อผิดพลาดนี้

mysql.server start ---- error เซิร์ฟเวอร์หยุดทำงานโดยไม่อัปเดตไฟล์ PID

ฉันติดตั้ง mysql@5.7 บน macbook mojave ด้วย homebrew

ชงติดตั้ง mysql@5.7

บันทึกข้อผิดพลาด mysql ที่อยู่ใน /usr/local/var/mysql/IU.lan.err มีหนึ่งบรรทัดในนั้น: ไม่สามารถเปิดและล็อกตารางสิทธิ์: ไม่มีตาราง 'mysql.user'

หลังจากลองโพสต์มากมายในเครื่องมือค้นหา goole ฉันหันไปใช้ baidu https://blog.csdn.net/xhool/article/details/52398042 โดยได้รับแรงบันดาลใจจากโพสต์นี้ฉันพบวิธีแก้ปัญหา:

rm / usr / local / var / mysql / *

mysqld - เริ่มต้น

รหัสผ่านแบบสุ่มสำหรับผู้ใช้รูทจะแสดงใน bash แต่คำสั่ง mysql -uroot -p [theRandomPassword] ไม่สามารถใช้งานได้ดังนั้นฉันต้องรีเซ็ตรหัสผ่าน สร้างไฟล์ init ที่มีเนื้อหาเช่นนี้

ตั้งรหัสผ่านสำหรับ 'root' @ 'localhost' = รหัสผ่าน ('MyNewPass');

วางไว้ในไดเร็กทอรีที่หาได้ง่ายเช่นเดสก์ท็อป

mysqld --init-file = [YourInitFile] &

บันทึกจำนวนมากที่พิมพ์บนหน้าจอของคุณ

mysql -uroot -pMyNewPass

เพลิดเพลินไปกับ mysql เวอร์ชันสูงของคุณ!


0

เกิดขึ้นกับฉันเพราะจริงๆแล้วฉันเปลี่ยนจาก MariaDB เป็น Mysql การเปลี่ยนกลับไปใช้ MariaDB ช่วยแก้ปัญหานี้ได้

ฉันเดาว่าฐานข้อมูลที่มีอยู่เข้ากันไม่ได้


นี่เป็นปัญหาของฉันเช่นกันฉันเปลี่ยนจาก MariaDB เป็น MySQL แต่การเปลี่ยนกลับไปใช้ MariaDB ไม่ใช่วิธีแก้ปัญหาที่ยอมรับได้ ฉันลบ mysql ใหม่brew uninstall mysql@8.0จากนั้นลบโฟลเดอร์ mysql เก่าที่สร้างโดย MariaDB sudo rm -rf /usr/local/var/mysql(สิ่งนี้จะลบฐานข้อมูลของคุณอย่างชัดเจน) จากนั้นbrew install mysql@8.0และmysql.server startและมันได้ผล
antriver


0

ข้อผิดพลาดนี้อาจแสดงขึ้นจริงเนื่องจาก mysql เริ่มทำงานแล้ว ลองดูสถานะปัจจุบันตาม:

mysql.server status

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