"Gagal menelurkan proses utama mysql: tidak dapat mengeksekusi: Tidak ada file atau direktori seperti itu"

56

Saya seorang pemula di tanah MySQL jadi bersabarlah.

Saya baru saja selesai memutakhirkan 11,10 ke 12,04.

Segalanya tampak bekerja tanpa cegukan dan semua peranti lunak dan pengaturan saya berfungsi dengan baik. Terlepas dari MySQL.

Ketika saya mencoba:

sudo start mysql

Saya menerima kesalahan:

start: Job failed to start

Di mana saya bisa mendiagnosis apa masalahnya? Dan (mudah-mudahan) - bagaimana cara mengatasinya?

(Saya menonaktifkan otomatis mulai mengikuti saran di sini jika itu penting)


Pembaruan 1:

Kedua output dari:

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

kosong

Output dari 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

Pembaruan 2:

Seperti ditunjukkan oleh AWinter di bawah ini - sepertinya MySQL menghilang secara otomatis setelah peningkatan dan harus diinstal ulang.

Radek
sumber

Jawaban:

48

Periksa apakah paket mysql-server-5.1 telah dihapus, sepertinya masih ada setelah upgrade. Saya memiliki kesalahan yang sama dan harus membersihkan server MySQL 5.1 dan 5.5 kemudian menginstal ulang.

Pertama buat cadangan direktori / var / lib / mysql / Anda agar aman.

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

Selanjutnya bersihkan MySQL (ini akan menghapus php5-mysql dan phpmyadmin serta sejumlah perpustakaan lain jadi bersiaplah untuk menginstal ulang beberapa item setelah ini.

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

Hapus folder / etc / mysql / dan isinya

sudo rm /etc/mysql/ -R

Selanjutnya periksa apakah file database lama Anda masih di / var / lib / mysql / jika tidak maka salin kembali ke folder kemudian chown root: root

(hanya jalankan ini jika file tidak ada lagi)

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

Selanjutnya instal server mysql

sudo apt-get install mysql-server

Terakhir instal ulang paket yang hilang seperti phpmyadmin dan php5-mysql.

AWinter
sumber
1
Luar biasa. Bekerja sebagai pesona. Semua bekerja kembali. Satu catatan: Saya tidak harus menghapus direktori ini sudo rm /etc/mysql/ -R- itu sama sekali tidak ada dalam kasus saya. Pokoknya - untungnya itu hanya instalasi lokal untuk menguji Wordpress .. Bertanya-tanya apa yang akan terjadi pada server nyata o_O
radek
apt-get - install ulang mysql-server-xx melakukan pekerjaan untuk saya.
Yashima
Ini bekerja untuk saya, tetapi saya mungkin harus melakukan apt-get updatesebelumnya, karena itu menghapus dovecot dan php5-mysql. Saya hanya dapat menginstal ulang ini setelah pembaruan. Setelah saya selesai, semuanya kembali berfungsi dengan baik.
AntonChanning
Saya mendapatkan -bash: cd: /var/lib/mysql/: Permission denieddan menggunakan sudo -ibahkan tidak bekerja.
Charlotte
@LittleBigBot Saya membuat perubahan yang harus memperbaikinya.
AWinter
15
sudo dpkg-reconfigure mysql-server-5.5
Kevin C. Smith
sumber
Bukan jawaban yang sangat ramah, tetapi berhasil untuk saya :-)
Joseph
1
Tidak bekerja untuk saya: [
ThomasReggi
12

Saya memiliki masalah yang sama dan bagi saya itu adalah file log InnoDB adalah ukuran yang berbeda dari yang diharapkan mysql, dan gagal diam-diam selama upgrade.

Saya punya file konfigurasi khusus yang dihapus pada upgrade ke 12,04 yang mengatur ukuran file log untuk sesuatu selain dari apa konfigurasi default.

Anda harus menghapus file: / var / lib / mysql / ib_logfile *

Setelah file hilang, mysql sekarang dapat memulai dan membuat file log baru dengan ukuran default.

Corey Aufang
sumber
Bingo. Dalam kasus kami seorang dev telah mengubah beberapa pengaturan konfigurasi untuk innodb (dan baik dia maupun saya tidak tahu bahwa itu dapat menyebabkan masalah). Ini mencegah mysql dari memulai. Menghapus file konfigurasi tersebut memungkinkan MySQL untuk memulai.
gaoshan88
Bingo - mengubah pengaturan konfigurasi untuk innodb_log_file_size.
tweak2
9

Sebagian besar kesalahan akan muncul dengan memulai server dalam mode non-daemon verbose dan menonton hasilnya:

sudo mysqld --verbose
Ian Mackinnon
sumber
7

Saya memiliki masalah yang sama, tetapi tidak ada jawaban di atas yang membantu saya. Jadi sebagai harapan terakhir saya mencoba untuk membebaskan beberapa ruang disk. Saya cukup menghapus file log yang tidak perlu dari / var / log yang membebaskan beberapa ruang 2.5G. Kemudian MySQL mulai normal.

Mata
sumber
Yap, ini juga masalah saya. mysql tidak dimulai saat bootup, seperti sebelumnya. Kemudian adalah info Sistem yang merender ke terminal; "Penggunaan /: 95,1%" Jadi, tidak ada ruang kosong yang cukup untuk memulai mysql (dan proses lainnya). Saya perlu melakukan beberapa pembersihan file, dan mysql mulai tanpa masalah.
Screenack
Ini adalah kasus saya. Pembersihan disk dan Mysql mulai bekerja.
Sergey Romanov
5

Ini kadang-kadang terjadi dan meskipun ada beberapa masalah berbeda yang bisa membuat mysql tidak mulai, saya akan menulis di sini beberapa yang paling umum yang saya ketahui:

CATATAN - Karena menjelaskan masalah yang paling umum, saya berasumsi bahwa Anda telah mencoba menghapus dan menginstal, atau hanya menginstal ulang layanan mysql seperti:

Untuk Menginstal - sudo apt-get install mysql-server mysql-client
Untuk Menghapus - sudo apt-get remove mysql-server mysql-client
Untuk Membersihkan (Menghapus file + Konfigurasi) - sudo apt-get purge mysql-server mysql-client
Untuk Menginstal Ulang -sudo apt-get install --reinstall mysql-server mysql-client

  1. my.cnffile tidak ada dalam direktori default. Seharusnya (Secara default) berada di salah satu /etc/my.cnfatau /etc/mysql/my.cnf.

  2. Tidak cukup ruang di hard drive tempat file data mysql berada. Jika Databas menjadi terlalu besar dan mengambil 100% dari hard drive, layanan akan gagal.

  3. Setelah pemutakhiran periksa apakah my.cnffile berada di tempat yang benar. Bergantung pada bagaimana Anda meningkatkan atau dari versi apa Anda meningkatkan, itu bisa dalam /etc/my.cnfatau /etc/mysql/my.cnfseperti yang disebutkan sebelumnya. Juga ingat bahwa file tersebut juga dapat dinamai mysql.confdan bukan hanya my.cnf. Ini terjadi dalam kasus di mana Anda telah mengunduh biner dari mysql.com .

  4. Melakukan dmesguntuk melihat apa layanan mysql melempar sebagai pesan kesalahan membantu karena memberikan kesalahan memuat. Bisa juga dikatakan mengapa ini terjadi. Jika Anda mengetik dmesgsendirian di terminal itu akan menunjukkan kepada Anda dunia. Yang kami inginkan adalah info tentang mysql jadi lakukan sesuatu seperti ini: dmesg | grep mysqlini akan memberi Anda setiap baris yang mengandung mysql di dalamnya.

  5. Periksa my.cnfatau mysql.conffile yang benar. Dalam 12,04 MySQL adalah versi 5.5, di 11.10 itu adalah versi 5.1. Mungkin ada beberapa perubahan pada file conf (Belum benar-benar memeriksanya) dan mungkin terdengar konyol tapi itu pasti dapat memberi Anda beberapa masalah.

  6. Kesalahan yang terkait dengan masalah soket biasanya adalah kesalahan my.cnfatau mysql.conffile menunjuk ke tempat yang salah, kesalahan mereka biasanya akan ditampilkan sebagai:

    Tidak dapat terhubung ke server MySQL lokal melalui soket '/var/run/mysqld/mysqld.sock'

    Sumber lain dari masalah ini terkait dengan mysqlfile /etc/init.dyang menunjuk pada folder yang salah karena mungkin menggunakan skrip yang lebih lama dari yang diperlukan untuk mysql aktual pada sistem (Mungkin tidak diperbarui dengan benar, tidak menimpa file konfigurasi, dll.). Jadi cukup edit salah satu dari dua file ini dan lihat apakah mereka menunjuk ke tempat lain dan kemudian lakukan a sudo service mysql restartuntuk memeriksa apakah itu berfungsi.

  7. Untuk melihat lebih baik pada output spesifik kesalahan mysql lakukan hal berikut:

    cat /var/log/mysql.err- Akan menampilkan kesalahan mysql. Saya akan membuatnya seperti ini cat /var/log/mysql.err | lessjika Anda kebetulan melihat terlalu banyak informasi terbang karena lessakan membantu Anda menggulir jalan Anda melalui output cat.

    Sama berlaku untuk cat /var/log/mysql.logJika Anda melihat kesalahan di sana mungkin memasukkannya ke dalam pertanyaan atau sebagai komentar akan membantu menjawab ini lebih cepat.

  8. Jika Anda menderita masalah koneksi dan layanan yang sebenarnya sedang berjalan, cobalah untuk melihat apakah Firewall server memperbolehkan koneksi melalui port 3306 (Koneksi masuk). Setelah itu periksa apakah router (Jika berlaku) belum memblokir port 3306. Pada dasarnya lakukan tes jaringan untuk melihat dari mana masalah yang terkait dengan port yang ditugaskan ke mysql berasal.

Jika semuanya baik, untuk menguji apakah layanan mysql sedang berjalan ketik service mysql status

Sebagai pilihan terakhir. Jika Anda menjalankan mysql tetapi Anda tidak bisa masuk, coba yang berikut ini:

  1. Hentikan Server MySQL:

    sudo /etc/init.d/mysql stop atau sudo service mysql stop

  2. Mulai mysqldlayanan secara manual dengan konfigurasi manual

    sudo mysqld --skip-grant-tables &

    (Ingatlah untuk menambahkan & lain Anda harus membuka terminal lain. & & Mengirim proses ke latar belakang dan Anda dapat membunuh menggunakan terminal yang sama).

  3. Login ke database mysql sebagai ROOT

    mysql -u root mysql

  4. Ketik yang berikut menggantikan MyPASSWORD dengan kata sandi baru Anda

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

Ini harus cukup untuk login ke layanan Mysql Anda sebagai root lagi. Semoga ini bisa membantu.

Luis Alvarado
sumber
Terima kasih atas umpan balik yang cepat. File my.cnf ada di /etc/mysql/my.cnfdalam kasus saya. Apakah itu lokasi yang benar? dmesgmemberi saya pleeenty output yang di luar pemahaman saya: / Saya memang telah menginstal 5.1 - apakah itu memiliki konsekuensi?
radek
1
Jangan khawatir tentang lokasi jika Anda menemukan file. Biarkan saya memperbarui jawabannya untuk memberikan tampilan yang lebih baik pada output mysql di dmesg.
Luis Alvarado
4

Saya memiliki masalah yang sama setelah memutakhirkan ke Ubuntu Server 12.04 LTS, berjalan

sudo apt-get install mysql-server 

sudah cukup untuk memperbaikinya, meskipun mengeluhkan tentang database lama dari situs web. Saya memperbaikinya dengan menghapus spotweb:

sudo apt-get purge spotweb

dan mengkonfigurasi ulang mysql:

sudo dpkg-reconfigure mysql-server-5.5
RedPixel
sumber
4

Saya akan menambahkan ini jika seseorang menghadapi masalah serupa. Saya mencoba semua uninstall dan menginstal ulang tetapi tidak berhasil. Kunci untuk menemukan solusi adalah bahwa pemula menempatkan log kesalahan dalam folder ini

/ var / log / pemula /

untuk mysql

/var/log/upstart/mysql.log

ketika saya membuka itu ada pesan ini

Kesalahan parser AppArmor untuk /etc/apparmor.d/usr.sbin.mysqld di /etc/apparmor.d/tunables/global di baris 15: Tidak dapat membuka 'tunables / home'

Ketika saya melihat di folder /etc/apparmor.d/tunables/ saya tidak memiliki file home di dalamnya sehingga saya membuat satu

gedit /etc/apparmor.d/tunables/home dan menyalin konten dari komputer lain yang memiliki baris yang tidak dikomentari ini

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

@ {HOMEDIRS} = / home /

seseorang menghadapi masalah serupa di sini

https://bugs.launchpad.net/ubuntu/+source/mysql-5.5/+bug/982303

kemudian setelah itu saya bisa me-restart layanan

pt123
sumber
2

Dalam kasus saya, ini jauh lebih mudah daripada beberapa jawaban di sini. Saya menemukan bug terkait di launchpad dan perbaikannya seperti yang disebutkan di komentar 9:

sudo touch /etc/apparmor.d/local/usr.sbin.mysqld
sudo service apparmor restart
Manfred Moser
sumber
1

Setelah upgrade saya menemukan bahwa mysql-server / mysql-server-5.5 tidak diinstal dan juga 5.1. Saya mengganti nama my.cnf ke my.cnf_old dan saya mencoba menginstal mysql-serven. Selama instalasi ada pesan kesalahan bahwa kata sandi root tidak dapat diatur. Setelah ini, saya memeriksa konfigurasi, apparmor, dan sebagainya. Semua tampak baik-baik saja. Upaya saya berikutnya adalah mengkonfigurasi ulang mysql-server tetapi mengeluh bahwa paket tersebut tidak diinstal sepenuhnya. Jadi saya memutuskan untuk menghapus dan selama ini paket apt-get diperbaiki dan sekarang berfungsi. Saya tidak tahu mengapa karena saya tidak mengubah apa pun.

pengguna54914
sumber
1

Saya memiliki masalah yang sama, tetapi dengan cepat dilacak ke aparatur, yang saya ingat telah memberi saya masalah ini sebelumnya.

Jika Anda melakukan perubahan pada pengaturan ini dan sistem Anda menggunakan apparmor, Anda mungkin juga perlu menyesuaikan /etc/apparmor.d/usr.sbin.mysqld. Misalnya. baris-baris ini ditambahkan (untuk memungkinkan symlink ke my.cnf, dan untuk memungkinkan file symlink untuk dibaca, mungkin):

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

Simon Nuttall
sumber
1

Dalam kasus saya, saya mencoba menginstal MySQL pada instalasi baru Ubuntu 12.04, tetapi saya tidak mengerti mengapa itu memberi saya kesalahan dalam pengaturan kata sandi untuk pengguna 'root'. Saya mencoba semua solusi di atas, tetapi tidak ada hubungannya.

Kemudian saya memutuskan untuk membersihkan / menghapus semuanya, saya uninstall server MySQL dan menghapus semua foldernya (/ etc / mysql / dan / var / lib / mysql /), akhirnya berkat semacam keacakan itu tidak memberikan kesalahan selama instal ulang dan saya dapat mengatur kata sandi dan memulai contoh server.

Alexian
sumber
0

Di terminal Anda dapat menginstalnya lagi, dan membuatnya dijalankan my.cnf Anda dapat mengetik:

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

mungkin bekerja seperti ini.

Michael
sumber
0

Saya mengalami masalah bahwa menambahkan di performance_schemabawah menyebabkan kegagalan ini. Menghapus baris itu dan mysql dapat memulai lagi.[mysqld]/etc/mysql/my.conf

Sunting: Ternyata Satu pertunjukan ram tidak cukup untuk memulai mysqld dengan performance_schema diaktifkan. Saya bertemu 3 pertunjukan dan itu bekerja dengan baik.

ThorSummoner
sumber