Vấn đề của tôi bắt đầu với tôi không thể đăng nhập như root thêm vào cài đặt MySQL của tôi. Tôi đã cố gắng chạy MySQL mà không cần bật mật khẩu ... nhưng bất cứ khi nào tôi chạy lệnh
# mysqld_safe --skip-grant-tables &
Tôi sẽ không bao giờ nhận được lời nhắc trở lại. Tôi đã cố gắng làm theo các hướng dẫn này để khôi phục mật khẩu.
Màn hình trông như thế này:
root@jj-SFF-PC:/usr/bin# mysqld_safe --skip-grant-tables
120816 11:40:53 mysqld_safe Logging to syslog.
120816 11:40:53 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
Và tôi không nhận được lời nhắc để bắt đầu gõ các lệnh SQL để đặt lại mật khẩu.
Khi tôi giết nó bằng cách nhấn Ctrl + C, tôi nhận được thông báo sau:
error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' [2]'
Check that mysqld is running and that the socket: '/var/run/mysqld/mysqld.sock' exists!
Nếu tôi thử lại lệnh và để nó đủ lâu, tôi sẽ nhận được một loạt các tin nhắn sau:
root@jj-SFF-PC:/run/mysqld# 120816 13:15:02 mysqld_safe Logging to syslog.
120816 13:15:02 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
120816 13:16:42 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
[1]+ Done mysqld_safe --skip-grant-tables
root@jj-SFF-PC:/run/mysqld#
Nhưng sau đó nếu tôi cố gắng đăng nhập làm root bằng cách làm:
# mysql -u root
Tôi nhận được thông báo lỗi sau:
ERROR 2002 [HY000]: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' [2]
Tôi đã kiểm tra và tệp
root@jj-SFF-PC:/usr/bin# mysqld_safe --skip-grant-tables
120816 11:40:53 mysqld_safe Logging to syslog.
120816 11:40:53 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
5 không tồn tại. Thư mục làm, nhưng không phải là tập tin.Ngoài ra, tôi không biết điều này có giúp ích hay không, nhưng tôi đã chạy
root@jj-SFF-PC:/usr/bin# mysqld_safe --skip-grant-tables
120816 11:40:53 mysqld_safe Logging to syslog.
120816 11:40:53 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
6 và nó đã đưa ra:/var/run/mysqld - folder
/usr/sbin/mysqld - file
/run/mysqld - folder
Tôi là người mới đến Linux và MySQL, vì vậy tôi không biết điều này có bình thường hay không. Nhưng tôi bao gồm thông tin này chỉ trong trường hợp nó giúp.
Cuối cùng tôi đã quyết định gỡ cài đặt và cài đặt lại MySQL.
apt-get remove mysql-server
apt-get remove mysql-client
apt-get remove mysql-common
apt-get remove phpmyadmin
Sau khi cài đặt lại tất cả các gói một lần nữa theo cùng một thứ tự như trên, trong quá trình cài đặt phpmyadmin, tôi đã gặp lỗi tương tự:
ERROR 2002 [HY000]: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' [2]
Vì vậy, tôi đã thử một lần nữa để gỡ cài đặt/cài đặt lại. Lần này, sau khi tôi gỡ cài đặt các gói, tôi cũng đã đổi tên thủ công tất cả các tệp và thư mục MySQL thành
root@jj-SFF-PC:/usr/bin# mysqld_safe --skip-grant-tables
120816 11:40:53 mysqld_safe Logging to syslog.
120816 11:40:53 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
7 ở các vị trí tương ứng của chúng./var/lib/mysql
/var/lib/mysql/mysql
/var/log/mysql
/usr/lib/perl5/DBD/mysql
/usr/lib/perl5/auto/DBD/mysql
/usr/lib/mysql
/usr/bin/mysql
/usr/share/mysql
/usr/share/dbconfig-common/internal/mysql
/etc/init.d/mysql
/etc/apparmor.d/abstractions/mysql
/etc/mysql
Sau đó, tôi đã cố gắng cài đặt lại
root@jj-SFF-PC:/usr/bin# mysqld_safe --skip-grant-tables
120816 11:40:53 mysqld_safe Logging to syslog.
120816 11:40:53 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
8 và root@jj-SFF-PC:/usr/bin# mysqld_safe --skip-grant-tables
120816 11:40:53 mysqld_safe Logging to syslog.
120816 11:40:53 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
9 một lần nữa. Nhưng tôi đã nhận thấy rằng nó không nhắc tôi về mật khẩu. Nó không được yêu cầu mật khẩu quản trị viên? Bạn có thể cần kiểm tra xem: a] mysql đang chạy b] ổ cắm được bật c] vị trí ổ cắm mặc định có khả dụng không
Vì vậy, đây là cách bạn sẽ đi về nó: a] Kiểm tra MySQL đang chạy
root@jj-SFF-PC:/usr/bin# mysqld_safe --skip-grant-tables
120816 11:40:53 mysqld_safe Logging to syslog.
120816 11:40:53 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
0Nếu số đếm trở lại 0 thì MySQL không chạy. Kiểm tra này cũng sẽ bị bắt nếu MySQL đã được bắt đầu với Safe_MysQLD.
Nếu bạn không nghĩ rằng nó đang chạy thì bạn có thể phát hành tập lệnh khởi động tiêu chuẩn.
root@jj-SFF-PC:/usr/bin# mysqld_safe --skip-grant-tables
120816 11:40:53 mysqld_safe Logging to syslog.
120816 11:40:53 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
1Nếu bạn kiểm tra lại và câu trả lời là 0 thì MySQL vì một số lý do không bắt đầu và bạn có vấn đề lớn hơn. Một nơi tốt để bắt đầu là kích hoạt MySQLD từ dòng lệnh bằng cách sử dụng cuộc gọi nhị phân xương trần, nếu có gì đó không ổn, nó nên được đẩy ra lỗi tiêu chuẩn trên bảng điều khiển.
b] Nếu máy chủ đang chạy, bạn có thể kiểm tra xem nó có bật ổ cắm bằng cách kiểm tra tệp cấu hình My.cnf hay bằng cách sử dụng NetStat
root@jj-SFF-PC:/usr/bin# mysqld_safe --skip-grant-tables
120816 11:40:53 mysqld_safe Logging to syslog.
120816 11:40:53 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
2Điều này sẽ cho bạn biết nếu ổ cắm có sẵn -> chúng có thể ở trạng thái được kết nối hoặc nghe. Nếu không có ổ cắm nghe có sẵn thì có thể máy chủ của bạn quá bận rộn để nói chuyện với bạn. Nhưng nói chung nếu máy chủ đang chạy, ít nhất bạn nên có một ổ cắm nghe.
c] Bạn nên kiểm tra tệp My.cnf của mình để xem vị trí ổ cắm ở đâu - trong trường hợp nó không khớp với mặc định; Và liệu nó không được bình luận.
root@jj-SFF-PC:/usr/bin# mysqld_safe --skip-grant-tables
120816 11:40:53 mysqld_safe Logging to syslog.
120816 11:40:53 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
3hoặc
root@jj-SFF-PC:/usr/bin# mysqld_safe --skip-grant-tables
120816 11:40:53 mysqld_safe Logging to syslog.
120816 11:40:53 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
4