ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ MySQL ภายในผ่านซ็อกเก็ต '/var/mysql/mysql.sock' (38)


385

ฉันประสบปัญหาใหญ่ในการพยายามเชื่อมต่อกับ mysql เมื่อฉันวิ่ง:

/usr/local/mysql/bin/mysql start

ฉันมีข้อผิดพลาดดังต่อไปนี้:

Can't connect to local MySQL server through socket '/var/mysql/mysql.sock' (38)

ฉันมีmysql.sockภายใต้/var/mysqlไดเรกทอรี

ใน/etc/my.cnfฉันมี:

[client]
port=3306
socket=/var/mysql/mysql.sock

[mysqld]
port=3306
socket=/var/mysql/mysql.sock
key_buffer_size=16M
max_allowed_packet=8M

และใน/etc/php.iniฉันมี:

; Default socket name for local MySQL connects.  If empty, uses the built-in
; MySQL defaults.
mysql.default_socket = /var/mysql/mysql.sock

ฉันรีสตาร์ท apache โดยใช้ sudo /opt/local/apache2/bin/apachectl restart

แต่ฉันยังคงมีข้อผิดพลาด

ไม่เช่นนั้นฉันไม่รู้ว่ามันเกี่ยวข้องหรือไม่ แต่เมื่อฉันจะmysql_config --socketsได้รับ

--socket         [/tmp/mysql.sock]

53
MySQL กำลังทำงานอยู่หรือไม่
เดวิด

2
แน่นอนว่าจะอธิบายข้อผิดพลาดในการพยายามเชื่อมต่อกับมัน @Romain ดังกล่าวเป็นอย่างไรมีอะไรในล็อกของ MySQL (ลอง/var/log/mysqlหรือที่อื่นที่นั่น) ซึ่งระบุว่าทำไมมันไม่ทำงาน? คุณได้รับข้อผิดพลาดเมื่อพยายามเริ่มหรือไม่
เดวิด

5
ฉันได้รับข้อผิดพลาดเดียวกัน แต่ในกรณีของฉันฉันพบว่า mysql จะไม่เริ่มทำงานเพราะดิสก์เต็ม 100% /var/log/mysqld.log มีประโยชน์
yellavon

4
เหตุผลที่พวกเขาถามว่ามันกำลังทำงานอยู่หรือไม่ฉันคิดว่าเป็นเพราะซ็อกเก็ตเกิดขึ้นเมื่อเซอร์วิสเริ่มทำงาน ฉันติดตั้ง mysql แต่ไม่เคยเริ่มบริการดังนั้นไฟล์ .ock ไม่มีอยู่ พิมพ์service mysqld startถ้าคุณเพิ่งติดตั้ง HTH
changokun

2
คำตอบด้านล่างของ shimanyi sudo service mysql startช่วยฉันด้วย
Kiren Siva

คำตอบ:


218

หากไฟล์ของคุณ my.cnf (โดยปกติอยู่ใน/ etc / mysql /โฟลเดอร์) ได้รับการกำหนดค่าอย่างถูกต้องด้วย

socket=/var/lib/mysql/mysql.sock

คุณสามารถตรวจสอบว่า mysql ทำงานด้วยคำสั่งต่อไปนี้:

mysqladmin -u root -p status

ลองเปลี่ยนการอนุญาตของคุณไปยังโฟลเดอร์ mysql หากคุณทำงานในพื้นที่คุณสามารถลอง:

sudo chmod -R 755 /var/lib/mysql/

ที่แก้ไขมันสำหรับฉัน


11
มันช่วยฉันหลังจากที่ฉันทำตามขั้นตอนข้างต้นและเริ่มmysqldบริการใหม่
whirlwin

11
จะเป็นการดีที่สุดถ้าคุณตั้งค่าการอนุญาตเป็น 755 เพื่อให้เฉพาะเจ้าของไดเรกทอรีเท่านั้นที่สามารถเขียนได้
codewaggle

2
ปัญหาของฉันคือปริมาณการจัดเก็บข้อมูลของฉันสำหรับเว็บแอพของฉันไม่มีพื้นที่เหลือ! คลาสสิก!
James T Snell

3
ใน openSUSE 12.3 ของฉัน my.cnf อยู่ใน / etc /

เราควรเปลี่ยนการอนุญาตเป็น /var/log/mysqld.log ขอบคุณ
Allahbakash.G

94

คุณแน่ใจว่าคุณติดตั้ง mysql เช่นเดียวกับเซิร์ฟเวอร์ mysql ..

ตัวอย่างเช่นการติดตั้งเซิร์ฟเวอร์ mySql ฉันจะใช้ yum หรือ apt เพื่อติดตั้งเครื่องมือบรรทัดคำสั่ง mysql และเซิร์ฟเวอร์:

yum -y install mysql mysql-server (or apt-get install mysql mysql-server)

เปิดใช้งานบริการ MySQL:

/sbin/chkconfig mysqld on

เริ่มเซิร์ฟเวอร์ MySQL:

/sbin/service mysqld start

หลังจากนั้นตั้งรหัสผ่าน root ของ MySQL:

mysqladmin -u root password 'new-password' (with the quotes)

ฉันหวังว่ามันจะช่วย


ฉันใช้โฮมบรูว์และมันก็ใช้งานได้อย่างมีเสน่ห์:brew install mysql
JaKXz

2
ฉันได้ติดตั้งไคลเอนต์แล้วคำสั่งที่ฉันต้องการคือsudo apt-get install mysql-serverตอนนั้นชีวิตก็ดี
ErichBSchulz

1
ไม่ใช่ผลลัพธ์Can't connect to local MySQL server through socket '/var/mysql/mysql.sock' (38) จากไคลเอนต์หรือ เป็นลูกค้าที่พยายามและล้มเหลวในการเชื่อมต่อใช่ไหม? (ฉันคิดว่าคำถามเดิมต้องแก้ไขเพื่อให้ชัดเจน)
msouth

76

วิธีแก้ปัญหาอย่างรวดเร็วสำหรับฉัน: ลองใช้ที่อยู่ IP ในเครื่อง (127.0.0.1) แทน 'localhost' ใน mysql_connect () "บังคับ" php นี้เพื่อเชื่อมต่อผ่าน TCP / IP แทนซ็อกเก็ตยูนิกซ์


มันใช้งานได้ ... แต่ทำไม? MySQL ไม่สามารถแก้ไขlocalhostและแก้ไขได้127.0.0.1ก่อนที่จะพยายามเชื่อมต่อหรือไม่?
Jaime Hablutzel

3
ไม่ ... เมื่อใช้ localhost คุณไม่ได้ใช้ Internet Socket คุณกำลังใช้ซ็อกเก็ต IPC en.wikipedia.org/wiki/Unix_domain_socket 127.0.0.1 เป็นลูปแบ็คท้องถิ่นซึ่งหมายความว่าคำขอจะไม่ออกจากเครื่องของคุณ แต่จะใช้ TCP / IP จึงช้าลง ...
Master Yogurt

ทำงานให้ฉันด้วย ฉันใช้ Ubuntu 14.04, hhvm และ nginx
Maykonn

1
ขอบคุณ สิ่งนี้ใช้ได้กับฉัน แต่มันไม่ชัดเจนสำหรับฉันจากคำตอบว่าการแก้ไขคืออะไร
Nathan Buesgens

สิ่งนี้ยังจำเป็นเมื่อคุณเชื่อมต่อกับเซิร์ฟเวอร์ระยะไกลผ่านทาง ssh
Tamm

51

ฉันได้รับข้อผิดพลาดดังต่อไปนี้

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

พยายามหลายวิธีและในที่สุดก็แก้ไขมันด้วยวิธีต่อไปนี้

sudo gksu gedit /etc/mysql/my.cnf

การแก้ไข

#bind-address       = 127.0.0.1

ถึง

bind-address        = localhost

และเริ่มใหม่

sudo /etc/init.d/mysql restart

มันทำงานได้


ฉันมีปัญหาที่คล้ายกัน ย้ายจากอีเธอร์เน็ต (192.168.220.11) เป็น wifi (192.168.220.12) แต่มีการผูกที่อยู่ที่กำหนดรหัสฮาร์ดไว้กับ IP อีเธอร์เน็ต การเปลี่ยนเป็นการlocalhostแก้ไข
Chris G

30

ตรวจสอบให้แน่ใจว่าคุณกำลังใช้ mysqld: /etc/init.d/mysql start


3
หรือsudo service mysql start|restartสำหรับ Ubuntu
Wtower

18

เพื่อป้องกันไม่ให้ปัญหาเกิดขึ้นคุณต้องทำการปิดระบบเซิร์ฟเวอร์อย่างนุ่มนวลจากบรรทัดคำสั่งแทนที่จะปิดเซิร์ฟเวอร์

shutdown -h now

สิ่งนี้จะหยุดบริการที่กำลังทำงานอยู่ก่อนที่จะปิดเครื่อง

จาก Centos วิธีการเพิ่มเติมสำหรับการสำรองข้อมูลอีกครั้งเมื่อคุณพบปัญหานี้คือการย้าย mysql.sock:

mv /var/lib/mysql/mysql.sock /var/lib/mysql/mysql.sock.bak

service mysqld start

การเริ่มต้นบริการใหม่จะสร้างรายการใหม่ที่เรียกว่า mqsql.sock


14

ฉันได้รับข้อผิดพลาดนี้เมื่อฉันตั้งค่า cron job สำหรับไฟล์ของฉัน ฉันเปลี่ยนการอนุญาตของไฟล์เป็น777แต่ก็ยังไม่ทำงานสำหรับฉัน ในที่สุดฉันก็ได้ทางออก อาจจะเป็นประโยชน์สำหรับผู้อื่น

ลองด้วยคำสั่งนี้:

mysql -h 127.0.0.1 -P 3306 -u root -p

จำไว้ว่า -h หมายถึงโฮสต์ -P หมายถึงพอร์ตและ -p หมายถึงรหัสผ่าน


การบังคับใช้การเชื่อมต่อผ่าน TCP / IP แทนการใช้ซ็อกเก็ตนั้นไม่มีประสิทธิภาพ (และต้องการให้คุณเปิดใช้งานการสนับสนุน TCP / IP แบบโลคอลในเซิร์ฟเวอร์ตามคำตอบก่อนหน้านี้ ) คำตอบที่ได้รับการยอมรับจาก 2011 นั้นดีกว่า: กำหนดค่าเซิร์ฟเวอร์เพื่อให้คุณสามารถใช้ซ็อกเก็ตได้อย่างถูกต้อง
Quentin

10
-pไม่ได้หมายความว่าพอร์ตมันหมายถึงรหัสผ่านคุณสับสนกับมัน-P
Quentin

นี่เป็นสำเนาของคำตอบก่อนหน้านี้
Quentin

สำหรับฉันมันเป็นเพียงเรื่องของการกำหนดโฮสต์ที่ถูกต้อง: mysql -h 127.0.0.1 -u root -p
kghbln

12

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

/var/log/syslogตัวอย่างเช่นในอูบุนตูคุณควรตรวจสอบ เนื่องจากมีสิ่งอื่น ๆ อีกมากมายที่อาจเข้าสู่ไฟล์นี้คุณอาจต้องการใช้grepเพื่อดูข้อความ mysql และtailดูล่าสุดเท่านั้น ทั้งหมดเข้าด้วยกันซึ่งอาจมีลักษณะดังนี้:

grep mysql /var/log/syslog | tail -50

อย่าทำการเปลี่ยนแปลงการตั้งค่าของคุณเพราะคนอื่นพูดว่า 'สิ่งนี้ทำงานได้กับระบบของฉัน' ค้นหาว่ามีอะไรผิดปกติกับระบบของคุณและคุณจะได้ผลลัพธ์ที่ดีกว่าเร็วกว่ามาก


5
+1 สำหรับการย้อนกลับไปและชี้ให้เห็นสิ่งที่คำตอบอื่น ๆ อีกมากมายไม่สามารถพิจารณาได้ - การที่เห็นว่าแอปพลิเคชันอาจรายงานสิ่งที่เป็นปัญหาเป็นวิธีการที่ดีกว่าการรีบเร่งในการสุ่มสี่สุ่มห้า แม้จะมีผลบังคับใช้ ... !
SlySven

Ah .cnfดังนั้นจึงใช้ไม่ถูกต้อง นั่นอธิบายได้ ตอนนี้ฉันสามารถหยุดลองสุ่มและแก้ไขปัญหาจริง ขอบคุณ
Synetech

11

วิธีแก้ปัญหาอื่นคือการแก้ไข /etc/my.cnf และรวมโฮสต์ไว้ในส่วน [ไคลเอนต์]

 [client]
 #password       = your_password
 host            = 127.0.0.1
 port            = 3306
 socket          = /var/run/mysql/mysql.sock

จากนั้นเริ่มบริการ mysql ใหม่

วิธีแก้ปัญหานี้ได้รับการทดสอบใน: รุ่นเซิร์ฟเวอร์: การกระจายแหล่งที่มาของล็อก 5.5.25a


ขอแนะนำให้เพิ่มส่วน [ลูกค้า] หากยังไม่ได้อยู่ใน my.cnf
Cris

7

ฉันมีปัญหาเดียวกันและเกิดจากการอัพเดทไดรเวอร์ mysql เมื่อเซิร์ฟเวอร์ mysql ทำงาน ฉันแก้ไขมันเพิ่งรีสตาร์ททั้ง mysql และ apache2:

บริการ sudo mysql หยุด

บริการ sudo mysql เริ่มต้น

sudo service apache2 หยุด

sudo service apache2 เริ่มต้น


ในกรณีของฉันmysqlไม่ได้ทำงาน ฉันวิ่งsudo service mysql startหลังจากรันsudo service mysql statusเพื่อตรวจสอบว่าไม่ได้ทำงาน
Tass

6

ในกรณีของฉันฉันใช้ Centos 5.5 ฉันพบว่าปัญหาเป็นเพราะบริการ mysql หยุดบางวิธี ดังนั้นฉันเริ่มบริการ mysql ด้วยคำสั่ง:

 /etc/init.d/mysqld start

ดังนั้น .. ผิดพลาดโง่


6

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

df -h

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



5
sudo service mysql start

สิ่งนี้จะให้บริการคุณได้ดี อาจมีความเป็นไปได้ที่คุณเปลี่ยนคำสั่งบางอย่างที่ส่งผลต่อการกำหนดค่า mysql


หรือsystemctl start mariadb.serviceใน Fedora 22 หรือ RedHat 7 หลังจากนั้นสามารถตั้งรหัสผ่านรูตได้
จูเนียร์Mayhé

5

มีวิธีแก้ไขปัญหานี้มากมาย แต่สำหรับสถานการณ์ของฉันฉันแค่ต้องแก้ไขDATEบนเครื่อง / เซิร์ฟเวอร์ (เซิร์ฟเวอร์Ubuntu 16.04 )

i) ตรวจสอบวันที่เซิร์ฟเวอร์ของคุณและแก้ไขให้ถูกต้อง

ii) เรียกใช้ sudo /etc/init.d/mysql restart

นั่นควรเริ่มเลย


4

ฉันได้รับข้อผิดพลาดเนื่องจากฉันกำลังเรียกใช้ MAMP และไฟล์. ถุงเท้าของฉันอยู่ในตำแหน่งอื่น ฉันเพิ่งเพิ่มลิงก์สัญลักษณ์ที่แอปคิดว่าควรชี้ไปที่ที่มันอยู่จริงและใช้งานได้อย่างมีเสน่ห์


จะเพิ่มลิงก์สัญลักษณ์ที่แอพคิดว่าควรชี้ไปยังที่ที่มันอยู่ได้อย่างไร
Gilberto Ibarra

4

ฉันก็พบว่านี่เป็นปัญหาสิทธิ์ ฉันเปรียบเทียบไฟล์ MySQL กับการติดตั้งที่ใช้งานได้ (ทั้งบน Debian 6 squeeze) และต้องทำการเปลี่ยนแปลงการเป็นเจ้าของต่อไปนี้ (คุณmydatabaseมีฐานข้อมูลใดอยู่)

กรรมสิทธิ์mysql:mysql:

chown mysql:mysql /var/lib/mysql
chown mysql:mysql /var/lib/mysql/ib*
chown mysql:mysql /var/lib/mysql/mydatabase
chown mysql:mysql /var/lib/mysql/mydatabase/*
chown mysql:mysql /var/lib/mysql/mysql/* 

กรรมสิทธิ์mysql:root:

chown mysql:root /var/lib/mysql/mysql
chown mysql:root /var/run/mysqld 

กรรมสิทธิ์mysql:adm:

chown mysql:adm /var/log/mysql
chown mysql:adm /var/log/mysql.err
chown mysql:adm /var/log/mysql.log* 

4

สำหรับฉัน - นี่เป็นเพียงกรณีของ MySQL ที่ใช้เวลาโหลดนาน ฉันมีมากกว่า 100,000 ตารางในหนึ่งในฐานข้อมูลของฉันและในที่สุดมันก็เริ่มต้น แต่เห็นได้ชัดว่าต้องใช้เวลานานในกรณีนี้


3

หากคุณใช้รุ่น AWS (Amazon Web Services) Micro แสดงว่าเป็นปัญหาหน่วยความจำ เมื่อฉันวิ่ง

mysql

จาก terminal มันจะบอกว่า

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

ดังนั้นฉันลองต่อไปนี้และมันจะล้มเหลว

service mysqld restart

หลังจากค้นหามากฉันพบว่าคุณต้องสร้างไฟล์ swap สำหรับ MySQL เพื่อให้มีหน่วยความจำเพียงพอ คำแนะนำมีการระบุไว้: http://www.prowebdev.us/2012/05/amazon-ec2-linux-micro-swap-space.html http://www.prowebdev.us/2012/05/amazon-ec2-linux-micro-swap-space.html

จากนั้นฉันสามารถเริ่ม mysqld ใหม่ได้


ฉันมีปัญหาเดียวกันบนอินสแตนซ์ "micro" ของเซิร์ฟเวอร์ AWS และฉันสามารถยืนยันได้ว่าการสร้างไฟล์ swap นั้นแก้ไข "ERROR 2002 (HY000): ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ MySQL ภายในผ่านซ็อกเก็ต / var / run / mysqld / mysqld .sock '(111) "ปัญหา ขอบคุณ @ jth_92!
Konaras

3

คุณสามารถเริ่มเซิร์ฟเวอร์ mysql ได้ตลอดเวลาโดยระบุตำแหน่งของไฟล์ mysql.sock โดยใช้--socketตัวเลือกเช่น

mysql --socket=/var/mysql/mysql.sock 

สิ่งนี้จะใช้ได้แม้ว่าตำแหน่งของไฟล์ซ็อกเก็ตที่ระบุในตำแหน่งอื่นในไฟล์ my.cnf


3

สำหรับผู้ที่โซลูชันไม่ทำงานลอง:

cd /etc/mysql

ตรวจสอบว่าmy.cnfเป็นปัจจุบัน

nano my.cnf

และตรวจสอบให้แน่ใจว่าคุณมีที่อยู่เชื่อมโยงเดียวเท่านั้นดังต่อไปนี้:

bind-address = 127.0.0.1

หากไม่ใช่นั่นอาจเป็นปัญหาเพียงออกจากนาโนและบันทึกไฟล์

และ service mysql start

โปรดทราบว่าหากคุณไม่มี nano (เป็นตัวแก้ไขข้อความ) เพียงแค่ติดตั้งด้วยapt-get install nanoและเพียงกด Ctrl + X เพื่อออกอย่าลืมพูด Y เพื่อบันทึกและใช้ไฟล์เดียวกัน)


น่าเสียดายที่นี่ไม่ได้ผล นี่เป็นเพียงแค่บอกว่าเฉพาะเครื่องในประเทศเท่านั้นที่สามารถเข้าถึง mysql ไม่มีการเชื่อมต่อระยะไกล
stephen

3

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

/usr/sbin/mysqld --verbose --help 1>/dev/null

ฉันมีข้อผิดพลาดที่ปรากฏขึ้น:

160816 19:24:33 [Note] /usr/sbin/mysqld (mysqld 5.5.50-0ubuntu0.14.04.1-log) starting as process 9461 ...
160816 19:24:33 [Warning] Using unique option prefix myisam-recover instead of myisam-recover-options is deprecated and will be removed in a future release. Please use the full name instead.
160816 19:24:33 [Note] Plugin 'FEDERATED' is disabled.
160816 19:24:33 [ERROR] /usr/sbin/mysqld: unknown variable 'innodb-online-alter-log-max-size=4294967296'
160816 19:24:33 [ERROR] Aborting

ง่าย ๆgrep -HR "innodb-online-alter-log-max-size" /etc/mysql/แสดงให้ฉันเห็นว่าไฟล์ใดที่มีบรรทัดที่ละเมิดดังนั้นฉันจึงลบบรรทัดนั้นออกจากไฟล์

จากนั้นตรวจสอบ/var/log/mysql/error.logไฟล์ของฉันฉันมี:

InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytes
InnoDB: than specified in the .cnf file 0 671088640 bytes!
160816 22:46:46 [ERROR] Plugin 'InnoDB' init function returned error.
160816 22:46:46 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
160816 22:46:46 [ERROR] Unknown/unsupported storage engine: InnoDB
160816 22:46:46 [ERROR] Aborting

จากคำถามนี้ทางออกที่ได้รับการยอมรับจะไม่ทำงานเพราะฉันไม่สามารถเริ่มต้นเซิร์ฟเวอร์ได้ดังนั้นฉันจึงติดตามสิ่งที่ความคิดเห็นบางส่วนพูดและลบของฉัน/var/lib/mysql/ib_logfile0และ/var/lib/mysql/ib_logfile1ไฟล์

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

160816 22:52:15  InnoDB: Error: page 1415 log sequence number 82039318708
InnoDB: is in the future! Current system log sequence number 81640793100.
InnoDB: Your database may be corrupt or you may have copied the InnoDB
InnoDB: tablespace but not the InnoDB log files. See
InnoDB: http://dev.mysql.com/doc/refman/5.5/en/forcing-innodb-recovery.html
InnoDB: for more information.

ตามข้อเสนอแนะจากที่นี่เพื่อแก้ไขสิ่งนี้ฉันทำ mysqldump และกู้คืนฐานข้อมูลทั้งหมด (ดูลิงก์สำหรับโซลูชันอื่น ๆ อีกมากมาย)

$ mysqldump -u root -p --allow-keywords --add-drop-database --comments --hex-blob --opt --quote-names --databases db_1 db_2 db_3 db_etc > backup-all-databases.sql
$ mysql -u root -p < backup-all-databases.sql

ทุกอย่างดูเหมือนจะทำงานได้ตามที่คาดหวังในขณะนี้


การตรวจสอบ/var/log/mysql/error.logช่วยในกรณีของฉัน มีการ[ERROR] Can't init tc logซึ่งได้รับการแก้ไขอย่างรวดเร็วโดยใช้คำตอบต่อไปนี้: dba.stackexchange.com/a/185006/163583
Juraj.Lorinc

2

เพิ่ม

--protocol=tcp 

ไปยังรายการ pramaters ในการเชื่อมต่อของคุณทำงานให้ฉัน



2

ฉันพบปัญหานี้ในวันนี้ ไม่มีคำตอบเหล่านี้ให้การแก้ไข ฉันต้องทำคำสั่งต่อไปนี้ (พบได้ที่นี่https://stackoverflow.com/a/20141146/633107 ) เพื่อเริ่มบริการ mysql ของฉัน:

sudo /etc/init.d/mysql stop
cd /var/lib/mysql/
ls ib_logfile*
mv ib_logfile0 ib_logfile0.bak
mv ib_logfile1 ib_logfile1.bak
... etc ...
/etc/init.d/mysql restart

นี่เป็นส่วนหนึ่งที่ระบุโดยข้อผิดพลาดต่อไปนี้ใน /var/log/mysql/error.log:

140319 11:58:21 InnoDB: Completed initialization of buffer pool
InnoDB: Error: log file ./ib_logfile0 is of different size 0 50331648 bytes
InnoDB: than specified in the .cnf file 0 5242880 bytes!
140319 11:58:21 [ERROR] Plugin 'InnoDB' init function returned error.
140319 11:58:21 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
140319 11:58:21 [ERROR] Unknown/unsupported storage engine: InnoDB
140319 11:58:21 [ERROR] Aborting

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


2

CentOS 7, 64 บิต ติดตั้งใหม่
ในกรณีของฉันข้อผิดพลาดเป็นเพราะฉันไม่ได้ติดตั้งเซิร์ฟเวอร์ MySQL และไคลเอนต์ MySQL ที่ถูกต้อง
ใช้yumฉันลบmariadbและรุ่น mysql ชุมชน ฉันดาวน์โหลดรอบต่อนาทีสำหรับลูกค้าและเซิร์ฟเวอร์จากเว็บไซต์ MySQL อย่างเป็นทางการและติดตั้งเซิร์ฟเวอร์และไคลเอนต์

ในการติดตั้งเซิร์ฟเวอร์ฉันได้รับข้อความว่ารหัสผ่านของบัญชีรูทสำหรับ MySQL นั้นถูกเก็บไว้ในไฟล์ที่ฉันสามารถดูได้ด้วย sudo cat /root/.mysql_secretได้

ดังนั้นหลังจากติดตั้งไคลเอนต์และเซิร์ฟเวอร์ฉันตรวจสอบว่า MySQL ใช้งานได้หรือไม่ (ฉันคิดว่าฉันรีบูตก่อนที่จะทำเช่นนั้น) ด้วยคำสั่งsudo service mysql statusและฉันได้รับผลลัพธ์

MySQL ทำงานอยู่ (2601) [ตกลง]

ฉันเข้าสู่ระบบ MySQL โดยใช้รหัสผ่านจากไฟล์
mysql -uroot -pdxM01Xfg3DXEPabpf. mysql_secret: โปรดทราบว่าdxM01Xfg3DXEPabpfเป็นรหัสผ่านที่กล่าวถึงในไฟล์. mysql_secret

จากนั้นพิมพ์คำสั่งป้อนคำสั่งต่อไปนี้ที่พรอมต์ mysql เพื่อเปลี่ยนรหัสผ่านของรูท:

mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('somePassword');

ทุกอย่างทำงานได้ดีตั้งแต่นั้นมา


1
เคสเดียวกันบน RHEL6U6 พร้อมเซิร์ฟเวอร์เวอร์ชั่น: 5.6.23-enterprise-commercial-advanced
HCD


2

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


PythonAnywhereตัดสินใจเปลี่ยนชื่อโฮสต์การเชื่อมต่อฐานข้อมูลเพื่อปรับปรุงประสิทธิภาพและความน่าเชื่อถือตามรายละเอียดที่นี่ :

ชื่อโฮสต์อย่างเป็นทางการคุณควรใช้สำหรับเชื่อมต่อกับฐานข้อมูลเช่น MySQL บัญชีของคุณมีการเปลี่ยนแปลงจาก mysql.server เพื่อ yourusername .mysql.pythonanywhere-services.com นี่เป็นการข้ามส่วนหนึ่งของโครงสร้างพื้นฐานของเราที่เริ่มแสดงปัญหาในสัปดาห์ที่ผ่านมาและควรมีประสิทธิภาพและเชื่อถือได้มากกว่าแบบเดิม

ดังนั้นคุณจะต้องอัปเดตชื่อโฮสต์ของคุณเป็นค่าที่เน้นด้านบน


2

ฉันเพิ่งมีปัญหานี้ หลังจากผ่านไปหนึ่งวันในการตรวจสอบในที่สุดฉันก็ได้รับคำตอบว่าไฟล์ mysql.sock ถูกสร้างขึ้นเมื่อ MariaDB เริ่มทำงานและถูกลบออกเมื่อ MariaDB ปิดตัวลง มันจะไม่มีอยู่หาก MariaDB ไม่ทำงาน บางทีคุณอาจไม่ได้ติดตั้ง MariaDB คุณสามารถทำตามคำแนะนำด้านล่าง: https://www.linode.com/docs/database/mariadb/how-to-install-mariadb-on-centos-7 ที่สุด


1

ฉันมีข้อผิดพลาดซ็อกเก็ตนี้และมันก็ลงมาจากข้อเท็จจริงที่ว่า MySQL ไม่ได้ทำงาน หากคุณเรียกใช้การติดตั้งใหม่ตรวจสอบให้แน่ใจว่าคุณติดตั้ง 1) แพ็คเกจระบบและ 2) โปรแกรมติดตั้งพาเนล (mysql.prefPane) เครื่องมือติดตั้งพาเนลจะอนุญาตให้คุณข้ามการตั้งค่าระบบของคุณและเปิด MySQL แล้วเรียกใช้อินสแตนซ์

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

นอกจากนี้โปรดทราบว่าฉันติดตั้ง MySQL รุ่นก่อนหน้าแล้ว แต่ได้ลบแผงควบคุมออกซึ่งทำให้ง่ายต่อการรับอินสแตนซ์ของ MySQL ที่ใช้งานสำหรับผู้ใช้ mac

ลิงค์ที่ดีสำหรับกระบวนการติดตั้งใหม่นี้: http://www.coolestguyplanettech.com/how-to-install-php-mysql-apache-on-os-x-10-6/

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