ubuntuusers.de

Nextcloud mit MySQL 8.0

Status: Gelöst | Ubuntu-Version: Server 20.04 (Focal Fossa)
Antworten |

Icke275

Anmeldungsdatum:
31. Dezember 2012

Beiträge: 130

Moin, Moin, ich baue gerade (als absoluter Server-Anfänger) eine Nextcloud auf Ubuntu 20.04 Server.

Bei der (grafischen Installation gemäß Nextcloud (Abschnitt „Installation-der-Server-Variante“)) brach diese mit folgender Fehlermeldung ab:

Fehler
Error while trying to create admin user: Failed to connect to the database: An exception occurred in driver: SQLSTATE[HY000] [1045] Access denied for user 'ozeanix-user'@'localhost' (using password: YES) 

Ich vermute den Fehler bei den fehlenden Rechten für die SQL-Datenbank, die bei Erstellung schon auffielen:

Icke275 schrieb:

1
2
mysql> grant usage on *.* to 'www-data'@'localhost' identified by 'geheim';
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'identified by 'geheim'' at line 1

Erfolgreich war dann:

1
2
mysql> grant usage on *.* to 'www-data'@'localhost';
Query OK, 0 rows affected (0.33 sec)

Jedenfalls soweit ich das beurteilen kann, da ich noch nicht bis zur Nextcloud-Installation vorgedrungen bin und daher nicht weiß, ob die Datenbank wirklich funktionieren wird.

Kann das jemand nachvollziehen und sollte die Anleitung entsprechend angepasst werden?

Cranvil schrieb:

Ich habe mir das mal angesehen: Die MySQL-Version 5.7 von 18.04 unterstützt das GRANT-Statement noch mit integrierter Benutzeranlage, während MySQL 8.0 aus 20.04 es notwendig macht, Benutzeranlage und Berechtigungsvergabe zu trennen.

Da ich noch keinerlei Erfahrung mit MySQL habe: Wie kann ich die (vermutlich) notwendige Berechtigung setzen oder wo finde ich diese Information? In der MySQL-Dokumentation https://dev.mysql.com/doc/ wurde ich mangels Idee zum Ansatzpunkt leider nicht selbst fündig.

Danke,

Icke

sebix Team-Icon

Ehemalige

Anmeldungsdatum:
14. April 2009

Beiträge: 5584

Ich tippe auf

1
CREATE USER 'www-data' IDENTIFIED BY 'geheim';

Siehe https://dev.mysql.com/doc/refman/8.0/en/create-user.html

Icke275

(Themenstarter)

Anmeldungsdatum:
31. Dezember 2012

Beiträge: 130

sebix schrieb:

Ich tippe auf

1
CREATE USER 'www-data' IDENTIFIED BY 'geheim';

Siehe https://dev.mysql.com/doc/refman/8.0/en/create-user.html

Ich weiß nicht: Das CREATE war der Schritt vor GRANT, insofern müsste der Nutzer angelegt worden sein. Ich befürchte inzwischen, dass ich die Admin und/oder Nutzer des MySQL-Servers und/oder der Nextcloud unzulässig entweder gleichgesetzt oder getrennt vergeben habe. Wahrscheinlich ist nun nach mehreren Versuchen das einfachste, den SQL-Server noch einmal komplett zu deinstallieren und von vorne anzufangen. Mir ist nur nicht klar, wo der (mein) Fehler liegt und wie ich ihn finden kann.

Wenn ich es (jetzt) richtig verstanden habe:

- Der SQL-Server-Admin ist mit root des Ubuntu-Servers verknüpft, ich melde mich über eine root-Shell mit "meiner" Name/Passwort-Kombination des Ubuntu-Servers auch bei mysql an.

- Der Nextcloud-Admin ist eine unabhängige "Identität", die ich in der grafischen Installation von Nextcloud festlege.

- Der Nextcloud-Datenbankname und -Nutzer und dessen Passwort, die ich in der Nextcloud-Installation angebe, muss mit der (vorher angelegten) SQL-Datenbank, dessen Nutzer und Passwort identisch sein.

Korrekt? Oder bin ich auf dem Holzweg?

sebix Team-Icon

Ehemalige

Anmeldungsdatum:
14. April 2009

Beiträge: 5584

Icke275 schrieb:

sebix schrieb:

Ich tippe auf

1
CREATE USER 'www-data' IDENTIFIED BY 'geheim';

Siehe https://dev.mysql.com/doc/refman/8.0/en/create-user.html

Ich weiß nicht: Das CREATE war der Schritt vor GRANT, insofern müsste der Nutzer angelegt worden sein.

Na dann eben, wenn nur das Passwort fehlt:

1
ALTER USER 'www-data' IDENTIFIED BY 'geheim';

- Der Nextcloud-Datenbankname und -Nutzer und dessen Passwort, die ich in der Nextcloud-Installation angebe, muss mit der (vorher angelegten) SQL-Datenbank, dessen Nutzer und Passwort identisch sein.

Ja, klar muessen die zusammenpassen. Sonst hat ja Nextcloud nicht die Passenden Logindaten fuer die Datenbank.

Icke275

(Themenstarter)

Anmeldungsdatum:
31. Dezember 2012

Beiträge: 130

So, es scheint an den (von mir vermurksten) Passworten gelegen zu haben. Die Lösung war:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
mysql> create database if not exists nextcloud;
Query OK, 1 row affected, 1 warning (0.36 sec)

mysql> alter user 'www-data'@'localhost' identified by 'DATENBANKPASSWORT';
Query OK, 0 rows affected (0.45 sec)

mysql> grant all privileges on nextcloud.* to 'www-data'@'localhost';
Query OK, 0 rows affected (0.45 sec)

mysql> flush privileges; 
Query OK, 0 rows affected (0.35 sec)

Dann anschließend die entsprechende Dateneingabe in der Webmaske von Nextcloud.

Danke für die Tipps,

Icke

Cranvil

Anmeldungsdatum:
9. März 2019

Beiträge: 990

Super, dass es nun klappt. Eine kleine Anmerkung noch: Der Benutzername für die Anmeldung der Anwendung an der Datenbank muss nicht mit dem Benutzernamen übereinstimmen, der den Webserverdienst ausführt.

Das ist bei einer einzigen datenbankgestützten Anwendung nicht so schlimm. Sobald du jedoch mehrere unterschiedliche Anwendungen betreibst, hilft die Verwendung von getrennten und nachvollziehbar benannten Benutzerkonten bei der Absicherung der einzelnen Anwendungen gegeneinander und natürlich auch der Übersicht.

Icke275

(Themenstarter)

Anmeldungsdatum:
31. Dezember 2012

Beiträge: 130

Na toll, nu' bin ich wieder raus! 😉

Deinen zweiten Satz habe ich verstanden und halte das bei meinen inzwischen unzähligen Benutzer-Passwort-Kombinationen (gelobt seien die Passwortmanager!) auch so. Zum abschließenden Verständnis, welcher Benutzer denn nun welcher ist, helft mir doch bitte nochmal kurz auf die Sprünge:

Cranvil schrieb:

Super, dass es nun klappt. Eine kleine Anmerkung noch: Der Benutzername für die Anmeldung der Anwendung an der Datenbank muss nicht mit dem Benutzernamen übereinstimmen, der den Webserverdienst ausführt.

Meine Passwortkaskade mal ganz aus dem Urschlamm:

Der (physische) Server mit Ubuntu 20.04 heißt "majestix", hat Nutzer "icke" und Passwort "ubuntu-pwd".

Darauf läuft der Apache-Server, den steuere ich ggf. über sudo, also mit "icke" und "ubuntu-pwd".

Darauf wiederum kommt der mySQL-Server, dem ich bei mir kein extra root-Passwort gegeben habe (steuere ihn über die Linux-rootshell), Linux selbst steuert ihn über den automatisch erstellten Benutzer "debian-sys-maint", dessen Passwort in /etc/mysql/debian.cnf im Klartext abgelegt ist.

Mein Datenbankbenutzer füŕ die NextCloud-Datenbank ist nun schließlich "www-data" mit dem Passwort "DATENBANKPASSWORT".

Bei letzterem stolpere ich gerade über Apache 2.4 (Abschnitt „Rechte“), "www-data" ist die Gruppe, mit der der Webserver arbeitet, insofern hätte ich mir da besser was anderes ausgesucht, vielleicht "nextcloud-user", was dann Deinem letzten Satz entspräche und weitere Optionen (weitere Datenbanken mit anderen Nutzer-Passwort-Kombis) offenhält.

Habe ich das richtig verstanden?

Cranvil

Anmeldungsdatum:
9. März 2019

Beiträge: 990

Im Groben und Ganzen hast du das richtig verstanden.

Die meisten komplexeren Programme im Serverbereich haben eine eigene Benutzerverwaltung, aber auch die Fähigkeit, die Benutzer aus anderen Quellen heranzuziehen. So kann die Situation entstehen, dass du zwar im Betriebssystem, dem Webserver, dem Datenbankserver und der Applikation selbst einen Benutzer "ben" hast, es sich jedoch nie um dieselbe Person handelt. Oder alle vier Komponenten benutzen eine gemeinsame Quelle (z.B. einen Verzeichnisdienst über LDAP) und bei "ben" handelt es sich wirklich in jedem Fall um dieselbe Person.

Antworten |