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


143

ฉันติดตั้งเซิร์ฟเวอร์ MySQL และพยายามเชื่อมต่อ แต่ได้รับข้อผิดพลาด:

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

ฉันตรวจสอบไดเรกทอรี / tmp ของฉันแล้วและไม่มี mysql.sock ฉันไม่สามารถหา mysql.sock ได้ทุกที่ ฉันอ่านว่ามันอาจจะอยู่ใน

    /var/lib/mysql/mysql.sock

แต่ฉันตรวจสอบที่นั่นด้วยและไม่มีแม้กระทั่งไดเรกทอรี mysql เพียงบางสิ่งที่ postfix ภายใน / lib ใครสามารถช่วยฉันแก้ปัญหานี้ได้บ้าง


2
ฉันกำลังทำงานกับ Mac OS X
user3344382

สวัสดีคุณสามารถวางคำสั่งที่คุณใช้เชื่อมต่อได้หรือไม่ คุณเริ่ม MySQL ด้วยหรือยัง
มาร์คบัตเลอ

@MarkButler ฉันใช้คำสั่งนี้: / usr / local / mysql / bin / mysql
user3344382

ใช่มันเป็นแค่เซิร์ฟเวอร์ไม่ได้ทำงาน อย่างไรก็ตามฉันไม่สามารถเข้าใจว่า mysql.sock อยู่ที่ไหนมีที่ซ่อนอื่น ๆ ที่มันอาจอาศัยอยู่หรือไม่
user3344382

ข้อผิดพลาดนี้เป็นเรื่องทั่วไปมากและอาจมีสาเหตุหลายประการ สำหรับบทสรุปที่ประณีตดูได้ที่นี่: medium.com/@7anac/…
Janac Meena

คำตอบ:


272

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

mysql.server start


45
ข้อผิดพลาด! เซิร์ฟเวอร์หยุดทำงานโดยไม่อัปเดตไฟล์ PID
bastianwegge

1
@wegginho ทางออกที่เป็นไปได้กับข้อความแสดงข้อผิดพลาดของคุณถ้าคุณติดตั้ง MySQL ผ่านข้อผิดพลาด
Casey Robinson

ลืมเริ่มบริการ mysql!
GeekHades

1
@bastianwegge ลองตรวจสอบไฟล์ข้อผิดพลาดใน /usr/local/var/mysql/USERNAME.local.err ในกรณีของฉันฉันต้องลบ /tmp/mysql.sock แล้วรีสตาร์ทโดยใช้mysql.server start
Josh Bradley

61

ฉันได้รับคำถามเดียวกันหลังจากอัปเดต OS X Yosemite แล้วการแก้ปัญหาค่อนข้างง่ายตรวจสอบการตั้งค่าระบบ -> mysql สถานะหยุดทำงาน เพิ่งรีสตาร์ทและทำงานได้ดีบน mac ของฉันตอนนี้


1
ขอบคุณ ton @keren ง่ายมากฉันเสียเวลา 45 นาทีในการเปลี่ยนการตั้งค่าในไฟล์ my.cnf ของฉันเมื่อเวลาทั้งหมดนี้เป็นปัญหาเดียว
kandroidj

ทำงานให้ฉันด้วยเช่นกันไม่คิดในแง่ของการติดตั้ง DMG
Rameshwar Vyevhare

น่าเสียดายที่นี่ไม่ได้ช่วยฉัน
simhumileco

เรียบง่ายและยอดเยี่ยม!
Desmond DAI

6
เอ่ออะไรนะ? ทำไมการตั้งค่าระบบของ OSX จะมีตัวเลือก MySQL
AlxVallejo

45

สำหรับ MAMP

ln -s /Applications/MAMP/tmp/mysql/mysql.sock /tmp/mysql.sock

จากhttps://coderwall.com/p/w5kwzw/solved-can-t-connect-to-local-mysql-server-through-socket-tmp-mysql-sys-tysconnect

UPDATE: ทุกครั้งที่คอมพิวเตอร์รีสตาร์ทฉันต้องป้อนคำสั่งนี้ดังนั้นฉันจึงสร้างทางลัด

ทำสิ่งต่อไปนี้ในประเภทเทอร์มินัล:

~: vi ~/.profile

เพิ่ม

alias ...='source ~/.profile'
alias sockit='sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock /tmp/mysql.sock'

บันทึก

ในประเภทอาคาร:

~: ... ไปยังแหล่งกำหนดค่า. profile

ในเทอร์มินัลคุณสามารถพิมพ์ได้

~: sockit

1
น่ากลัว เพียงแก้ไขที่ฉันกำลังมองหา
JoshHighland

1
ฉันกลับมาที่โพสต์นี้หลายครั้งและมันใช้ได้เสมอ
Trey Copeland

อัปเกรดเป็น mysql 5.7.1 นอก MAMP และพบข้อผิดพลาด สิ่งนี้ได้แก้ไขให้ฉัน
เดวิด

หากคุณอยู่ในหนังสือ mac และคุณเห็น MAMP งานนี้
kelrob-dev

32

คำสั่งต่อไปนี้แก้ไขปัญหาของฉัน:

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

sudo mysql.server start

1
หลังจากค้นหา 3 ชั่วโมงสิ่งนี้แก้ปัญหาของฉันได้ ฉันเพิ่งติดตั้ง mysql ผ่าน homebrew ด้วยbrew install mysqlแต่ไม่มีคำสั่ง homebrew ใดบอกให้ฉันทำงานได้อย่างถูกต้อง นี่ทำให้ทุกปัญหาหายไป ... ขอบคุณ !! บรรทัดแรกที่คุณเขียนคืออะไร มันหมายความว่าอะไร?
mesqueeb

ขอบคุณใช้งานได้ดี!
Nirojan Selvanathan

1
เฮ้สำหรับฉันมันคือ: sudo chown -R _mysql: mysql / usr / local / mysql / data
Junaid Bhura

chown -R เปลี่ยนเจ้าของ -R ซ้ำ
Hos Mercury

บริสุทธิ์ 10.13.1 และ homebrew ให้ข้อผิดพลาดนี้เมื่อติดตั้ง mariadb (10.2.10) การเปลี่ยนแปลงของเจ้าของนี้แก้ไขแล้วดังนั้นตอนนี้sudo brew services start mariadbยังสามารถเริ่ม mariadb ตอนบูตได้ด้วย (ไม่ใช่แค่ที่ล็อกอิน) เย้! ขอบคุณ!
iggie

16

หลังจากลองใช้วิธีแก้ปัญหาทั้งหมดมันใช้งานได้สำหรับฉันเท่านั้นหลังจากระบุโฮสต์

mysql -u root -p -h127.0.0.1

เมื่อขอรหัสผ่าน

Enter password:

กดปุ่มตกลง

และมันจะทำงานได้ถ้าทุกอย่างโอเคตามที่กล่าวมา


2
ฉันตั้งค่า mysql ด้วยคอนเทนเนอร์ docker โดยใช้ Docker for Mac และแมปพอร์ต 3306 กับ Mac โดยไม่ต้องเพิ่ม-h 127.0.0.1มันจะพร้อมท์เสมอCan't connect to local MySQL server through socket '/tmp/mysql.sock' (2); หลังจากเพิ่มอาร์กิวเมนต์มันทำงานได้ดี
Evi Song

1
นี่เป็นเพราะการผ่าน 127.0.0.1 ไม่ได้ใช้ซ็อกเก็ตฉันคิดว่า วิธีแก้ไขเพิ่มเติมแคบ
Lucas Morgan

1
การทำงานmysql -u root -h127.0.0.1 โดยไม่มี-pค่าแฟลกทำงานให้ฉันตั้งแต่เมื่อฉันติดตั้ง MySQL ฉันไม่เคยใช้mysql_secure_installationคำสั่ง ความเข้าใจของฉันคือว่าในกรณีนี้การติดตั้งเริ่มต้นที่ไม่จำเป็นต้องใช้รหัสผ่าน
Richie Thomas

1
ทำงานเหมือนจับใจ!
Panduka DeSilva

10

หลังจากดิ้นรนหลายชั่วโมงสิ่งเดียวที่ทำงานคือ

sudo mysql.server start

จากนั้นทำการติดตั้งอย่างปลอดภัยด้วย

mysql_secure_installation 

จากนั้นเชื่อมต่อกับ db ผ่าน

mysql -uroot -p

Mysql ได้รับการติดตั้งผ่าน homebrew และเป็นเวอร์ชั่น

Server version: 5.7.21 Homebrew

การระบุเวอร์ชันอาจเป็นประโยชน์เนื่องจากโซลูชันอาจแตกต่างกันไปตามเวอร์ชัน


9

ในไฟล์กำหนดค่า mysql ของคุณซึ่งมีอยู่ใน/etc/my.cnfการเปลี่ยนแปลงด้านล่างจากนั้นเริ่มmysqldกระบวนการ dameon ใหม่

[client]
socket=/var/lib/mysql/mysql.sock

รวมทั้งตรวจสอบหัวข้อที่เกี่ยวข้องนี้

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


ไม่มีไฟล์ my.cnf ในไดเรกทอรี / etc ฉันคิดว่าฉันสามารถสร้างไฟล์นั้นด้วยตนเอง แต่อย่างที่ฉันบอกว่าไม่มีไดเรกทอรี mysql ใน / var / lib ซ็อกเก็ตจะอยู่ที่นั่นได้อย่างไร
user3344382

ตรวจสอบหัวข้อที่เกี่ยวข้องที่ฉันได้โพสต์รวมทั้งตรวจสอบว่าเซิร์ฟเวอร์ mysql ของคุณทำงานจริงหรือไม่
ราหุล

ฉันพบไฟล์ใน/etc/mysql/my.cnf
Devon

หากคุณติดตั้ง Brew คุณจำเป็นต้องใช้/tmp/mysql.sockเป็นตำแหน่งถุงเท้า
Mark Shust ที่ M.academy

8

การติดตามแก้ไขปัญหาของฉัน:

ตรวจสอบว่าเซิร์ฟเวอร์ MySQL ของคุณกำลังรับฟังอยู่ที่ไหน: netstat -nlp หากกำลังฟัง TCP อยู่ให้ใช้ 127.0.0.1 ขณะเชื่อมต่อกับฐานข้อมูลแทนที่จะเป็น "localhost"

ตรวจสอบ MySQL doc ที่นี่


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

8

ลองสิ่งนี้มันใช้งานได้สำหรับฉัน

sudo /usr/local/mysql/support-files/mysql.server เริ่มทำงาน


ทำไมต้องเป็นเส้นทางนี้ ในขณะที่ใช้คำสั่ง "Where is mysql" (MAC OS) ให้เอาต์พุต /usr/local/mysql/bin/.How จะระบุเส้นทางนี้ใน Mac ได้อย่างไร?
Vineeth Bhaskaran

Ya, ทางเปลี่ยนไปตาม
vasanth vasu

4

หากคุณใช้ XAMPP ใน Mac OS X และติดตั้ง MySQL ด้วย Homebrew คุณอาจมีปัญหานี้ ในหน้าต่างตัวจัดการ XAMPP ไปที่จัดการเซิร์ฟเวอร์และเลือก MySQL จากนั้นคลิกกำหนดค่าและเปิดไฟล์การกำหนดค่าที่นั่นคุณมีเส้นทางไฟล์ซ็อกเก็ตวางเส้นทางในการกำหนดค่าโฮสต์ MySQL ของคุณและควรจะทำงาน

มันเป็นแบบนี้:

...
[client]
#password   = your_password
port        = 3306
socket      = /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
...

จากนั้นเช่นใน Django:

...    
DATABASES = {
        "default": {
            "ENGINE": "django.db.backends.mysql",
            "NAME": "database_name",
            "USER": "user",
            "PASSWORD": "password",
            "HOST": "/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock",
            "PORT": "",
        }
    }
...

หวังว่านี่จะช่วยได้


3

ก่อนอื่นการทราบว่าไดเรคทอรีข้อมูลสำหรับฉันคือกุญแจสำคัญ /usr/local/var/mysql ในที่นี่มีไฟล์อย่างน้อยหนึ่งไฟล์ที่มีนามสกุล .err นำหน้าด้วยชื่อเครื่องของฉัน มันมีข้อมูลทั้งหมดที่ฉันต้องการในการวินิจฉัย

ฉันคิดว่าฉันเมาด้วยการติดตั้ง mysql 8 ก่อน แอพของฉันไม่รองรับมันดังนั้นฉันต้องปรับลดรุ่นกลับเป็น 5.7

โซลูชันของฉันที่ใช้งานได้สำหรับฉันคือไปที่ /usr/local/etc/my.cnf

หาบรรทัดนี้ถ้ามันอยู่ตรงนั้น ฉันคิดว่า mysql 8 ที่เกี่ยวข้อง:

mysqlx-bind-address = 127.0.0.1 

ลบออกเพราะใน mysql 5.7 บอกว่ามันไม่ชอบในบันทึกข้อผิดพลาด

เพิ่มบรรทัดนี้ด้วยหากไม่อยู่ภายใต้การผูกที่อยู่

socket=/tmp/mysql.sock

ไปที่ /tmpไดเรกทอรีและลบไฟล์ mysql.sock ใด ๆ ในนั้น เมื่อเซิร์ฟเวอร์เริ่มต้นมันจะสร้างไฟล์ sock ขึ้นมาใหม่

ทิ้งไดเรกทอรีข้อมูลด้วย mySQL ในสถานะหยุดทำงาน ของฉันคือ /usr/local/var/mysqlเหมืองนี่เป็นสถานที่เดียวกันกับที่บันทึก

จากนั้นฉันก็วิ่ง

>mysqld --initialize

จากนั้นทุกอย่างก็เริ่มทำงาน ... คำสั่งนี้จะให้รหัสผ่านแบบสุ่มแก่คุณในตอนท้าย บันทึกรหัสผ่านนั้นสำหรับขั้นตอนต่อไป

ใช้สิ่งนี้เพื่อกำหนดรหัสผ่านของฉันเอง

>mysql_secure_installation 

ทั้งสอง

>brew services stop mysql@5.7

และ

>mysql.server start

กำลังทำงานอยู่ หวังว่านี่จะช่วยได้ มันใช้เวลาประมาณ 3 ชั่วโมงในการลองผิดลองถูก



0

ฉันใช้เวลามากในการทำสิ่งนี้ฉันต้องการที่จะนำแอพ django ของฉันไปที่เซิร์ฟเวอร์ของฉันและเมื่อฉันทำงานpython manage.py migrateฉันได้พบกับคำถามนี้

และ!! ฉันตั้งสิ่งนี้ ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock มันใช้งานได้ในที่สุด!



0

การหยุดและเริ่มต้นเซิร์ฟเวอร์ mysql จากเทอร์มินัลสามารถแก้ไขปัญหาของฉันได้ ด้านล่างนี้เป็น cmds ที่จะหยุดและเริ่มเซิร์ฟเวอร์ mysql ใน MacOs

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

หมายเหตุ: การรีสตาร์ทบริการจากการตั้งค่าระบบ Mac ไม่ได้แก้ปัญหาใน mac ของฉัน ดังนั้นลองรีสตาร์ทจากเทอร์มินัล


0

หากคุณใช้งานบน macOS ง่ายกว่าก่อนอื่นให้ตรวจสอบที่ 'การตั้งค่าระบบ' และดูว่า MySQL ทำงานอยู่หรือไม่


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