Không thể sinh ra quy trình chính của mysql: không thể thực thi: Không có tệp hoặc thư mục như vậy


56

Tôi là một người mới trên nền tảng MySQL vì vậy hãy đồng ý với tôi.

Tôi vừa hoàn thành nâng cấp 11.10 lên 12.04.

Mọi thứ dường như hoạt động mà không có bất kỳ trục trặc nào và tất cả phần mềm và cài đặt của tôi đều hoạt động tốt. Ngoài MySQL.

Khi tôi cố gắng:

sudo start mysql

Tôi nhận được một lỗi:

start: Job failed to start

Tôi có thể chẩn đoán vấn đề ở đâu? Và (hy vọng) - làm thế nào để sắp xếp nó?

(Tôi đã tắt tự động bắt đầu làm theo lời khuyên ở đây nếu điều đó quan trọng)


Cập nhật 1:

Cả hai kết quả đầu ra của:

cat /var/log/mysql.err 
cat /var/log/mysql.log

rỗng.

Đầu ra của dmesg | grep mysql:

[ 1401.785141] type=1400 audit(1335619832.181:25): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/mysqld" pid=16165 comm="apparmor_parser"
[ 1401.791089] init: Failed to spawn mysql main process: unable to execute: No such file or directory

Cập nhật 2:

Như được chỉ ra bởi AWinter bên dưới - có vẻ như MySQL đã biến mất tự động sau khi nâng cấp và phải được cài đặt lại.

Câu trả lời:


48

Kiểm tra xem gói mysql-server-5.1 đã được gỡ cài đặt, có vẻ như nó có thể tồn tại sau khi nâng cấp. Tôi đã có cùng một lỗi và phải thanh lọc máy chủ MySQL 5.1 và 5.5 sau đó cài đặt lại.

Trước tiên, hãy tạo một bản sao lưu của thư mục / var / lib / mysql / của bạn để đảm bảo an toàn.

sudo cp -R /var/lib/mysql/ ~/mysql

Tiếp theo thanh lọc MySQL (điều này sẽ loại bỏ php5-mysql và phpmyadmin cũng như một số thư viện khác vì vậy hãy chuẩn bị để cài đặt lại một số mục sau này.

sudo apt-get purge mysql-server-5.1 mysql-common

Xóa thư mục / etc / mysql / và nội dung của nó

sudo rm /etc/mysql/ -R

Tiếp theo kiểm tra xem các tệp cơ sở dữ liệu cũ của bạn có còn trong / var / lib / mysql / nếu không, sau đó sao chép chúng vào thư mục sau đó chown root: root

(chỉ chạy những thứ này nếu các tập tin không còn ở đó nữa)

sudo mkdir /var/lib/mysql/
sudo chown root:root /var/lib/mysql/ -R
sudo cd ~/mysql/
sudo cp * /var/lib/mysql/ -R

Tiếp theo cài đặt máy chủ mysql

sudo apt-get install mysql-server

Cuối cùng cài đặt lại bất kỳ gói bị thiếu nào như phpmyadmin và php5-mysql.


1
Xuất sắc. Làm việc như một cơ duyên. Tất cả hoạt động trở lại. Một lưu ý: Tôi không phải xóa thư mục này sudo rm /etc/mysql/ -R- đơn giản là nó không có trong trường hợp của tôi. Dù sao - may mắn thay, nó chỉ là một bản cài đặt cục bộ để kiểm tra Wordpress .. Tự hỏi điều gì sẽ xảy ra trên một máy chủ thực sự o_O
radek

apt-get - cài đặt cài đặt mysql-server-xx đã thực hiện công việc cho tôi.
Yashima

Điều này làm việc cho tôi, nhưng tôi có lẽ nên thực hiện apt-get updatetrước, bởi vì nó đã loại bỏ dovecot và php5-mysql. Tôi chỉ có thể cài đặt lại những thứ này sau khi cập nhật. Khi tôi đã làm xong, mọi thứ lại hoạt động tốt.
AntonChanning

Tôi nhận -bash: cd: /var/lib/mysql/: Permission deniedvà sử dụng sudo -ithậm chí không hoạt động.
Charlotte

@LittleBigBot Tôi đã thực hiện một thay đổi cần khắc phục điều đó.
AWinter

15
sudo dpkg-reconfigure mysql-server-5.5

Không phải là một câu trả lời rất thân thiện, nhưng nó có hiệu quả với tôi :-)
Joseph

1
Không làm việc cho tôi: [
ThomasReggi

12

Tôi cũng gặp vấn đề tương tự và đối với tôi, đó là các logfile InnoDB có kích thước khác với mong đợi của mysql và đã âm thầm thất bại trong quá trình nâng cấp.

Tôi đã có một tệp cấu hình tùy chỉnh đã bị xóa khi nâng cấp lên 12.04, đặt kích thước tệp nhật ký thành một cái gì đó khác với cấu hình mặc định.

Bạn phải xóa các tệp: / var / lib / mysql / ib_logfile *

Sau khi các tệp không còn nữa, giờ đây mysql có thể bắt đầu và tạo các tệp nhật ký mới có kích thước mặc định.


Chơi lô tô. Trong trường hợp của chúng tôi, một nhà phát triển đã thay đổi một số cài đặt cấu hình cho innodb (và cả anh ấy và tôi đều không biết rằng điều đó có thể gây ra sự cố). Điều này ngăn cản mysql bắt đầu. Xóa các tập tin cấu hình cho phép MySQL bắt đầu.
gaoshan88

Bingo - đã thay đổi cài đặt cấu hình cho innodb_log_file_size.
chỉnh2

9

Hầu hết các lỗi sẽ hiển thị bằng cách khởi động máy chủ ở chế độ không phải daemon dài dòng và xem đầu ra:

sudo mysqld --verbose

7

Tôi đã có cùng một vấn đề, nhưng không có câu trả lời nào ở trên giúp tôi. Vì vậy, như một hy vọng cuối cùng, tôi đã cố gắng giải phóng một số dung lượng đĩa. Tôi chỉ cần xóa các tệp nhật ký không cần thiết khỏi / var / log để giải phóng không gian 2.5G. Sau đó, MySQL bắt đầu bình thường.


Đúng, đây cũng là vấn đề của tôi. mysql đã không bắt đầu trong quá trình khởi động, như đã từng. Sau đó là thông tin hệ thống hiển thị đến thiết bị đầu cuối; "Sử dụng /: 95,1%" Vì vậy, không có đủ không gian trống để mysql (và các quy trình khác) bắt đầu. Tôi cần phải làm một số dọn dẹp tập tin, và mysql bắt đầu mà không có vấn đề gì.
Màn chiếu

Đây là trường hợp của tôi. Dọn dẹp đĩa và Mysql bắt đầu làm việc.
Sergei Romanov

5

Điều này đôi khi xảy ra và mặc dù có một vài vấn đề khác nhau có thể khiến mysql không khởi động, tôi sẽ viết ở đây một số vấn đề phổ biến nhất mà tôi biết:

LƯU Ý - Vì giải thích hầu hết các sự cố phổ biến, tôi giả sử rằng bạn đã thử gỡ bỏ và cài đặt, hoặc chỉ đơn giản là cài đặt lại dịch vụ mysql như vậy:

Để cài đặt - sudo apt-get install mysql-server mysql-client
Để xóa - sudo apt-get remove mysql-server mysql-client
Để xóa (Xóa tệp + Cấu hình) - sudo apt-get purge mysql-server mysql-client
Để cài đặt lại -sudo apt-get install --reinstall mysql-server mysql-client

  1. my.cnftập tin không có trong thư mục mặc định Nó phải được (Theo mặc định) được đặt ở một trong hai /etc/my.cnfhoặc /etc/mysql/my.cnf.

  2. Không đủ dung lượng trong ổ cứng nơi chứa các tệp dữ liệu mysql. Nếu cơ sở dữ liệu quá lớn và chiếm 100% ổ cứng, dịch vụ sẽ thất bại.

  3. Sau khi nâng cấp kiểm tra xem my.cnftập tin có ở đúng vị trí không. Tùy thuộc vào cách bạn nâng cấp hoặc từ phiên bản bạn đã nâng cấp, nó có thể ở trong /etc/my.cnfhoặc /etc/mysql/my.cnfnhư đã đề cập trước đó. Cũng nên nhớ rằng tập tin cũng có thể được đặt tên mysql.confvà không chỉ my.cnf. Điều này xảy ra trong trường hợp bạn đã tải xuống tệp nhị phân từ mysql.com .

  4. Làm một dmesgđể xem những gì dịch vụ mysql đang ném như là một thông báo lỗi giúp vì nó đưa ra lỗi tải. Nó cũng có thể nói tại sao điều này xảy ra. Nếu bạn gõ dmesgmột mình trong thiết bị đầu cuối, nó sẽ cho bạn thấy thế giới. Những gì chúng tôi muốn là thông tin về mysql vì vậy hãy làm một cái gì đó như thế này: dmesg | grep mysqlđiều này sẽ ném cho bạn bất kỳ dòng nào có chứa mysql trong đó.

  5. Kiểm tra xem my.cnfhoặc mysql.conftập tin là chính xác. Trong 12.04 MySQL là phiên bản 5.5, trong 11.10 là phiên bản 5.1. Nó có thể có một số thay đổi trong tệp conf (thực tế không kiểm tra điều đó) và nó có vẻ ngớ ngẩn nhưng nó chắc chắn có thể mang đến cho bạn một số rắc rối.

  6. Các lỗi liên quan đến các vấn đề về ổ cắm thông thường là lỗi của my.cnfhoặc mysql.conftệp trỏ đến sai vị trí, lỗi thường sẽ hiển thị là:

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

    Nguồn khác của vấn đề này liên quan đến mysqltệp ở /etc/init.dchỗ nó đang trỏ vào thư mục sai vì nó có thể đang sử dụng một tập lệnh cũ hơn tập lệnh cần thiết cho mysql thực tế trên hệ thống (Nó có thể không được cập nhật chính xác, không ghi đè tập tin cấu hình, vv ..). Vì vậy, chỉ cần chỉnh sửa bất kỳ hai tệp này và xem nếu chúng đang chỉ ở một nơi khác và sau đó chỉ cần làm một sudo service mysql restartđể kiểm tra nếu nó hoạt động.

  7. Để có cái nhìn rõ hơn về các đầu ra cụ thể lỗi của mysql, hãy làm như sau:

    cat /var/log/mysql.err- Sẽ cho bạn thấy các lỗi mysql. Tôi sẽ làm nó như thế này cat /var/log/mysql.err | lessnếu bạn tình cờ thấy quá nhiều thông tin bay qua vì lesssẽ giúp bạn di chuyển qua đầu ra cat.

    Điều tương tự cũng xảy ra cat /var/log/mysql.lognếu bạn thấy lỗi ở đó có thể đặt nó vào câu hỏi hoặc như một nhận xét sẽ giúp trả lời điều này nhanh hơn.

  8. Nếu bạn đang gặp vấn đề về kết nối và dịch vụ mà nó thực sự đang chạy, hãy thử xem Tường lửa của máy chủ có cho phép kết nối qua cổng 3306 (Kết nối đến). Sau đó kiểm tra xem bộ định tuyến (Nếu có) không bị chặn cổng 3306. Về cơ bản hãy thực hiện kiểm tra mạng để xem vấn đề liên quan đến cổng được gán cho mysql bắt nguồn từ đâu.

Nếu tất cả đều tốt, để kiểm tra xem dịch vụ mysql có đang chạy không service mysql status

Như một phương sách cuối cùng. Nếu bạn tình cờ đang chạy mysql nhưng bạn không thể đăng nhập, hãy thử các cách sau:

  1. Dừng máy chủ MySQL:

    sudo /etc/init.d/mysql stop hoặc là sudo service mysql stop

  2. Bắt đầu mysqlddịch vụ bằng tay với cấu hình thủ công

    sudo mysqld --skip-grant-tables &

    (Hãy nhớ thêm & khác, bạn sẽ phải mở một thiết bị đầu cuối khác. & Gửi quá trình xuống nền và bạn có thể giết bằng cách sử dụng cùng một thiết bị đầu cuối).

  3. Đăng nhập vào cơ sở dữ liệu mysql dưới dạng ROOT

    mysql -u root mysql

  4. Nhập nội dung sau thay thế MyPASSWORD bằng mật khẩu mới của bạn

    UPDATE user SET Password=PASSWORD('MyPASSWORD') WHERE User='root';
    FLUSH PRIVILEGES;
    EXIT;

Điều này sẽ đủ để đăng nhập vào dịch vụ Mysql của bạn với quyền root. Hy vọng nó giúp.


Cảm ơn đã phản hồi nhanh chóng. tập tin my.cnf là trong /etc/mysql/my.cnftrường hợp của tôi. Đó có phải là vị trí chính xác? dmesgmang lại cho tôi vô số đầu ra vượt quá tầm hiểu biết của tôi: / Tôi thực sự đã cài đặt 5.1 - điều đó có gây hậu quả gì không?
radek

1
Đừng lo lắng về vị trí nếu bạn tìm thấy tập tin. Hãy để tôi cập nhật câu trả lời để cung cấp cái nhìn rõ hơn về đầu ra mysql trong dmesg.
Luis Alvarado

4

Tôi gặp vấn đề tương tự sau khi nâng cấp lên Ubuntu Server 12.04 LTS, đang chạy

sudo apt-get install mysql-server 

là đủ để sửa nó, mặc dù nó phàn nàn về một cơ sở dữ liệu cũ của spotweb. Tôi đã sửa lỗi đó bằng cách xóa spotweb:

sudo apt-get purge spotweb

và cấu hình lại mysql:

sudo dpkg-reconfigure mysql-server-5.5

4

Tôi sẽ thêm điều này khi ai đó phải đối mặt với các vấn đề tương tự. Tôi đã thử tất cả việc gỡ cài đặt và cài đặt lại nhưng không có kết quả. Chìa khóa để tìm giải pháp là việc bắt đầu đặt các bản ghi lỗi trong thư mục này

/ var / log / mới bắt đầu /

cho mysql

/var/log/upstart/mysql.log

Khi tôi mở nó có tin nhắn này

Lỗi trình phân tích cú pháp AppArmor cho /etc/apparmor.d/usr.sbin.mysqld trong /etc/apparmor.d/tunables/global ở dòng 15: Không thể mở 'tunables / home'

Khi tôi tìm trong thư mục /etc/apparmor.d/tunables/, tôi đã thiếu tệp home trong đó vì vậy tôi đã tạo một

gedit /etc/apparmor.d/tunables/home và sao chép nội dung từ một máy tính khác có những dòng không nhận xét này

@ {HOME} = @ {HOMEDIRS} / * / / root /

@ {HOMEDIRS} = / nhà /

ai đó phải đối mặt với một vấn đề tương tự ở đây

https://bugs.launchpad.net/ubfox/+source/mysql-5.5/+orms/982303

sau đó tôi có thể khởi động lại dịch vụ


2

Trong trường hợp của tôi, nó dễ dàng hơn một số câu trả lời ở đây. Tôi đã tìm thấy lỗi liên quan trên launchpad và cách khắc phục đã được đề cập ở đó trong bình luận 9:

sudo touch /etc/apparmor.d/local/usr.sbin.mysqld
sudo service apparmor restart

1

Sau khi nâng cấp, tôi thấy rằng mysql-server / mysql-server-5.5 chưa được cài đặt và 5.1. Tôi đã đổi tên my.cnf thành my.cnf_old và tôi đã cố gắng cài đặt mysql-serven. Trong quá trình cài đặt, có một thông báo lỗi rằng mật khẩu gốc không thể được đặt. Sau này, tôi đã kiểm tra cấu hình của mình, apparmor và vân vân. Tất cả dường như đều ổn. Nỗ lực tiếp theo của tôi là cấu hình lại máy chủ mysql nhưng nó phàn nàn rằng gói không được cài đặt hoàn toàn. Vì vậy, tôi quyết định gỡ cài đặt và trong quá trình apt-get này đã sửa lỗi gói và bây giờ nó đang hoạt động. Tôi không biết tại sao bởi vì tôi không thay đổi gì cả.


1

Tôi đã có vấn đề tương tự, nhưng đã nhanh chóng được theo dõi đến apparmor, mà tôi nhớ đã đưa cho tôi vấn đề này trước đây.

Nếu bạn thay đổi các cài đặt này và hệ thống của bạn sử dụng apparmor, bạn cũng có thể cần điều chỉnh /etc/apparmor.d/usr.sbin.mysqld. Ví dụ. những dòng này đã được thêm vào (để cho phép một liên kết tượng trưng đến my.cnf và cho phép đọc tệp symlinked, có lẽ):

/ usr / sbin / mysqld {... /etc/mysql/*.cnf lr, /path/to/symlinked/my.cnf r, ...}


1

Trong trường hợp của tôi, tôi đã cố gắng cài đặt MySQL trên bản cài đặt Ubuntu 12.04 mới, nhưng tôi không hiểu tại sao nó lại gây ra lỗi cho tôi khi đặt mật khẩu cho người dùng 'root'. Tôi đã thử tất cả các giải pháp trên, nhưng không có gì để làm.

Sau đó, tôi quyết định thanh lọc / xóa tất cả mọi thứ, tôi gỡ cài đặt máy chủ MySQL và xóa tất cả các thư mục của nó (/ etc / mysql / và / var / lib / mysql /), cuối cùng nhờ một loại ngẫu nhiên mà nó không gây ra lỗi nào trong quá trình cài đặt lại và tôi đã có thể đặt mật khẩu và khởi động máy chủ.


0

Trong thiết bị đầu cuối, bạn có thể cài đặt lại và làm cho nó chạy my.cnf, bạn có thể gõ:

sudo apt-get install mysql-server-5.1
sudo apt-get --reconfigure mysql-server-5.1
sudo apt-get update
sudo start mysql my.cnf

nó có thể hoạt động theo cách này


0

Tôi gặp rắc rối rằng việc thêm performance_schemadưới [mysqld]trong /etc/mysql/my.confnhững nguyên nhân thất bại này. Đã xóa dòng đó và mysql đã có thể bắt đầu lại.

Chỉnh sửa: Hóa ra Một gig ram là không đủ để bắt đầu mysqld với hiệu suất Performance_schema được kích hoạt. Tôi đã va vào 3 hợp đồng biểu diễn và nó hoạt động tốt.

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.