Mariadb startet nach Upgrade nicht mehr

Ich weiß, es hilft nur wenig, aber ich habe meine nextcloud mit postgresql in einer separaten jail laufen.
Aber für piwigo habe ich in einer eigenen jail mariadb, piwigo und nginx in einer gemeinsamen jail zusammen laufen. Beim setup fiel mir auf, dass ich mit localhost als db url nicht auf die jail komme, sondern erst mit der ip der jail. Also musste ich den db user von mariadb in ‚user‘@‚ip‘ ändern, damit er Verbindungen von der jail auf sich selbst akteptiert. Sonst habe ich in der /usr/local/etc/mysql/my.cnf nichts weiter geändert.
Vielleicht hilft das erstmal?
 
Zwischenstand.

Frisches mariadb104-server-10.4.13_3 meckert:

Code:
root@nextcloud:/usr/local/etc/apache24 # service mysql-server start
chown: mysql: illegal user name
Cannot change ownership of the database directories to the 'mysql'
user.  Check that you have the necessary permissions and try again.
/usr/local/etc/rc.d/mysql-server: WARNING: failed precmd routine for mysql

Kurz gecheckt, group und user mysql wurden nicht angelegt.
Angelegt, neuer Versuch, klappt. Infomail an Maintainer hab ich geschrieben.

Code:
root@nextcloud:/var/run/mysql # ls -l
total 1
srwxrwxrwx  1 mysql  mysql  0 Jul 12 06:43 mysql.sock
 
Hi,

es geht ein wenig weiter voran. Ich hatte eben einfach um sicher zu gehen Nextcloud von 18.0.3 auf 19.0.0 upgedatet ( soll heissen ich habe das Nextcloud Verzeichnis ersetzt). Dabei hatte ich die config.php vergessen zu kopieren und bekam über den Browser plötzlich den typischen Einrichtungscreeen. Also war die Nextcloud somit am Laufen. Auf dieser Grundlage habe ich den Loglevel der Nextcloud auf 0 gesetzt und habe folgenden Zeilen erhalten

https://pastebin.com/XTxzkDfS

Wenn ich nicht etwas wichtiges übersehen habe dann ist dies eine wichtige Meldung

Code:
ailed to connect to the database: An exception occurred in driver: SQLSTATE[HY000] [2002] No such file or directory","Code":0,"Trace":[{"file":"/usr/local/www/nextcloud/3rdparty/doctrine/dbal/lib/Doctrine/DBAL/

Für mich klingt das als würde Nextcloud nicht auf die Datenbank kommen.

Sehe ich das richtig oder liege ich da falsch ?
Ich hab letztens Roundcube frisch mit alle pipapo aufgesetzt.
MariaDB 10.4 installiert, musste den User und die Gruppe MySQL manuell erstellen. WTF? Egal die DB läuft.
Roundcube installiert und ich bekam den gleichen Fehler wie Du, letztlich musste ich php davon überzeugen, dass der Socket nicht unter /tmp zu finden ist...
war diesmal etwas holprig, kenne ich von FreeBSD so eigentlich nicht Und habe ich bei dem Paketsystem so nicht erwartet...
 
root@nextcloud:/usr/local/include/mysql/server # mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none):
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysql' (38)
Enter current password for root (enter for none):
Aborting!

Cleaning up...
root@nextcloud:/usr/local/include/mysql/server # mysql_config --socket
/var/run/mysql
root@nextcloud:/usr/local/include/mysql/server # cd /var/run/mysql/
root@nextcloud:/var/run/mysql # ls -l
total 1
srwxrwxrwx 1 mysql mysql 0 Jul 12 08:34 mysql.sock
root@nextcloud:/var/run/mysql #

root@nextcloud:/usr/local/etc/mysql # mysqladmin variables | grep socket
| performance_schema_max_socket_classes | 10 |
| performance_schema_max_socket_instances | -1 |
| socket | /var/run/mysql/mysql.sock |
root@nextcloud:/usr/local/etc/mysql # mysql_config --socket
/var/run/mysql
root@nextcloud:/usr/local/etc/mysql #

Hmpf! Also am script liegts nicht.
Habe jetzt aber keine Ahnung, wo/wie der falsche Pfad herkommt.
 
Zuletzt bearbeitet:
Bin gerade nicht am Rechner, aber das hatte ich auch, guck mal in die manpage zur secure installation, du kannst den pfad zur my.cnf mitgegeben, dann klappt das script.
edit: mit mysql_secure_installation --defaults-file=/usr/local/etc/mysql/my.cnf klappte es.
 
Zuletzt bearbeitet:
Hallo KobRheTilla,

danke für deinen Tipp.

Ich habe versucht in der php.ini den Wert mysqli.defaul_socket = /var/run/mysql/mysql.sock zu setzen, allerdings hatte das nicht funktioniert.
Das Erstellen eines softlink brachte mit dann zum ersten Mal nach dem Update die Nextcloud ans Laufen

Code:
ln -s /var/run/mysql/mysql.sock /tmp/mysql.sock

Du lagst also mit deiner Annahme gold richtig. Wie nicht anders zu erwarten war nach dem Neustart der Link ins Tempverzeichnis wieder weg. Wie würde den den Pfad permanent setzen ? Ich glaube ja nicht das ein Cronjob @reboot inkl. Erstellung des Softlink der korrekte Weg ist.
 
Ich habe versucht in der php.ini den Wert mysqli.defaul_socket = /var/run/mysql/mysql.sock zu setzen
Beachte, dass wenn du PHP als FPM/FastCGI nutzt, dass der Prozess erst neu gestartet werden muss, damit die php.ini neu eingelesen wird. Ich würde es an deiner Stelle einfach nochmal probieren.

Rob
 
Ich glaube ja nicht das ein Cronjob @reboot inkl. Erstellung des Softlink der korrekte Weg ist.
Eben, das ist mehr Holzhammergefummel. ;)

Ich habe soeben gebaut -> Upgrade of mariadb104-server-10.4.13_3 to mariadb104-server-10.4.13_4

Und siehe da:
Code:
root@nextcloud:/etc # mysql_config --socket
/var/run/mysql/mysql.sock
root@nextcloud:/etc #

Nice! :)
 
Hi,

ich habe es eben nochmal in die php.ini eingetragen und den ganzen Jail neu gestartet. Die Verbindung kann nicht aufgebaut werden.

Bei der folgenden Abfrage bekomme ich aber auch nur das Verzeichnis und nicht die mysql.sock angezeigt obwohl es korrekt in der php.ini eingetragen ist

Code:
mysql_config --socket
/var/run/mysql
 
Ich habe gerade mal durch das ganze Nextcloud Verzeichnis ge-grep-ped und diesen Eintrag gefunden:

Code:
/usr/local/www/nextcloud: grep -R "mysql.sock" .
./core/doc/admin/_sources/configuration_database/linux_database_configuration.rst.txt:  mysql.default_socket=/var/lib/mysql/mysql.sock  # Debian squeeze: /var/run/mysqld/mysqld.sock
 
mysql_config --socket
/var/run/mysql

Dieser Pfad hier wird nicht per php.ini gesteuert. Das käme erst 'später'.

Code:
root@nextcloud:/etc # pkg info | grep maria
mariadb104-client-10.4.13_4    Multithreaded SQL database (client)
mariadb104-server-10.4.13_4    Multithreaded SQL database (server)
root@nextcloud:/etc #

#
# This group is read both by the client and the server
# use it for options that affect everything, see
# https://mariadb.com/kb/en/configuring-mariadb-with-option-files/#option-groups
#
[client-server]
port = 3306
socket = /var/run/mysql/mysql.sock

#
# include *.cnf from the config directory
#
!includedir /usr/local/etc/mysql/conf.d/

Hast du das so? Beide -> 10.4.13_4 ? Das in meinen bisherigen Posts ist nur meine hinzugekommene Instanz, daher brauchte ich mariadb-upgrade nicht, es existierte ja noch keine Tabelle.


Edit php.ini:
[Pdo_mysql]
; Default socket name for local MySQL connects. If empty, uses the built-in
; MySQL defaults
.
pdo_mysql.default_socket=/var/run/mysql/mysql.sock

Und schon startet die Installation. :)
 
Zuletzt bearbeitet:
Hi,

die Lösung war der Eintrag des Pfades in pdo_mysql.default_socket anstatt mysqli.defaul_socket.
Was ist denn der Unterschied zwischen diesen 2 Optionen ?

Gruß Mardor
 
Einfach der Vollständigkeit halber:

As stated earlier, both PDO and MySQLi are extremely similar, but there's slight differences in syntax. MySQLi follows the old-school PHP snake_case convention, while PDO uses camelCase. Additionally, MySQLi's methods are used as object properties, while PDO uses the traditional syntax for functions

Quelle: https://websitebeaver.com/php-pdo-vs-mysqli

Vielen Dank nochmals an alle die geholfen haben das Problem zu lösen. Ich hätte das alleine nicht geschafft und habe mal wieder sehr viel gelernt
 
Zurück
Oben