it-swarm.dev

"Nepodařilo se vytvořit hlavní proces mysql: nelze provést: Žádný takový soubor nebo adresář"

Jsem nováček na MySQL zemi, takže mějte se mnou.

Právě jsem dokončil upgrade 11.10 na 12.04.

Zdálo se, že všechno funguje bez škytavek a veškerý můj software a nastavení fungují dobře. Kromě MySQL.

Když se pokusím:

Sudo start mysql

Zobrazuje se mi chyba:

start: Job failed to start

Kde lze případně diagnostikovat, v čem je problém? A (doufejme) - jak to vyřešit?

(Zakázal jsem automatický start podle doporučení zde , pokud je to důležité)


Aktualizace 1:

Oba výstupy:

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

jsou prázdné.

Výstup 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

Aktualizace 2:

Jak ukazuje AWinter níže - zdálo se, že MySQL po aktualizaci automaticky zmizel a musel být znovu nainstalován.

56
radek

Zkontrolujte, zda byl balíček mysql-server-5.1 odinstalován, zdá se, že po aktualizaci může přetrvávat. Měl jsem stejnou chybu a musel jsem vyčistit server MySQL 5.1 a 5.5 a znovu nainstalovat.

Nejprve si vytvořte zálohu adresáře/var/lib/mysql /, abyste byli v bezpečí.

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

Další očistit MySQL (odstraní php5-mysql a phpmyadmin, stejně jako řadu dalších knihoven, takže buďte připraveni znovu nainstalovat některé položky poté).

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

Odstraňte složku/etc/mysql/a její obsah

Sudo rm /etc/mysql/ -R

Dále zkontrolujte, zda jsou vaše staré databázové soubory stále v/var/lib/mysql/pokud tomu tak není, zkopírujte je zpět do složky a poté podržte root: root

(spusťte je pouze v případě, že soubory již neexistují)

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

Dále nainstalujte server mysql

Sudo apt-get install mysql-server

Nakonec znovu nainstalujte všechny chybějící balíčky jako phpmyadmin a php5-mysql.

48
Andrew Winter
Sudo dpkg-reconfigure mysql-server-5.5
15
Kevin C. Smith

Měl jsem stejný problém a pro mě to byly protokoly InnoDB jiné velikosti, než očekával mysql, a během aktualizace tiše selhaly.

Měl jsem vlastní konfigurační soubor, který byl při upgradu vymazán na 12.04, který nastavil velikost souborů protokolu na něco jiného než výchozí konfigurace.

Musíte odstranit soubory:/var/lib/mysql/ib_logfile *

Poté, co jsou soubory pryč, může mysql nyní spouštět a vytvářet nové protokolové soubory výchozí velikosti.

12
Corey Aufang

Většina chyb se zobrazí spuštěním serveru v podrobném nedémonovém režimu a sledováním výstupu:

Sudo mysqld --verbose
9
Ian Mackinnon

Měl jsem stejný problém, ale žádná z výše uvedených odpovědí mi nepomohla. Jako poslední naději jsem se pokusil uvolnit místo na disku. Jednoduše odstraním nepotřebné soubory protokolu z/var/log, které uvolnily nějaké 2,5 G místa. Pak MySQL začala normálně.

7
Eye

K tomu někdy dochází, a ačkoli existuje několik různých problémů, které by mohly způsobit, že by se mysql nespustil, zde napíšu některé z nejčastějších problémů, o kterých vím:

POZNÁMKA - Protože vysvětluji nejčastější problémy, předpokládám, že jste se již pokusili odebrat a nainstalovat, nebo jednoduše přeinstalovat službu mysql takto:

Instalace - Sudo apt-get install mysql-server mysql-client
Odebrání - Sudo apt-get remove mysql-server mysql-client
Vyčistit (odebrat soubory + Config) - Sudo apt-get purge mysql-server mysql-client
Přeinstalovat - Sudo apt-get install --reinstall mysql-server mysql-client

  1. Soubor my.cnf Není ve výchozím adresáři. Měl by být (ve výchozím nastavení) umístěn v /etc/my.cnf Nebo /etc/mysql/my.cnf.

  2. Na pevném disku není dostatek místa, kde jsou umístěny datové soubory mysql. Pokud jsou databáze příliš velké a zabírají 100% pevného disku, služba selže.

  3. Po upgradu zkontrolujte, zda je soubor my.cnf Na správném místě. V závislosti na tom, jak jste upgradovali nebo z které verze jste upgradovali, by to mohlo být v /etc/my.cnf Nebo /etc/mysql/my.cnf, Jak bylo uvedeno výše. Pamatujte také, že soubor lze také nazvat mysql.conf A nejen my.cnf. K tomu dochází v případech, kdy jste si stáhli binární soubor z mysql.com.

  4. Uděláte dmesg, abyste viděli, co služba mysql hází, protože pomáhá chybová zpráva, protože poskytuje chybu načítání. Mohlo by také říci, proč se to děje. Zadáte-li do terminálu samotný dmesg, ukáže vám svět. Chceme informace o mysql, takže udělejte něco takového: dmesg | grep mysql To vám hodí všechny řádky, které v nich obsahují mysql.

  5. Zkontrolujte, zda je soubor my.cnf Nebo mysql.conf Správný. V 12.04 je MySQL verze 5.5, v 11.10 je verze 5.1. Může to mít nějaké změny v souboru conf (to ve skutečnosti nekontrolovali) a může to znít hloupě, ale určitě vám může přinést nějaké potíže.

  6. Chyby související s problémy soket jsou obvykle chybou souboru my.cnf Nebo mysql.conf Směřujícího na nesprávné místo, obvykle se zobrazí jako:

    Nelze se připojit k místnímu serveru MySQL pomocí soketu '/var/run/mysqld/mysqld.sock'

    Jiný zdroj tohoto problému souvisí se souborem mysql v /etc/init.d, Který ukazuje na nesprávnou složku, protože by mohl používat starší skript, než je ten, který je potřebný pro skutečný mysql na systém (Možná se neaktualizoval správně, nepřepsal konfigurační soubor atd.). Stačí tedy upravit některý z těchto dvou souborů a zjistit, zda směřují někam jinam, a poté jednoduše udělat Sudo service mysql restart A zkontrolovat, zda to funguje.

  7. Chcete-li se lépe podívat na konkrétní chybové výstupy mysql, proveďte následující kroky:

    cat /var/log/mysql.err - Ukáže vám chyby mysql. Udělal bych to takto cat /var/log/mysql.err | less, Pokud náhodou vidíte příliš mnoho informací, protože less vám pomůže procházet výstupem cat.

    Totéž platí pro cat /var/log/mysql.log Pokud vidíte chybu, možná ji položíte na otázku nebo jako komentář pomůže odpovědět rychleji.

  8. Pokud máte problémy s připojením a službu, která je skutečně spuštěna, zkuste zjistit, zda brána Firewall serveru povoluje připojení prostřednictvím portu 3306 (Příchozí připojení). Poté zkontrolujte, zda router (pokud je použit) neblokuje port 3306. V zásadě proveďte test sítě, abyste zjistili, odkud pochází problém související s portem přiřazeným mysql.

Pokud je vše v pořádku, otestujte, zda je spuštěna služba mysql typu service mysql status

Jako poslední možnost. Pokud náhodou běžíte mysql, ale nemůžete se přihlásit, zkuste následující:

  1. Zastavte server MySQL:

    Sudo /etc/init.d/mysql stop Nebo Sudo service mysql stop

  2. Službu mysqld spusťte ručně s ruční konfigurací

    Sudo mysqld --skip-grant-tables &

    (Nezapomeňte přidat & jinak budete muset otevřít jiný terminál. & Odešle proces na pozadí a můžete zabít pomocí stejného terminálu).

  3. Přihlaste se do databáze mysql jako ROOT

    mysql -u root mysql

  4. Zadejte následující text a nahraďte MyPASSWORD novým heslem

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

Toto by mělo být vynuceno k opětovnému přihlášení ke službě Mysql jako root. Doufám, že to pomůže.

5
Luis Alvarado

Stejný problém jsem měl i po upgradu na Ubuntu Server 12.04 LTS, běh

Sudo apt-get install mysql-server 

to stačilo na opravu, i když si stěžovalo na starou databázi spotwebu. Opravil jsem to odstraněním spotwebu:

Sudo apt-get purge spotweb

a překonfigurování mysql:

Sudo dpkg-reconfigure mysql-server-5.5
4
RedPixel

Přidám to v případě, že někdo bude čelit podobným problémům. Vyzkoušel jsem všechny odinstalace a opětovné instalace bezvýsledně. Klíčem k nalezení řešení bylo, že upstart umístí do této složky protokoly chyb

/var/log/upstart/

pro mysql

/var/log/upstart/mysql.log

když jsem to otevřel, měl tuto zprávu

Chyba analyzátoru AppArmor pro /etc/apparmor.d/usr.sbin.mysqld v /etc/apparmor.d/tunables/global v řádku 15: Nelze otevřít 'tunables/home'

Když jsem se podíval do složky /etc/apparmor.d/tunables/, chyběl mi domovský soubor, takže jsem si jednu vytvořil

gedit /etc/apparmor.d/tunables/home a zkopíroval obsah z jiného počítače, který měl tyto nekomentované řádky

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

@ {HOMEDIRS} =/home /

někdo zde čelí podobnému problému

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

pak jsem byl schopen restartovat službu

4
pt123

V mém případě to bylo mnohem jednodušší než některé odpovědi zde. Našel jsem související chyba na launchpad a oprava byla uvedena v komentáři 9:

Sudo touch /etc/apparmor.d/local/usr.sbin.mysqld
Sudo service apparmor restart
2
Manfred Moser

Po upgradu jsem zjistil, že mysql-server/mysql-server-5.5 nebyl nainstalován a ani 5.1. Přejmenoval jsem my.cnf na my.cnf_old a pokusil jsem se nainstalovat mysql-serven. Během instalace se zobrazila chybová zpráva, že nebylo možné nastavit heslo uživatele root. Poté jsem zkontroloval své konfigurace, aparaturu a tak dále. Zdálo se, že je vše v pořádku. Mým dalším pokusem bylo překonfigurovat server mysql, ale stěžovalo si, že balíček nebyl nainstalován úplně. Takže jsem se rozhodl odinstalovat a během tohoto apt-get opravil balíček a nyní to funguje. Nevím proč, protože jsem nic nezměnil.

1
user54914

V mém případě jsem se pokusil nainstalovat MySQL na novou instalaci Ubuntu 12.04, ale nechápal jsem, proč mi došlo k chybě při nastavování hesla pro uživatele root. Vyzkoušel jsem všechna výše uvedená řešení, ale neměl jsem co dělat.

Pak jsem se rozhodl očistit/odstranit vše, odinstaloval jsem MySQL server a odstranil všechny jeho složky (/ etc/mysql/a/var/lib/mysql /), nakonec díky nějaké náhodnosti nedal žádnou chybu během přeinstalaci a byl jsem schopen nastavit heslo a spustit instanci serveru.

1
Alexian

Měl jsem podobné problémy, ale rychle jsem je vystopoval až po aparatora, který jsem si pamatoval, že mi tento problém donesl dříve.

Pokud provedete změny těchto nastavení a váš systém používá apparmor, možná bude také nutné upravit /etc/apparmor.d/usr.sbin.mysqld. Např. tyto řádky byly přidány (pro umožnění odkazu na soubor my.cnf a pro umožnění čtení symlinked souboru, pravděpodobně):

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

1
Simon Nuttall

V terminálu ji můžete znovu nainstalovat a při spuštění my.cnf můžete napsat:

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

mohlo by to fungovat tímto způsobem.

0
Michael

Mám potíže s přidáním performance_schema pod [mysqld] v /etc/mysql/my.conf způsobuje toto selhání. Odstranili jsme tento řádek a mysql byl schopen začít znovu.

Edit: Ukázalo se, že jeden koncert RAM prostě nestačí na spuštění mysqld s povoleným performance_schema. Narazil jsem na 3 koncerty a fungovalo to dobře.

0
ThorSummoner