Không thể tìm thấy mysql.sock


81

Tôi vừa phải cài đặt lại mysql và tôi đang gặp sự cố khi khởi động nó. Nó không thể tìm thấy ổ cắm (mysql.sock). Vấn đề là tôi cũng không thể. Trong thiết bị đầu cuối Mac OS X 10.4 của mình, tôi nhập:, locate mysql.sockvà tôi quay lại /private/tmp/mysql.sock. Có nghĩa là tệp socket tồn tại ở vị trí đó, nhưng thực tế thì không.

  1. Làm cách nào để tìm tệp socket?

  2. Nếu định vị trả về một vị trí sai, nó phải có một số loại bộ nhớ và có thể là các chỉ mục. Làm cách nào để làm mới chỉ mục đó?


1
/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
Máxima Alekz

Câu trả lời:


139

để trả lời phần đầu tiên của câu hỏi của bạn:

chạy

% mysqladmin -p -u <user-name> variables

và kiểm tra biến 'socket'


1
Tôi sẽ hoàn toàn thay đổi câu trả lời này thành câu đúng nếu tôi có thể. Giá như tôi biết điều này sớm hơn!
Steph Rose,

49
Ran mysqladmin variables. Làm gì khi error: 'Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)'nào? :)
Alexander Wallin

Tôi gặp lỗi tương tự như @afEkenholm và không thể tìm ra giải pháp. Tôi đã chạy sudo find / -name mysql.socktừ thư mục gốc và không thể tìm thấy mysql.sock ở bất kỳ đâu trên hệ thống. Tôi đã cài đặt MySQL bằng tệp dmg 64 bit cho Mac OS 10.7. Hiện đang chạy Mavericks.
b_dubb

@b_dubb Tôi cũng giống hoàn cảnh của bạn, Bạn đã giải quyết vấn đề của mình như thế nào?
MeganZhou

1
Để nhanh chóng tra cứu tham số socket mà không cần tất cả những thứ khác: biến mysqladmin | ổ cắm grep
BAR

48

Điều này đã giải quyết vấn đề của tôi

mysql_config --socket

CẬP NHẬT

mysql_config có thể cho chúng tôi biết tệp mysql.sock nên ở đâu, nhưng trong trường hợp của tôi thì tệp không tồn tại. Vì vậy, tôi đã xóa my.cnf:

sudo rm -rf /etc/my.cnf

Và sau đó khởi động lại mysql:

brew services restart mysql

Tệp đã được tạo và mysql hiện đang chạy tốt.


7
Lệnh đó sẽ cho bạn biết nơi mysql.sock là mà trả lời câu hỏi
Eugene Ramirez

3
Lệnh này không cho bạn biết tệp đang ở đâu. Nó cho bạn biết nơi mysql đang tìm kiếm nó: cài đặt cấu hình cho --socket.
morksinaanab

Tôi không có ls: /etc/my.cnf: No such file or directoryCó thể tôi phải tạo nó trước?
Abhi

nếu bạn không có hồ sơ tại /etc/my.cnfthử nhìn vào /usr/loca/etc/my.cnf- @Abhi
rwcorbett

20

Tệp socket sẽ được tạo tự động khi daemon MySQL khởi động.

Nếu không tìm thấy, rất có thể thư mục được cho là chứa nó không tồn tại hoặc một số vấn đề hệ thống tệp khác đang ngăn không cho tạo ổ cắm.

Để biết vị trí của tệp, hãy sử dụng:

% mysqld --verbose --help | grep ^socket

4
Hoặc mysql --verbose --help | grep ^ socket
Ondrej Rafaj

1
@Ondrej chắc chắn điều đó cho bạn biết khách hàng nghĩ họ đang tìm kiếm ở đâu? Điều quan trọng mysqldlà nó sẽ cho bạn biết máy chủ thực sự đặt nó ở đâu!
Alnitak

về cài đặt xampp của tôi, tôi không thể tìm thấy daemon nên cố gắng mà không có nó và nó làm việc :) ... những gì đã xảy ra đằng sau hậu trường tôi không có đầu mối của ...
Ondrej Rafaj

19

Điều này đã tìm thấy nó cho tôi:

netstat -ln | grep mysql

Mac OSX


10

Vấn đề của tôi cũng là tệp mysql.sock.

Trong quá trình cài đặt drupal, tôi phải nói cơ sở dữ liệu nào tôi muốn sử dụng nhưng cơ sở dữ liệu của tôi không được tìm thấy

mkdir /var/mysql
ln -s /tmp/mysql.sock /var/mysql/mysql.sock

hệ thống đang tìm kiếm mysql.sock nhưng nó ở sai thư mục

tất cả những gì bạn phải làm là liên kết nó;)

Tôi đã mất rất nhiều thời gian để google tất cả các thông tin quan trọng nhưng tôi thậm chí mất hàng giờ để tìm ra cách thích nghi, nhưng bây giờ tôi có thể trình bày kết quả: D

ps: nếu bạn muốn chính xác, bạn phải liên kết của bạn /tmp/mysql.sock-file(nếu nó cũng nằm trong hệ thống của bạn ở đó) với thư mục được cung cấp bởi php.ini (hoặc php.default.ini) ở đópdo_mysql.default_socket= ...


Sau khi bạn đã thay đổi trong php.ini của pdo_mysql.default_socketbạn cần phải khởi động lại máy chủ web để những thay đổi tảisudo apachectl restart
Szekelygobe

5

Tôi có đường dẫn chính xác bằng cách sử dụng:

netstat -ln | grep -o -m 1 -E '\S*mysqld?\.sock'

Vì điều này chỉ trả về đường dẫn và không yêu cầu bất kỳ đầu vào nào nên bạn có thể sử dụng nó trong một tập lệnh shell.

MySQL hiện phải đang chạy trên máy của bạn để điều này hoạt động. Hoạt động cho MariaDB quá.


Câu trả lời chính xác! Điều này thực sự tìm thấy vị trí của ổ cắm, không giống như bất kỳ câu trả lời nào khác.
Tyler Christian

2

Các câu hỏi ban đầu dường như xuất phát từ sự nhầm lẫn về a) tệp ở đâu và b) tệp đang được tìm kiếm ở đâu (và tại sao chúng tôi không thể tìm thấy tệp ở đó khi chúng tôi xác định vị trí hoặc tìm kiếm). Tôi nghĩ quan điểm của Alnitak là bạn muốn tìm nơi nó được liên kết đến - nhưng grep sẽ không hiển thị cho bạn liên kết, phải không? Tệp không tồn tại ở đó, vì nó là một liên kết, nó chỉ là một con trỏ. Bạn vẫn cần biết nơi đặt liên kết.

tệp sock của tôi chắc chắn nằm trong / tmp và LỖI tôi đang tìm kiếm nó trong / var / lib / (không chỉ / var) Tôi đã liên kết với / var và / var / lib và tôi vẫn gặp lỗi "Không thể kết nối với máy chủ MySQL cục bộ thông qua socket 'var / lib / mysql.sock' (2)".

Lưu ý (2) sau lỗi .... Tôi đã tìm thấy trên một chủ đề khác rằng điều này có nghĩa là ổ cắm thực sự có thể được cố gắng sử dụng, nhưng có gì đó không ổn với chính ổ cắm - vì vậy để tắt máy hoàn toàn - vì vậy ổ cắm đóng. Sau đó, khởi động lại sẽ sửa chữa nó. Tôi đã thử cách này, nhưng nó không hiệu quả với tôi (bây giờ tôi đặt câu hỏi liệu tôi có khởi động lại quá nhanh không?) Có thể nó sẽ là một giải pháp cho người khác.


1
$ mysqladmin variables | grep sock

Hãy thử điều này thay thế, điều này sẽ xuất ra kết quả được yêu cầu, loại bỏ thông tin không liên quan.


0

Để làm mới cơ sở dữ liệu của định vị, tôi đã chạy

/usr/libexec/locate.updatedb

0

(Q1) Làm cách nào tôi có thể tìm thấy tệp ổ cắm?

Vị trí mặc định cho tệp ổ cắm là /tmp/mysql.sock, để tìm tệp ổ cắm cho hệ thống của bạn, hãy sử dụng vị trí này.

mysqladmin variables | grep socket

Nếu bạn vừa cài đặt MySql, tệp mysql.sock sẽ không được tạo cho đến khi máy chủ được khởi động. Sử dụng lệnh này để khởi động nó.

sudo launchctl load -F /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist

Nếu được nhắc nhập mật khẩu, bạn có thể chuyển tên người dùng gốc hoặc tên người dùng khác như thế này. Terminal sẽ nhắc bạn nhập mật khẩu.

mysqladmin --user root --password variables | grep socket

(Q2) Làm cách nào tôi có thể làm mới chỉ mục định vị

Làm mới định vị db bằng lệnh này.

sudo /usr/libexec/locate.updatedb

0

Tôi gặp lỗi tương tự trên Mac OS X 10.11.6:

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

Sau rất nhiều khó khăn và tìm hiểu các lời khuyên ở đây và các câu hỏi liên quan, không có câu hỏi nào trong số đó dường như khắc phục được sự cố, tôi đã quay lại và xóa các thư mục đã cài đặt và chỉ làm như vậy brew install mysql.

Vẫn gặp lỗi tương tự với hầu hết các lệnh, nhưng cách này hoạt động:

/usr/local/bin/mysqld

và trả về:

/ usr / local / bin / mysqld: sẵn sàng cho các kết nối.

Phiên bản: '5.7.12' socket: '/tmp/mysql.sock' port: 3306 Homebrew


0

Tôi không thể tìm thấy ổ cắm mysql nào nên đã cài đặt lại máy chủ mysql (tất cả các bảng và cài đặt phpmyadmin được giữ nguyên). Đây là các lệnh:

1) Cài đặt

sudo apt-get install mysql-server

2) Làm theo các bước cấu hình thiết bị đầu cuối

sudo mysql_secure_installation

3) Kiểm tra trạng thái: (Nên trả về "Hoạt động: hoạt động (đang chạy)")

trạng thái systemctl mysql.service


0

Thật không may, không có cách nào ở trên hoạt động trong trường hợp của tôi. Nhưng cuối cùng tôi đã tìm ra giải pháp.

Để tìm tệp mysql.sock ở đâu, chỉ cần mở trình quản lý xampp, chọn MySQL và nhấp vào Định cấu hình ở bên phải. Trên bảng cấu hình, nhấp vào Mở tệp tin cấu hình và chỉ cần tìm kiếm mysql.sock bằng cách nhấn phím tắt CMD + F.

Trong trường hợp của tôi, chủ sở hữu của mysql.sock đã bị thay đổi và tôi phải thay đổi nó trở lại thành quản trị viên gốc với: chmod root: admin mysql.sock

Sau đó, cơ sở dữ liệu đã được truy cập.


-4

Tôi không thể giúp được câu hỏi số 1, nhưng để làm mới locatecơ sở dữ liệu tệp của, hãy chạy:

updatedb
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.