Không thể kết nối với máy chủ MySQL cục bộ thông qua socket '/tmp/mysql.sock' (2)


143

Tôi đã cài đặt máy chủ MySQL và cố gắng kết nối với nó, nhưng gặp lỗi:

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

Tôi đã kiểm tra thư mục / tmp của tôi và không có mysql.sock. Tôi không thể tìm thấy mysql.sock ở bất cứ đâu. Tôi đọc nó có thể ở

    /var/lib/mysql/mysql.sock

Nhưng tôi cũng đã kiểm tra ở đó và thậm chí không có thư mục mysql, chỉ có một số điều hậu tố bên trong / lib. Bất cứ ai có thể giúp tôi với vấn đề này?


2
Tôi đang làm việc trên Mac OS X
user3344382

Xin chào, bạn có thể dán lệnh bạn đang sử dụng để kết nối không? Bạn cũng đã bắt đầu MySQL chưa?
Mark Butler

@MarkButler Tôi đang sử dụng lệnh này: / usr / local / mysql / bin / mysql
user3344382

đúng, chỉ là máy chủ không chạy. Tuy nhiên, tôi vẫn không thể hiểu mysql.sock ở đâu, có thể có bất kỳ địa điểm ẩn nào khác nơi nó có thể cư trú không?
dùng3344382

Lỗi này rất chung chung, và nó có thể vì nhiều lý do. Để có một bản tóm tắt gọn gàng xem tại đây: Medium.com/@7anac/ khăn
Janac Meena

Câu trả lời:


272

Hãy thử khởi động máy chủ MySQL:

mysql.server start


44
LỖI! Máy chủ thoát mà không cập nhật tệp PID
bastianwegge

1
@wegginho Giải pháp có thể cho thông báo lỗi của bạn nếu bạn đã cài đặt MySQL thông qua lỗi PID
Casey Robinson

quên bắt đầu dịch vụ mysql!
GeekHades 30/03/18

1
@bastianwegge thử kiểm tra tệp lỗi trong /usr/local/var/mysql/USERNAME.local.err trong trường hợp của tôi, tôi phải xóa /tmp/mysql.sock sau đó khởi động lại bằng cách sử dụngmysql.server start
Josh Bradley

61

Tôi đã nhận được câu hỏi tương tự sau khi cập nhật OS X Yosemite, giải pháp khá đơn giản, kiểm tra tùy chọn hệ thống -> mysql, trạng thái là DỪNG. Chỉ cần khởi động lại nó và nó hoạt động tốt trên máy Mac của tôi bây giờ.


1
Cảm ơn một tấn @keren rất đơn giản, tôi đã lãng phí 45 phút để thay đổi cài đặt trong tệp my.cnf của mình khi toàn bộ thời gian này là vấn đề duy nhất.
kandroidj 8/2/2015

Làm việc cho tôi cũng cảm ơn, đã không có ý tưởng trong việc cài đặt DMG.
Rameshwar Vyevhare

Thật không may, điều này không giúp tôi
simhumileco

Đơn giản và tuyệt vời!
Desmond DAI

6
Ừm, cái gì? Tại sao Tùy chọn hệ thống của OSX có tùy chọn MySQL?
AlxVallejo

45

Đối với MAMP

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

Từ https://coderwall.com/p/w5kwzw/solve-can-t-connect-to-local-mysql-server-ENC-socket-tmp-mysql-sock

CẬP NHẬT: Mỗi lần máy tính của tôi khởi động lại, tôi phải nhập lệnh này, vì vậy tôi đã tạo một lối tắt.

Thực hiện như sau trong loại thiết bị đầu cuối:

~: vi ~/.profile

Thêm vào

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

Tiết kiệm.

Trong loại thiết bị đầu cuối:

~: ... để cấu hình .profile.

Bây giờ trong thiết bị đầu cuối, bạn có thể chỉ cần gõ

~: sockit

1
Tuyệt vời. Chỉ là sửa chữa tôi đang tìm kiếm.
JoshHighland 3/03/2016

1
Tôi đã trở lại bài đăng này nhiều lần và nó luôn hoạt động.
Trey Copeland

Đã nâng cấp lên mysql 5.7.1 bên ngoài MAMP và gặp lỗi. Điều này đã sửa nó cho tôi
David

Nếu bạn đang ở trên một cuốn sách mac và bạn sẽ thấy MAMP thì nó hoạt động
kelrob-dev

32

Lệnh sau đã giải quyết vấn đề của tôi:

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

sudo mysql.server start

1
Sau khi tìm kiếm trong 3 giờ, điều này đã giải quyết vấn đề của tôi. Tôi chỉ cài đặt mysql thông qua homebrew brew install mysqlnhưng không có lệnh nào homebrew bảo tôi chạy đúng. Điều này làm cho mọi vấn đề biến mất ... Cảm ơn bạn !! Chính xác thì dòng đầu tiên mà bạn đã viết là gì? Nó có nghĩa là gì?
mesqueeb

Cảm ơn, hoạt động tốt!
Nirojan Selvanathan

1
Xin chào, đó là: sudo chown -R _mysql: mysql / usr / local / mysql / data
Junaid Bhura

chown -R thay đổi chủ sở hữu -R đệ quy
Hos Mercury

Một bản 10.13.1 nguyên sơ và homebrew đã đưa ra lỗi này khi cài đặt mariadb (10.2.10). Thay đổi chủ sở hữu này đã sửa nó, vì vậy bây giờ sudo brew services start mariadbcũng hoạt động để bắt đầu mariadb khi khởi động (không chỉ lúc đăng nhập). YAY! Cảm ơn bạn!
iggie

16

Sau khi thử tất cả các giải pháp, nó chỉ hoạt động với tôi sau khi chỉ định máy chủ

mysql -u root -p -h127.0.0.1

khi hỏi mật khẩu

Enter password:

nhấn nút Enter

và nó sẽ hoạt động, nếu mọi thứ đều ổn như trên.


2
Tôi thiết lập mysql với bộ chứa docker bằng cách sử dụng Docker cho Mac và ánh xạ cổng 3306 của nó sang Mac. Không thêm -h 127.0.0.1, nó luôn luôn nhắc Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2); Sau khi thêm đối số, nó hoạt động tốt.
Bài hát Evi

1
Điều này là do đi qua 127.0.0.1 không sử dụng ổ cắm, tôi nghĩ vậy. Thêm một cách giải quyết hẹp.
Lucas Morgan

1
Chạy mysql -u root -h127.0.0.1 mà không có -pcờ làm việc cho tôi, vì khi tôi cài đặt MySQL tôi không bao giờ chạy mysql_secure_installationlệnh. Tôi hiểu rằng trong trường hợp này, cài đặt mặc định không có mật khẩu cần thiết.
Richie Thomas

1
Làm việc như người ở !
Panduka DeSilva

10

Sau nhiều giờ vật lộn, điều duy nhất có hiệu quả là

sudo mysql.server start

Sau đó thực hiện cài đặt an toàn với

mysql_secure_installation 

Sau đó kết nối với db qua

mysql -uroot -p

Mysql được cài đặt thông qua homebrew và phiên bản là

Server version: 5.7.21 Homebrew

Chỉ định phiên bản có thể hữu ích vì giải pháp có thể khác nhau dựa trên phiên bản.


9

Trong tệp cấu hình mysql của bạn, hiện diện trong /etc/my.cnfcác thay đổi bên dưới và sau đó khởi động lại mysqldquá trình dameon

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

Cũng kiểm tra chủ đề liên quan này

Không thể kết nối với máy chủ MySQL cục bộ thông qua socket '/tmp/mysql.sock


không có tập tin my.cnf trong thư mục / etc. Tôi nghĩ rằng tôi có thể tạo tệp đó theo cách thủ công, nhưng như tôi đã nói không có thư mục mysql trong / var / lib, làm thế nào ổ cắm có thể ở đó?
dùng3344382

Kiểm tra các chủ đề liên quan tôi đã đăng cũng như kiểm tra xem máy chủ mysql của bạn có thực sự chạy hay không.
La Mã

Tôi tìm thấy tập tin trong/etc/mysql/my.cnf
Devon

nếu bạn đã cài đặt với brew, bạn cần sử dụng /tmp/mysql.socklàm vị trí sock
Mark Shust tại M.academy

8

Sau đây đã giải quyết vấn đề của tôi:

Kiểm tra xem máy chủ MySQL của bạn đang nghe ở đâu: netstat -nlp Nếu nó đang lắng nghe TCP thì hãy sử dụng 127.0.0.1 trong khi kết nối với DB thay vì "localhost"

Kiểm tra tài liệu MySQL tại đây


điều này dường như làm việc với tôi và chứng minh mysql còn sống nhưng tại sao tôi không thể kết nối với ổ cắm cục bộ?
Colin D

8

Hãy thử nó nó làm việc cho tôi.

sudo /usr/local/mysql/support-files/mysql.server bắt đầu


Tại sao con đường này? trong khi sử dụng lệnh "mysql" ở đâu (MAC OS) cho đầu ra /usr/local/mysql/bin/. Làm thế nào để xác định đường dẫn này trong Mac?
Vineeth Bhaskaran

Ya, Con đường thay đổi tương ứng
vasanth vasu

4

Nếu bạn đang sử dụng XAMPP trong Mac OS X và đã cài đặt MySQL với Homebrew, bạn có thể gặp vấn đề này. Trong cửa sổ trình quản lý XAMPP, vào Quản lý máy chủ và chọn MySQL, sau đó nhấp vào cấu hình và mở tệp cấu hình, ở đó bạn có đường dẫn tệp ổ cắm, đặt đường dẫn trong cấu hình máy chủ MySQL của bạn và nó sẽ hoạt động.

Nó giống như thế này:

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

sau đó, ví dụ trong Django:

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

Hi vọng điêu nay co ich.


3

Đầu tiên, biết nơi thư mục dữ liệu đối với tôi là chìa khóa. /usr/local/var/mysql Ở đây, có ít nhất một tệp có phần mở rộng .err trước tên máy cục bộ của tôi. Nó có tất cả thông tin tôi cần để chẩn đoán.

Tôi nghĩ rằng tôi đã làm rối lên bằng cách cài đặt mysql 8 trước. Ứng dụng của tôi không tương thích với nó nên tôi phải hạ xuống còn 5.7

Giải pháp của tôi phù hợp với tôi là /usr/local/etc/my.cnf

Tìm dòng này nếu nó ở đó. Tôi nghĩ rằng mysql 8 của nó liên quan:

mysqlx-bind-address = 127.0.0.1 

Loại bỏ nó bởi vì trong mysql 5.7 nói rằng nó không thích nó trong nhật ký lỗi

Ngoài ra, thêm dòng này trong đó nếu nó không có dưới địa chỉ liên kết.

socket=/tmp/mysql.sock

Đi đến /tmpthư mục và xóa bất kỳ tập tin mysql.sock trong đó. Khi máy chủ khởi động, nó sẽ tạo lại các tệp sock

Bỏ thư mục dữ liệu với myQuery ở trạng thái dừng. Mine là /usr/local/var/mysql. Đây là cùng một nơi mà các bản ghi đang ở

Từ đó tôi chạy

>mysqld --initialize

Sau đó, mọi thứ bắt đầu hoạt động ... lệnh này sẽ cung cấp cho bạn một mật khẩu ngẫu nhiên ở cuối. Lưu mật khẩu đó cho bước tiếp theo

Chạy này để gán mật khẩu của riêng tôi.

>mysql_secure_installation 

Cả hai

>brew services stop mysql@5.7

>mysql.server start

hiện đang làm việc Hi vọng điêu nay co ich. Đó là khoảng 3 giờ thử nghiệm và lỗi.


3

Loại đầu tiên này-:

brew services start mysql

Thì đây -:

mysql -uroot

0

Tôi đã dành rất nhiều thời gian để làm điều này Tôi muốn đưa ứng dụng django của mình lên máy chủ và khi tôi chạy python manage.py migratetôi đã gặp câu hỏi này

Và !! Tôi đặt cái này ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock Nó hoạt động cuối cùng!



0

Dừng và khởi động máy chủ mysql từ thiết bị đầu cuối đã giải quyết vấn đề của tôi. Dưới đây là các cmds để dừng và khởi động máy chủ mysql trong MacOs.

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

Lưu ý: Khởi động lại các dịch vụ từ tùy chọn Hệ thống Mac không giải quyết được sự cố trong máy Mac của tôi. Vì vậy, hãy thử khởi động lại từ thiết bị đầu cuối.


0

Nếu bạn đang chạy trên macOS, trước tiên, hãy kiểm tra 'Tùy chọn hệ thống' và xem MySQL có chạy hay không.


-1

Đối với CentOS, tệp để init mysql được đặt ở đây:

/etc/init.d/mysqld start
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.