Fórum Root.cz

Hlavní témata => Server => Téma založeno: martyd -f 30. 03. 2020, 10:13:12

Název: Nenastartuje service mysql start a nevytvoří /var/run/mysqld
Přispěvatel: martyd -f 30. 03. 2020, 10:13:12
Ahoj,
prosím o pomoc s mysql :)

Měl jsem verzi 5.6, která mi fungovala (kubuntu 19.04)
Chtěl sjem kompletně přeinstalovat na 8.0, takže jsem udělal na všem mysql* purge, pak autoremove, autoclean a odstranil jsem /etc/mysql a /var/lib/mysql
Pak apt install mysql-server, jenže tady už to nebaběhlo.

Vygooglil jsem mysqld --initialize --user=mysql, vytvořil jsem tedy zpět adresáře, chown mysql:mysql. Po tomto začalo mysqld hlásit
Could not create unix socket lock file /var/run/mysqld/mysqld.sock.lock.

ok, tak jsem zkusil
Kód: [Vybrat]
mkdir /var/run/mysqld
chown mysql:mysql /var/run/mysqld
chmod 755 /var/run/mysqld

a hurá, spustilo se to.
problém je v tom, že to jde spustit pouze tímto postupem, tzn
Kód: [Vybrat]
mkdir /var/run/mysqld
chown mysql:mysql /var/run/mysqld
chmod 755 /var/run/mysqld
mysqld

pokud dám service mysql start, tak adresář /var/run/mysqld zmizí a opakuje se chyba s tím, že nejde vytvořit mysqld.sock.lock
ta složka by se dle init.d/mysql měla vytvářet pomocí
Kód: [Vybrat]
test -e /var/run/mysqld || install -m 755 -o mysql -g root -d /var/run/mysqldcož ale zahlásí
install: cannot change owner and permissions of „/var/run/mysqld“: Adresář nebo soubor neexistuje
Zkušel jsem do init.d scriptu přidat vytvoření té složky mkdir && chown && chmod, ale taky se nevytvoří.
Už nějak nevím co s tím.. 
Název: Re:service mysql start nevytvoří /var/run/mysqld a nenastartuje
Přispěvatel: Mareg 30. 03. 2020, 10:50:44
Zdravím.

Podrobnější informace, proč se mysql nespouští bývají ve /var/log/mysql/*.log
Tam nic podrobnějšího není?
A opravdu tam máte init.d, nebo je tam systemd?

--
Mareg
Název: Re:service mysql start nevytvoří /var/run/mysqld a nenastartuje
Přispěvatel: martyd -f 30. 03. 2020, 11:24:53
je tam systemd, takže ty scripty, které si to instaluje do /etc/init.d jsou k ničemu?
/var/log/mysql obsahuje jen prázdný error.log

Našel jsem tedy /usr/lib/systemd/system/mysql.service ve kterém je:
Kód: [Vybrat]
# MySQL systemd service file

[Unit]
Description=MySQL Community Server
After=network.target

[Install]
WantedBy=multi-user.target

[Service]
Type=notify
User=mysql
Group=mysql
PIDFile=/run/mysql/mysqld.pid
PermissionsStartOnly=true
ExecStartPre=/usr/share/mysql/mysql-systemd-start pre
ExecStart=/usr/sbin/mysqld
TimeoutSec=600
Restart=on-failure
RuntimeDirectory=mysqld
RuntimeDirectoryMode=777
LimitNOFILE=10000

# Set enviroment variable MYSQLD_PARENT_PID. This is required for restart.
Environment=MYSQLD_PARENT_PID=1

v /usr/share/mysql/mysql-systemd-start je kontrola existence datadir a my.cnf, ale nezdá se, že by jakákoli úprava mysql.service, nebo mysql-systemd-start měla vliv na to, co se děje..  Snad se to tím spouští, zkusil jsem si do mysql-systemd-start dát  echo "1" > /tmp/mysql.test, ale nezapsalo se nic..

nemám tam žádné data, klidně bych to přeinstaloval, ale pokaždé to skončí stejně...
Název: Re:Nenastartuje service mysql start a nevytvoří /var/run/mysqld
Přispěvatel: Mareg 30. 03. 2020, 12:04:37
Měl jsme to tu rozepsané, ale nějak se to ztratilo :-(.
Tak stručně.
Zkuste
Kód: [Vybrat]
systemct start mysql
systemct status -l myslq
ve /var/log/mysql stále nic není?

--
Mareg
Název: Re:Nenastartuje service mysql start a nevytvoří /var/run/mysqld
Přispěvatel: martyd -f 30. 03. 2020, 12:15:54
Kód: [Vybrat]
martyd@system-device:/etc/apparmor.d/disable$ sudo systemctl start mysql
Job for mysql.service failed because the control process exited with error code.
See "systemctl status mysql.service" and "journalctl -xe" for details.

sudo journalctl -xe
Kód: [Vybrat]
bře 30 12:09:16 system-device systemd[1]: mysql.service: Failed with result 'exit-code'.
-- Subject: Unit failed
-- Defined-By: systemd
-- Support: http://www.ubuntu.com/support
--
-- The unit mysql.service has entered the 'failed' state with result 'exit-code'.
bře 30 12:09:16 system-device systemd[1]: Failed to start MySQL Community Server.
-- Subject: A start job for unit mysql.service has failed
-- Defined-By: systemd
-- Support: http://www.ubuntu.com/support
--
-- A start job for unit mysql.service has finished with a failure.
--
-- The job identifier is 12595 and the job result is failed.

Kód: [Vybrat]
martyd@system-device:/etc/apparmor.d/disable$ sudo systemctl status -l mysql
● mysql.service - MySQL Community Server
   Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Mon 2020-03-30 12:12:02 CEST; 643ms ago
  Process: 21330 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=1/FAILURE)

bře 30 12:12:02 system-device systemd[1]: mysql.service: Service RestartSec=100ms expired, scheduling restart.
bře 30 12:12:02 system-device systemd[1]: mysql.service: Scheduled restart job, restart counter is at 5.
bře 30 12:12:02 system-device systemd[1]: Stopped MySQL Community Server.
bře 30 12:12:02 system-device systemd[1]: mysql.service: Failed with result 'exit-code'.
bře 30 12:12:02 system-device systemd[1]: Failed to start MySQL Community Server.

ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=1/FAILURE)
je pravděpodobně po řádku:  mysqld --verbose --help --innodb-read-only 2>&1 > /dev/null

error.log je prázdný..  :(
Název: Re:Nenastartuje service mysql start a nevytvoří /var/run/mysqld
Přispěvatel: martyd -f 30. 03. 2020, 12:18:31
nejde mi to editovat..  že tam je ta cesta k apparmor, to jsem jen zkoušel dle podobného problému co jsem dohledal zakázat pravidla pro mysqld, ale beze změny..
Název: Re:Nenastartuje service mysql start a nevytvoří /var/run/mysqld
Přispěvatel: Mareg 30. 03. 2020, 15:18:29

Apparmor hlídá i přístup k dalším souborům/adresářům.
Neměnil jste třeba i "datadir"?
Název: Re:Nenastartuje service mysql start a nevytvoří /var/run/mysqld
Přispěvatel: martyd -f 30. 03. 2020, 16:14:58
Neměnil, nefunkční stav nastal ihned po instalaci mysql-server s default nastavením. (a s každým reinstlallem i se smazáním/etc/mysql a /var/lib/mysql se to opakuje.. )
Předchozí verzi jsem taky provozoval bez jakýchkoli změn v nastavení.
Název: Re:Nenastartuje service mysql start a nevytvoří /var/run/mysqld
Přispěvatel: Mareg 30. 03. 2020, 16:50:58
Dál bohužel už jen hledání přes google a zkoušení.
Osobně bych se snažil získat oprávnění k editaci toho souboru
Kód: [Vybrat]
/usr/share/mysql/mysql-systemd-starta zjistit co přesně se mu nepodaří.

A když uděláte
Kód: [Vybrat]
cd /var/log
grep -rn mysql-systemd-start  *
tak se také nepodaří nic najít?
--
Mareg
Název: Re:Nenastartuje service mysql start a nevytvoří /var/run/mysqld
Přispěvatel: martyd -f 30. 03. 2020, 17:01:38
A když uděláte
Kód: [Vybrat]
cd /var/log
grep -rn mysql-systemd-start  *
tak se také nepodaří nic najít?
--
Mareg

Je tam
Kód: [Vybrat]
syslog:8060:Mar 30 11:11:16 system-device mysql-systemd-start[16763]: tutoje
což je echo "tutoje" :) co jsem si tam na test připsal. Pak za spuštěním mysqld mám echo "tutouzneni" a tam už to nedojde :) 
tedy by to mělo znamenat, že se ukončí ten init script ještě před spuštěním mysqld a k tomu je jediná příležitost v ověření existence my.cfg a datadiru. Když podmínky zkouším samostatně, tak ale projdou ok...

Zatím se smířím s tím ručním spouštěním v @reboot cronu, ale díky za snahu pomoct :)


Název: Re:Nenastartuje service mysql start a nevytvoří /var/run/mysqld
Přispěvatel: kotelgg 30. 03. 2020, 17:08:25
zkus příkaz:
mysql_install_db --user=mysql --datadir=/var/lib/mysql

to znovu vytvoří složky a čistou databázi
Název: Re:Nenastartuje service mysql start a nevytvoří /var/run/mysqld
Přispěvatel: Jose D 30. 03. 2020, 17:19:36
že se ukončí ten init script

..ale ty tam žádný init script nemáš. V recentních ubuntu už je systemd.

Hoď sem ještě výstup tohodle:

Kód: [Vybrat]
mysqld --verbose --help --innodb-read-only
to je ten command co ti failuje v tom execPre

EDIT: dej to spíš do nějakého gistu, pastebinu, nebo tak někam.
Název: Re:Nenastartuje service mysql start a nevytvoří /var/run/mysqld
Přispěvatel: martyd -f 31. 03. 2020, 04:37:22
Citace: Jose D
..ale ty tam žádný init script nemáš. V recentních ubuntu už je systemd.
To už jsme řešili výše, tím init scriptem nemyslím init systém, ale prostě ten inicializační script, který připraví spuštění mysqld

Citace: Jose D
Hoď sem ještě výstup tohodle:
Kód: [Vybrat]
mysqld --verbose --help --innodb-read-only
Stejné, jako jsem popisoval výše.
Pokud připravím /var/run/mysqld, tak se to bez chyb spustí.
Pokud to ručně nepřipravím, skončí to chybou s nemožností vytvořit mysqld.sock.lock
Spuštění přes systemctl pak odstraní složku /var/run/mysqld a skončí opět chybou nelze vytvořit mysqld.sock.lock.

Nicméně aktuálně mám mysql běžící, funkční.
Nebyla to cílená oprava, spíš výstřel naslepo.

1) pravděpodobně to souviselo i s tím apparmor. Po přesunutí toho mysql profilu do disabled a downgradu mysql se to přes systemctl spustilo,  zapsalo něco jako "For more details, see /etc/mysql/FROZEN" a ukončilo. V tom souboru pak bylo info, že mám novější datové soubory, než verze mysql. + rozbité závislosti - nešlo to odinstalovat (což jsem udělal asi já celodenními pokusy..)
Nakonec tedy
Kód: [Vybrat]
sudo dpkg --configure -a
sudo apt remove mysql-server
sudo apt remove mysql-server-8.0
sudo apt purge mysql-*
sudo apt remove mysql-*
sudo apt autoremove
sudo apt autoclean
sudo apt install mysql-server mysql-client -y
sudo systemctl status mysql
● mysql.service - MySQL Community Server
   Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2020-03-30 17:28:54 CEST; 6min ago
 Main PID: 28031 (mysqld)
   Status: "Server is operational"
    Tasks: 38 (limit: 4915)
   Memory: 381.3M
   CGroup: /system.slice/mysql.service
           └─28031 /usr/sbin/mysqld


Asi tedy erupce na slunci...
sudo apt install mysql-server mysql-client -y
ráno rozbilo systém a večer nainstalovalo mysql :)
Název: Re:Nenastartuje service mysql start a nevytvoří /var/run/mysqld
Přispěvatel: martyd -f 31. 03. 2020, 04:43:39
ještě dodám, ač tomu nerozumím,
sudo apt purge mysql-*, ani sudo apt remove mysql-*
odstranilo spoustu věcí, ale nezasáhlo balíčky mysql-server-8.0 a mysql-server, proto je tam odinstalovávám samostatně..