mariadb - official : mehrere Databanken mit verschiedenen Usern in einem Docker


ullibelgie

Recommended Posts

@mgutt Hallo, ich hatte wegen eines anderen Thema Kontakt mit ich777, der mich darauf hinwies nicht wegen jeder neuen Datanbank einen neuen mariadb container zu installieren, sondern neue Datenbanken  und neue user in dem bestehenden Container anzulegen.

 

Ich habe Deinen Container mariadb official mit einer Datenbank 'Nextcloud' in Gebrauch

Bevor ich jetzt unqualifiziert 🤯 im Terminal des Container herum mache, frage ich lieber mal, wie ich am besten/saubersten in dem bestehenden mariadb docker eine weitere Datenbank erzeugen sollte. Datenbank user und permissions müssen natürlich auch gesetzt werden.

 

Es gibt verschiedene Anleitungen und auch in der MariaDB Documentation einges, aber ich finde es besser hier direkt den Container Autor anzusprechen. In englischen Support Track hatte ich nicht direkt einen entsprechenden Eintrag gesehen.

Ich möchte die Datenbank von ausserhalb Unraid's ansprechen von Clients im LAN Netzwerk

 

Danke für Hilfestellung/Hinweise

Link to comment
2 hours ago, ullibelgie said:

Es gibt verschiedene Anleitungen und auch in der MariaDB Documentation einges

 

Genau.

 

Ich kenne den speziellen Container nicht, aber ist das nicht die übliche Kombination der folgenden Befehle in der Container Konsole:

 

mysql -uroot -p

create user 'username' identified by 'password';
create database if not exists dbname;
grant all privileges on dbname.* to 'username' identified by 'password';

 

Edited by hawihoney
Link to comment

Wie @Pete0 schrieb, nutze auch ich den "Adminer"-Container.

Super easy zu bedienen.

 

Musst halt schauen @ullibelgie, ob Du ein root-Passwort für die MariaDB manuell vergeben hast:

Zu finden in den Settings des MariaDB-Docker "show more settings":

2023810470_Bildschirmfoto2023-03-07um17_58_50.thumb.png.50eed16fde0c331728b50280f44ad26f.png

 

Und falls Du keines manuell vergeben hast, steht in den Settings des MariaDB-Containers oberhalb in blauer Schrift, wie dann zu verfahren ist.

Edited by saber1
Link to comment

Nur um es abschliessend noch zu sagen, werd ich dann als Newby erstmal die Finger davon lassen, in einem Container viele verschiedene Datenbanken und User zu beherbergen. Die Gefahr mich mal zu vertun ist mir zu gross.... bin ja auch nicht mehr der jüngste und die "dummen Fehler" häufen sich eben...

 

Der ganze Excurs zeigt mir auch, dass ich mit den Dockern keineswegs Routine habe...

Link to comment
3 hours ago, mgutt said:

Ich halte also nicht viel von mehreren Datenbanken in einem Container. Mir erschließt sich auch nicht der Mehrwert.

Du hast nur einen Container... ;)

 

Und was spricht dagegen in einem Container mehrere Datenbanken zu haben, das sind doch keine Anwenungen... Wobei wenn wir uns ehrlich sind welcher Container ist eigentlich noch im "Docker Way" designed?

So ziemlich keiner mehr, sieh dir nur mal SWAG an, oder NPM, in keinem dieser Container läuft nur mehr eine Anwenungen, wobei das ist ja auch ein anderes Thema.

 

Also so wie ich das sehe spricht nichts dagegen mehrere Datenbanken in einem Container zu haben weil der dafür ja auch gemacht ist und selbst bei den meisten Docker Compose files kannst du dort selbst eine Datenbank eintragen und musst nicht immer eine neue installieren.

 

Sind nur meine 2 Euro Cent... ;)

  • Like 1
Link to comment
52 minutes ago, ich777 said:

in keinem dieser Container läuft nur mehr eine Anwenungen

 

Dann müsste man MariaDB und Nextcloud in einen Container packen - dann wäre das vergleichbar.

 

Ich denke @mgutt liegt richtig auch wenn ich selbst dazu umdenken muss. Komme selbst aus der fetten DB2 Welt und meine "alte" Einstellung ist/war: Das ist Server-Software, designed um alles und jeden hoch performant und umfassend zu bedienen. Gibt's einen Engpass den ich nicht durch Tuning von Server oder Anwendung eliminieren kann, dann kaufste halt potentere Hardware.

 

Deshalb habe ich mir nie die Mühe gemacht den Ressourcenbedarf mehrerer Instanzen bzw. Datenbanken auf einem Server mit dem Bedarf mehrerer Server-Installationen zu vergleichen. Ich tippe mal, dass erstere gewinnen würden - was für einen einzelnen Container sprechen würde.

 

Trotzdem: Ein einzelner Datenbank-Server, in einem einzelnen Container, der Datenbanken mehrerer anderer Container verwaltet, widerspricht IMHO einfach dem Container Konzept. Löse einfach die Anwendung x mit "ihrer" Datenbank y raus und schieb sie woanders hin - geht nicht so einfach.

 

Aber wenn man das zu Ende denkt, dann bräuchte man auch mehrere NPM, SWAG, Apache, ... Container - für jede Anwendung einen.

 

Edited by hawihoney
Link to comment

Ich denke, hier gibt es kein "Richtig" oder "Falsch".

Wer gerne mehrere Container pro DB anlegen möchte, soll es tun.

Wer gerne mehrere DB's in einem Container anlegen möchte, soll es tun.

Beides ist möglich.

Ich habe zwei MariaDB-Container. In einem werden zwei DB's verwaltet. In dem anderen nur eine.

Nutze also beide Möglichkeiten zugleich. 😉

  • Like 1
Link to comment
19 minutes ago, hawihoney said:

Deshalb habe ich mir nie die Mühe gemacht den Ressourcenbedarf mehrerer Instanzen bzw. Datenbanken auf einem Server mit dem Bedarf mehrerer Server-Installationen zu vergleichen. Ich tippe mal, dass erstere gewinnen würden - was für einen einzelnen Container sprechen würde.

Ich gehe eher vom Gegenteil aus. Mehrere Instanzen heißt besseres Multi-Threading und die Datenbank kann auch in jeder Installation separat entscheiden was in den Cache gehört und was nicht. Also optimal auf die jeweilige Applikation ausgelegt.

 

Die anderen Argumente hatte ich in dem Link bereits genannt:

- man kann direkt sehen was eine Applikation in der Datenbank belegt und wie diese ausgelastet ist

- man kann ein simples dateibasiertes Backup vom kompletten Container machen und muss gar nicht erst mit sqldump arbeiten

- eine Applikation spielt nicht mit dem neuesten Update der Datenbank zusammen? Dann machen wir eben bei dieser einen Datenbank kein Update. Die anderen Datenbanken können dagegen unabhängig aktualisiert werden

- wenn ich zb die Datenbank von Nextcloud aktualisiere, dann stoppe ich Nextcloud, dann stoppe den entsprechenden DB Container und aktualisiere die DB, starte die DB, check die Logs.. alles gut. Starte Update von Nextcloud und starte Nextcloud. Check dann auch noch mal die Logs. Wenn irgendwas dabei in die Hose geht, kann ich mit wenigen Schritten auf den Zustand von davor, ohne dass ich andere Applikationen stoppen muss oder gar Daten von denen verliere, weil ich einen riesen Datenbank-Container restoren muss.

- Adminer habe ich noch nie gebraucht, denn ich führe eben keine SQL Statements aus oder exportiere / importiere irgendwelche Dumps. Ich hatte übrigens auch noch keinen einzigen Kunden, der Adminer ordentlich abgesichert hat und alle speicherten fleißig ihre DB-Rootpasswörter in der Adminer-GUI

 

1 hour ago, ich777 said:

Und was spricht dagegen in einem Container mehrere Datenbanken zu haben

Es ist für den User komplizierter und es widerspricht dem Template des Containers, dass nur eine Datenbank erstellen kann. Alles darüber hinaus kann man ja gerne empfehlen, doch dann bitte auch mit entsprechender Anleitung. @ullibelgie hat dich zB in dem anderen Thread mehrfach gefragt wie das geht. Aus deiner Sicht ist das easy-peasy. Für andere offensichtlich nicht.

Link to comment
6 hours ago, mgutt said:

Mehrere Instanzen

 

Du hast meinen Punkt nicht erfasst. Bin doch bei Dir ;-)

 

Im Übrigen können mehrere Instanzen auf einer einzelnen Server-Installation gebildet werden inkl. eigenständiger Konfigurierbarkeit. Eine komplette Installation beinhaltet so viel Krimskrams und bindet so viele Ressourcen, das bei mehreren Instanzen auf einer Server-Installation einfach wegfällt.

 

Ich kenne eine Umgebung, da ist die zentrale Datenbank im Backend eine DB2. Im Frontend werkeln dutzende Web-Server auf dem statische Inhalte in MySQL vorgehalten werden. Das Frontend bestehend aus Web-Server und MySQL-Server wird einmal erzeugt, in einen Container gepackt und dutzendfach ausgerollt.

 

Aber wie gesagt: Bin bei Dir. Bei "Leichtgewichten" wie MariaDB mache ich mir da eh keinen Kopf.

 

Edited by hawihoney
Link to comment
8 hours ago, mgutt said:

hat dich zB in dem anderen Thread mehrfach gefragt wie das geht. Aus deiner Sicht ist das easy-peasy. Für andere offensichtlich nicht.

Hab ich ein paar posts weiter oben gepostet die Anleitung im anderen Thread und er hat dann auch geschrieben er weiß jetzt wie es geht... ;)

 

Aber, ich weiß wie gesagt nicht wie es sich mit dem offiziellen Container verhält da ich den nicht benutze und ob der wirklich nur für eine Datenbank ausgelgt ist oder nicht, kann ich mir aber nicht vorstellen, oder doch...?

 

8 hours ago, hawihoney said:

Dann müsste man MariaDB und Nextcloud in einen Container packen - dann wäre das vergleichbar.

Deshalb hab ich auch geschrieben es gibt fast keine Container mehr die den "Docker Way" nutzen, btw. es gibt auch solche container, tud aber nichts zur sache... ;)

 

 

Meine Ansicht dazu, es gibt hier kein richtig oder falsch, das obliegt immer dem User selbst wie er es macht und aus meiner Sicht ist es rein der Überslichtlichkeit halber auf Unraid leichter eine MariaDB zu haben und nicht mehrere, auch schon vom Backup her viel einfacher <- das ist meine Meinung, es gibt aber sicher auch andere die das wieder anders sehen und sich pro Container eine MariaDB anlegen. :)

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.