LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Linux - Software (https://www.linuxquestions.org/questions/linux-software-2/)
-   -   after upgrade to deb10 mysql is playing up (https://www.linuxquestions.org/questions/linux-software-2/after-upgrade-to-deb10-mysql-is-playing-up-4175664124/)

pointer2null 11-12-2019 02:36 PM

after upgrade to deb10 mysql is playing up
 
I upgraded from Debian 8 to 9 then to 10. Now I'm getting problems with mysql. I've tried completly removing it at reinstalling, but I'm getting the same problem. Any suggestions what could be wrong would be welcome (I've tried the obvious and I can use google so tried the to 20 on there as well)

Code:

root@gdserver:/etc/systemd/system# systemctl start mysqld.service
Failed to start mysqld.service: Unit mysqld.service not found.
root@gdserver:/etc/systemd/system# systemctl status mysql.service
● mysql.service - LSB: Start and stop the mysql database server daemon
* *Loaded: loaded (/etc/init.d/mysql; generated)
* *Active: failed (Result: exit-code) since Tue 2019-11-12 20:24:42 GMT; 1min 2s ago
* * *Docs: man:systemd-sysv-generator(8)
* Process: 13932 ExecStart=/etc/init.d/mysql start (code=exited, status=1/FAILURE)

Nov 12 20:24:42 gdserver mysql[13932]: Fatal error in defaults handling. Program aborted
Nov 12 20:24:42 gdserver /etc/init.d/mysql[25629]: 0 processes alive and '/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf ping' resulted in
Nov 12 20:24:42 gdserver /etc/init.d/mysql[25629]: [61B blob data]
Nov 12 20:24:42 gdserver /etc/init.d/mysql[25629]: error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)'
Nov 12 20:24:42 gdserver /etc/init.d/mysql[25629]: Check that mysqld is running and that the socket: '/var/run/mysqld/mysqld.sock' exists!
Nov 12 20:24:42 gdserver /etc/init.d/mysql[25629]:
Nov 12 20:24:42 gdserver mysql[13932]: *failed!
Nov 12 20:24:42 gdserver systemd[1]: mysql.service: Control process exited, code=exited, status=1/FAILURE
Nov 12 20:24:42 gdserver systemd[1]: mysql.service: Failed with result 'exit-code'.
Nov 12 20:24:42 gdserver systemd[1]: Failed to start LSB: Start and stop the mysql database server daemon.

The defaults bit is new - something I seem to have introduced, before that I was just getting the
Code:

'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)'

pointer2null 11-12-2019 03:46 PM

Also should add this was all working fine until I did a reboot.

pointer2null 11-13-2019 01:52 PM

even running as root I get

Code:

root@gdserver:~# mysqld --help --verbose
mysqld: Can't read dir of '/etc/mysql/mariadb.conf.d/' (Errcode: 13 "Permission denied")
Fatal error in defaults handling. Program aborted


Firerat 11-13-2019 10:05 PM

you upgraded from 8 to 9 to 10
you do not mention over what timespan

can I assume it was 8 and is now 10 in a very short timespan?
or is this something that has happened over years?

is there anything in the 8 and 10 release documentation that points out that configuration for mysql has changed?

your initial error has been truncated

Quote:

...ql/debian.cnf ping' resulted in ?????????????
the missing part may be an exit code, which could help diagnose the problem


anyone can use a web search, but
garbage in garbage out
it's a law

And blindly following "destructions" the top 20 search results is asking for trouble.
Also, not telling us what you did to further break things is not going to help matters.

pointer2null 11-14-2019 02:31 AM

So the full(er) story. Server had be languishing at Debian 8 for far too long and for various reasons needed an update. So it went from Debian 8 at around 5pm to Debian 10 by around 9pm with a brief stop at Debian 9 along the way.

There was an old mysql installation, but when I cam to install NextCloud, I removed the mysql and reinstalled with MariaDb. Initially the DB started but after the recent reboot it's now failing to start. I din't notice the log line was truncated - I'll post the untruncated version later when I get home.

From what I can see at the moment, it's failing to start as it can read the config file. I've no idea why and wasn't able to find anything useful.

The /etc/myql folder and everything in it are at the root:root with perms of 755. I have also tried mysql:mysql and mysql:root.

If I set it to 777 I don't get the permission denied error - I get the writable config file error.

Firerat 11-14-2019 03:30 AM

please don't set 777

thankfully the mysql binaries are hardcoded to fail when they see files with stupid permissions, be thankful someone is protecting you from yourself.

set the correct permissions / owner

Code:

find /etc/mysql -type d | sudo xargs -r chmod 755
find /etc/mysql -type f | sudo xargs -r chmod 644
sudo chmod 600 /etc/mysql/debian.cnf
sudo chmod 755 /etc/mysql/debian-start
sudo chown -R root:root /etc/mysql


#

maybe it will fix things, maybe not
but at least a start.

pointer2null 11-14-2019 03:38 AM

I know it shouldn't be 777 - it was an experiment to see if there were something else causing the issue. I found it odd that running
Code:

mysqld --help --verbose
as root got the permission denied error.

The only thing in your suggestion I haven't tried is chmod 755 /etc/mysql/debian-start

Unfortunatly the company firewall prevents me for getting onto the box while as work. Will test this when home this evening.

pointer2null 11-14-2019 12:30 PM

Code:

root@gdserver:/etc/mysql# ls -al /etc/mysql
total 40
drwxr-xr-x  4 root root  4096 Nov 13 17:02 .
drwxr-xr-x 157 root root 12288 Nov 13 17:16 ..
drwxr-xr-x  2 root root  4096 Nov  6 18:17 conf.d
-rw-------  1 root root  277 Nov  6 18:18 debian.cnf
-rwxr-xr-x  1 root root  1620 Aug  3 19:44 debian-start
-rw-r--r--  1 root root  878 Nov 12 20:29 mariadb.cnf
drwxr-xr-x  2 root root  4096 Nov 13 17:03 mariadb.conf.d
lrwxrwxrwx  1 root root    24 Nov  6 18:17 my.cnf -> /etc/alternatives/my.cnf
-rw-r--r--  1 root root  839 Aug  3  2016 my.cnf.fallback
root@gdserver:/etc/mysql# –mysqld --help --verbose
mysqld: Can't read dir of '/etc/mysql/mariadb.conf.d/' (Errcode: 13 "Permission denied")
Fatal error in defaults handling. Program aborted
root@gdserver:/etc/mysql# ls -al /etc/mysql/mariadb.conf.d/
total 40
drwxr-xr-x 2 root root  4096 Nov 13 17:03 .
drwxr-xr-x 4 root root  4096 Nov 13 17:02 ..
-rw-r--r-- 1 root root  733 Aug  3 19:44 50-client.cnf
-rw-r--r-- 1 root root  336 Aug  3 19:44 50-mysql-clients.cnf
-rw-r--r-- 1 root root  1032 Aug  3 19:44 50-mysqld_safe.cnf
-rw-r--r-- 1 root root  3940 Aug  3 19:44 50-server.cnf
-rw-r--r-- 1 root root 16384 Nov 13 17:03 .50-server.cnf.swp




Nov 14 18:22:32 gdserver serviio.sh[985]: Could not lock User prefs.  Unix error code 2.
Nov 14 18:22:32 gdserver serviio.sh[985]: Couldn't flush user prefs: java.util.prefs.BackingStoreException: Couldn't get file lock.
Nov 14 18:22:33 gdserver audit[9255]: AVC apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/etc/mysql/mariadb.conf.d/" pid=9255 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=0
Nov 14 18:22:33 gdserver kernel: audit: type=1400 audit(1573755753.194:191): apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/etc/mysql/mariadb.conf.d/" pid=9255 comm="mysqld" requeste
Nov 14 18:22:33 gdserver mysql[8849]: [101B blob data]
Nov 14 18:22:33 gdserver mysql[8849]: Fatal error in defaults handling. Program aborted
Nov 14 18:22:34 gdserver audit[9295]: AVC apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/etc/mysql/mariadb.conf.d/" pid=9295 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=0
Nov 14 18:22:34 gdserver mysql[8849]: [101B blob data]
Nov 14 18:22:34 gdserver mysql[8849]: Fatal error in defaults handling. Program aborted
Nov 14 18:22:34 gdserver kernel: audit: type=1400 audit(1573755754.234:192): apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/etc/mysql/mariadb.conf.d/" pid=9295 comm="mysqld" requeste
Nov 14 18:22:35 gdserver audit[9305]: AVC apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/etc/mysql/mariadb.conf.d/" pid=9305 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=0
Nov 14 18:22:35 gdserver mysql[8849]: [101B blob data]
Nov 14 18:22:35 gdserver kernel: audit: type=1400 audit(1573755755.270:193): apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/etc/mysql/mariadb.conf.d/" pid=9305 comm="mysqld" requeste
Nov 14 18:22:35 gdserver mysql[8849]: Fatal error in defaults handling. Program aborted
Nov 14 18:22:36 gdserver audit[9314]: AVC apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/etc/mysql/mariadb.conf.d/" pid=9314 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=0
Nov 14 18:22:36 gdserver kernel: audit: type=1400 audit(1573755756.306:194): apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/etc/mysql/mariadb.conf.d/" pid=9314 comm="mysqld" requeste
Nov 14 18:22:36 gdserver mysql[8849]: [101B blob data]
Nov 14 18:22:36 gdserver mysql[8849]: Fatal error in defaults handling. Program aborted
Nov 14 18:22:36 gdserver audit[9322]: AVC apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/etc/mysql/mariadb.conf.d/" pid=9322 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=0
Nov 14 18:22:36 gdserver kernel: audit: type=1400 audit(1573755756.338:195): apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/etc/mysql/mariadb.conf.d/" pid=9322 comm="mysqld" requeste
Nov 14 18:22:36 gdserver mysql[8849]: [101B blob data]
Nov 14 18:22:36 gdserver mysql[8849]: Fatal error in defaults handling. Program aborted
Nov 14 18:22:36 gdserver /etc/init.d/mysql[9328]: 0 processes alive and '/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf ping' resulted in
Nov 14 18:22:36 gdserver /etc/init.d/mysql[9328]: [61B blob data]
Nov 14 18:22:36 gdserver /etc/init.d/mysql[9328]: error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)'
Nov 14 18:22:36 gdserver /etc/init.d/mysql[9328]: Check that mysqld is running and that the socket: '/var/run/mysqld/mysqld.sock' exists!
Nov 14 18:22:36 gdserver /etc/init.d/mysql[9328]:
Nov 14 18:22:36 gdserver mysql[8849]:  failed!
Nov 14 18:22:36 gdserver systemd[1]: mysql.service: Control process exited, code=exited, status=1/FAILURE
-- Subject: Unit process exited
-- Defined-By: systemd
-- Support: https://www.debian.org/support
--
-- An ExecStart= process belonging to unit mysql.service has exited.
--
-- The process' exit code is 'exited' and its exit status is 1.
Nov 14 18:22:36 gdserver systemd[1]: mysql.service: Failed with result 'exit-code'.
-- Subject: Unit failed
-- Defined-By: systemd
-- Support: https://www.debian.org/support
--
-- The unit mysql.service has entered the 'failed' state with result 'exit-code'.
Nov 14 18:22:36 gdserver systemd[1]: Failed to start LSB: Start and stop the mysql database server daemon.
-- Subject: A start job for unit mysql.service has failed
-- Defined-By: systemd
-- Support: https://www.debian.org/support
--
-- A start job for unit mysql.service has finished with a failure.

I notice a lot of

Code:

Nov 14 18:22:36 gdserver audit[9322]: AVC apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/etc/mysql/mariadb.conf.d/" pid=9322 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=0
But the apparmor file

Code:

root@gdserver:/etc/mysql# cat /etc/apparmor.d/usr.sbin.mysqld
# This file is intensionally empty to disable apparmor by default for newer
# versions of MariaDB, while providing seamless upgrade from older versions
# and from mysql, where apparmor is used.
#
# By default, we do not want to have any apparmor profile for the MariaDB
# server. It does not provide much useful functionality/security, and causes
# several problems for users who often are not even aware that apparmor
# exists and runs on their system.
#
# Users can modify and maintain their own profile, and in this case it will
# be used.
#
# When upgrading from previous version, users who modified the profile
# will be promptet to keep or discard it, while for default installs
# we will automatically disable the profile.


pointer2null 11-19-2019 12:00 PM

This appears to be an issue with AppArmor and the MariaDb

see this thread for the solution. Theonly thing it doesn't say explicitly is you need to reboot.

For those in too much of a rush to click...

Code:

$ sudo systemctl stop apparmor.service
$ sudo update-rc.d -f apparmor remove

$ sudo apt-get remove --purge mysql-server mysql-client mysql-common
$ sudo apt-get autoremove
$ sudo apt-get autoclean
$ sudo apt-get install mariadb-server

$ sudo systemctl start apparmor.service
$ sudo update-rc.d apparmor defaults

And then REBOOT


All times are GMT -5. The time now is 11:01 PM.