OpenSuSE Leap 42.2: Cannot log in to the MySQL server

Hallo!

Ich habe seit heute früh ein recht seltsames Problem mit meiner MySQL installation in openSuSE 42.2. Seit heute früh kann ich mich nämlich nicht mehr einlogen, und zwar weder über phpMyAdmin, noch über meine selbst entwickelte Web-Applikation. Über die Konsole oder Workbench klappt der Login allerdings.

Fehlermeldung meiner Applikation:
Error! SQLSTATE[HY000] [2002] Permission denied

Fehlermeldung von phpMyAdmin:
Cannot log in to the MySQL server

Es handelt sich demnach um Berechtigungsprobleme.

Folgendes habe ich schon probiert.

  • Berechtigungen neu setzen - kein Erfolg
  • mit Workbench die User überprüft und neue Passwörter verteilt.
  • mysql deinstalliert, alle configs und dateien gelöscht, anschließend neu installiert und neu konfiguriert - kein Erfolg
  • mich im Netz eingelesen und immer noch keinen schimmer was nun das problem ist.

Die /var/log/mysql/mysql.log ist leer.

mysqlcheck --all-databases bringt folgendes:


mysql.columns_priv                                 OK
mysql.db                                           OK
mysql.event                                        OK
mysql.func                                         OK
mysql.general_log                                  OK
mysql.help_category                                OK
mysql.help_keyword                                 OK
mysql.help_relation                                OK
mysql.help_topic                                   OK
mysql.innodb_index_stats                           OK
mysql.innodb_table_stats                           OK
mysql.ndb_binlog_index                             OK
mysql.plugin                                       OK
mysql.proc                                         OK
mysql.procs_priv                                   OK
mysql.proxies_priv                                 OK
mysql.servers                                      OK
mysql.slave_master_info                            OK
mysql.slave_relay_log_info                         OK
mysql.slave_worker_info                            OK
mysql.slow_log                                     OK
mysql.tables_priv                                  OK
mysql.time_zone                                    OK
mysql.time_zone_leap_second                        OK
mysql.time_zone_name                               OK
mysql.time_zone_transition                         OK
mysql.time_zone_transition_type                    OK
mysql.user                                         OK

systemctl status mysql.services:

● mysql.service - MySQL server
   Loaded: loaded (/usr/lib/systemd/system/mysql.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2017-05-11 09:08:46 CEST; 1h 33min ago
  Process: 8777 ExecStartPost=/usr/lib/mysql/mysql-systemd-helper wait (code=exited, status=0/SUCCESS)
  Process: 8764 ExecStartPre=/usr/lib/mysql/mysql-systemd-helper upgrade (code=exited, status=0/SUCCESS)
  Process: 8705 ExecStartPre=/usr/lib/mysql/mysql-systemd-helper install (code=exited, status=0/SUCCESS)
 Main PID: 8776 (mysqld)
    Tasks: 22 (limit: 512)
   CGroup: /system.slice/mysql.service
           └─8776 /usr/sbin/mysqld --defaults-file=/etc/my.cnf --user=mysql

May 11 09:08:45 linux-xeny mysql-systemd-helper[8705]: please compare it with your file and take the changes you need.
May 11 09:08:45 linux-xeny mysql-systemd-helper[8705]: WARNING: Default config file /etc/my.cnf exists on the system
May 11 09:08:45 linux-xeny mysql-systemd-helper[8705]: This file will be read by default by the MySQL server
May 11 09:08:45 linux-xeny mysql-systemd-helper[8705]: If you do not want to use this, either remove it, or use the
May 11 09:08:45 linux-xeny mysql-systemd-helper[8705]: --defaults-file argument to mysqld_safe when starting the server
May 11 09:08:45 linux-xeny mysql-systemd-helper[8777]: Waiting for MySQL to start
May 11 09:08:45 linux-xeny mysql-systemd-helper[8776]: 2017-05-11 09:08:45 0 [Warning] TIMESTAMP with implicit DEFAULT value is de...ails).
May 11 09:08:45 linux-xeny mysql-systemd-helper[8776]: 2017-05-11 09:08:45 0 [Note] /usr/sbin/mysqld (mysqld 5.6.36) starting as p...76 ...
May 11 09:08:46 linux-xeny mysql-systemd-helper[8777]: MySQL is alive
May 11 09:08:46 linux-xeny systemd[1]: Started MySQL server.
Hint: Some lines were ellipsized, use -l to show in full.




Klingt mir so wie “Heute habe ich einfach keine Lust.”
Was ich mir vorstellen kann, das mit dem letztem Update etwas nicht hingehauen hat. Meine Applikation hatte keine änderungen bezüglich Datenbanken oder sonstigem Code. Das würde ich wissen. Gemeinsamkeit ist das phpMyAdmin ebenfalls nicht mehr funktioniert.

Was kann mein Problem sein?

mfg

Nachtrag: Datenbank ist das mysql-community-server und nicht mariadb.

Hi

Kannst Du mal überprüfen, welche Rechte auf dem Verzeichnis /var/run/mysql definiert sind? Ich habe inzwischen bereits bei der zweiten LEAP 42.2 festgestellt, dass diese offenbar nicht (mehr) richtig gesetzt werden.

Was gibt ein

ls -l /var/run/

für das Verzeichnis “mysql” zurück?

drwxr-xr-x  2 mysql     mysql     60 May 11 18:55 mysql

oder

drwx------  2 mysql     mysql     60 May 11 18:55 mysql

Falls letzter Eintrag, dann passe die Rechte mit

chmod 755 /var/run/mysql 

an und versuche nochmals, Dich anzumelden.

Bei mir streiken seit dem letzten Update (frag mich aber nicht welches) Verbindungen, welche per Socket zum MySQL aufgebaut werden.

WICHTIG
Nach einem Neustart wirst Du dasselbe Problem wieder haben. Leider habe ich nicht rausgefunden, wo diese Rechte gesetzt werden (keinen Eintrag für MySQL in den Dateien /etc/permissions*). Ein simpler Neustart vom MySQL-Server hatte jedenfalls keinen Einfluss auf die Verzeichnisrechte.

Viel Erfolg
Pasci

Sehe gerade, dass die MySQL-Versionen nicht identisch sind.

Problem NICHT vorhanden bei:
Version : 5.6.35-22.1

Problem vorhanden bei:
Version : 5.6.36-24.3.3

Kannst Du das Bestätigen bzw. ist bei Dir auch 5.6.36-24.3.3 installiert, wo Du Verbindungsprobleme hast?

Ich habe gerade noch ein weiteres System auf die neuste MySQL-Version aktualisiert. War wie erwartet. Die installierte Joomla-Instanz konnte - obwohl der MySQL-Server lief - keine Verbindung aufbauen. Erst beim Setzen der Verzeichnisrechte hat es funktioniert.

Ich habe übrigens dazu einen Bug-Report erstell:
https://bugzilla.opensuse.org/show_bug.cgi?id=1038740

Tatsache, du hast Recht. Wenn ich die Rechte anpasse, dann geht es wieder.
Super, das du einen Bugreport erstellt hast und schön beschreibst woran es liegt. :slight_smile:

Ich switsche auf die vorherige Version zurück und warte den Bugfix ab :slight_smile:

Edit: Der Switch auf die vorherige Version löst das Problem.

Hi,
die Factory-Mailingliste hat auch was dazu: http://lists.opensuse.org/opensuse-factory/2017-05/msg00005.html.

Es gibt wohl einen Bugreport bsc#1020976, aber der ist nicht für einfache Sterbliche einsehbar.

Ich hab in mysql-systemd-helper die umask entsprechend angepasst oder einfach die Zeile auskommentiert (kann ich gerade nicht nachsehen, weil ich arbeiten bin :slight_smile: ). Das wird aber erst nach reboot wirksam. Um sofort was davon zu haben, die permissions für /var/run/mysql (da ist der socket für mysql drin) auf 755 setzen. Dann läuft’s. Jedenfalls bei mir.

Grüße,
Josh

Um den Effekt des umask 077 nicht ganz auszuhebeln, ist es möglicherweise besser, das nicht auszukommentieren, sondern ein paar Zeilen weiter so zu ergänzen:

mkdir -p /var/run/mysql
chmod 770 /var/run/mysql
chown --no-dereference "$mysql_daemon_user:$mysql_daemon_group" /var/run/mysql

und die User der Prozesse, die auf die Socket zugreifen müssen (z.B. bei apache den User wwwrun), der Gruppe mysql zuzuordnen.