mysqld_safe Directory '/ var / run / mysqld' cho tệp ổ cắm UNIX không tồn tại


186

Trong khi khởi động máy chủ mysql 5.7.17 bằng mysqld_safe, xảy ra lỗi sau.

2017-02-10T17:05:44.870970Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2017-02-10T17:05:44.872874Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2017-02-10T17:05:44.874547Z mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.

Làm thế nào để khắc phục nó?

Câu trả lời:


499

Có vẻ kỳ lạ là thư mục này không được tạo khi cài đặt - bạn đã tự thay đổi đường dẫn của tệp socket trong my.cfg chưa?

Bạn đã thử đơn giản là tự tạo thư mục này và khởi động lại dịch vụ chưa?

mkdir -p /var/run/mysqld
chown mysql:mysql /var/run/mysqld

2
Không, tôi chưa thực hiện bất kỳ thay đổi nào bằng tay. Tôi sẽ thử điều này bằng cách tạo thư mục. Cảm ơn những lời đề nghị
Rajadip

14
Nó xảy ra trên mysql 5.7. Khi bạn dừng dịch vụ mysql / var / run / mysqld bị xóa và được tạo lại khi bạn bắt đầu lại dịch vụ.
Capy

2
Phải sử dụng sudo cho cả hai
Kasun Rajapaksha

1
@Cacco - upvote - @Matt Clark - bạn vui lòng chỉnh sửa câu trả lời của mình để bao gồm thông tin rằng mặc dù DIR có thể đã được tạo nhưng nó sẽ bị xóa nếu chúng tôi chạy - $ sudo /etc/init.d/mysql stop, cảm ơn
Rohit Dhankar

nếu bạn vẫn nhận được cùng một lỗi theo các bước sau LƯU Ý sudosẽ giải quyết vấn đề này vì thư mục này đã bị xóa một khi mysqlđã dừng và không có sudonó sẽ không có quyền truy cập vào các thư mục này !!!
Jadeye

71

Khi tôi sử dụng mã mysqld_safe --skip-grant-tables &nhưng tôi gặp lỗi:

mysqld_safe Directory '/ var / run / mysqld' cho tệp ổ cắm UNIX không tồn tại.

$ systemctl stop  mysql.service
$ ps -eaf|grep mysql
$ mysqld_safe --skip-grant-tables &

Tôi đã giải quyết:

$ mkdir -p /var/run/mysqld
$ chown mysql:mysql /var/run/mysqld

Bây giờ tôi sử dụng cùng một mã mysqld_safe --skip-grant-tables &và nhận được

mysqld_safe Bắt đầu trình nền mysqld với cơ sở dữ liệu từ / var / lib / mysql

Nếu tôi sử dụng $ mysql -u roottôi sẽ nhận được:

Phiên bản máy chủ: 5.7.18-0ubfox0.16.04.1 (Ubuntu)

Bản quyền (c) 2000, 2017, Oracle và / hoặc các chi nhánh của nó. Đã đăng ký Bản quyền.

Oracle là nhãn hiệu đã đăng ký của Tập đoàn Oracle và / hoặc các chi nhánh của nó. Những tên khác có thể là thương hiệu của chủ sở hữu tương ứng.

Nhập 'trợ giúp;' hoặc '\ h' để được giúp đỡ. Nhập '\ c' để xóa câu lệnh đầu vào hiện tại.

mys>

Bây giờ thời gian để thay đổi mật khẩu:

mysql> use mysql
mysql> describe user;

Đọc thông tin bảng để hoàn thành tên bảng và cột Bạn có thể tắt tính năng này để khởi động nhanh hơn với -A

Cơ sở dữ liệu đã thay đổi

mysql> FLUSH PRIVILEGES;
mysql> SET PASSWORD FOR root@'localhost' = PASSWORD('newpwd');

hoặc Nếu bạn có tài khoản gốc mysql có thể kết nối từ mọi nơi, bạn cũng nên làm:

UPDATE mysql.user SET Password=PASSWORD('newpwd') WHERE User='root';

Phương pháp luân phiên:

   USE mysql
   UPDATE user SET Password = PASSWORD('newpwd')
   WHERE Host = 'localhost' AND User = 'root';

Và nếu bạn có tài khoản root có thể truy cập từ mọi nơi:

 USE mysql
 UPDATE user SET Password = PASSWORD('newpwd')
 WHERE Host = '%' AND User = 'root';`enter code here

bây giờ cần phải quittừ mysql và dừng / bắt đầu

FLUSH PRIVILEGES;
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start

bây giờ một lần nữa `mysql -u root -p 'và sử dụng mật khẩu mới để lấy

mys>


9
kể từ MySQL 5.7.6, cột Mật khẩu đã được đổi tên thành "xác thực chuỗi
IberoMedia

6

Làm việc cho tôi trong CentOS:

$ service mysql stop
$ mysqld --skip-grant-tables &
$ mysql -u root mysql

mysql> FLUSH PRIVILEGES;
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';

$ service mysql restart

0

Bạn có thể thử các cách sau nếu cơ sở dữ liệu của bạn không có bất kỳ dữ liệu nào HOẶC bạn có một dữ liệu khác để khôi phục dữ liệu đó. Bạn sẽ cần biết mật khẩu gốc của máy chủ Ubuntu chứ không phải mật khẩu gốc mysql.

Rất có thể là nhiều người trong chúng ta đã cài đặt "mysql_secure_installation" vì đây là cách tốt nhất. Điều hướng đến thư mục bin nơi tồn tại mysql_secure_installation. Nó có thể được tìm thấy trong thư mục / bin trên các hệ thống Ubuntu. Bằng cách chạy lại trình cài đặt, bạn sẽ được nhắc về việc có nên thay đổi mật khẩu cơ sở dữ liệu gốc hay không.


Nhưng, tôi nghĩ rằng đây là chỉ sử dụng máy chủ mysql an toàn. Không phải sao? Nó không tạo ra sự khác biệt trong vấn đề này.
Rajadip

Điều này không có ích nếu bạn quên mật khẩu gốc vì trước tiên bạn phải nhập mật khẩu hiện tại.
Jistanidiot
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.