mariaDB 10 mysqldump Fehler

Status
Für weitere Antworten geschlossen.

wired2051

Benutzer
Mitglied seit
17. Mrz 2010
Beiträge
903
Punkte für Reaktionen
12
Punkte
44
Ich habe das Pakert mariaDB installiert und will (wieder) ein Backup der Datenbank machen. Also habe ich mich mit ssh -p PORT USER@IP_DER_DS420 eingeloggt.

Code:
mysqldump -u USER -p --all-databases > DATEI.sql

Bringt leider nur die Meldung

mysqldump: Got error: 1045: "Access denied for user 'USER'@'localhost' (using password: YES)" when trying to connect

Ich gehe davon aus, dass das Passwort stimmt. Kann es sein, dass ich mysqldump mit dem Port nutzen muss, der im DSM7 definiert ist?
 

Adama

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
05. Mrz 2013
Beiträge
2.149
Punkte für Reaktionen
737
Punkte
154
Port musst du nicht mit angeben, läuft ja lokal auf der Syno.

Ich benutze folgende Parameter für mysqldump:
Code:
-u<Benutzer> -p<Passwort> --all-databases --single-transaction --quick --lock-tables=false
 

tproko

Benutzer
Sehr erfahren
Mitglied seit
11. Jun 2017
Beiträge
2.117
Punkte für Reaktionen
256
Punkte
129
Wahrscheinlich fehlen dir noch Grants für die Verbindung.

Schau mal hier
 

wired2051

Benutzer
Mitglied seit
17. Mrz 2010
Beiträge
903
Punkte für Reaktionen
12
Punkte
44
Ich benutze folgende Parameter für mysqldump:
Code:
-u<Benutzer> -p<Passwort> --all-databases --single-transaction --quick --lock-tables=false

Danke! -u<Benutzer> ist mir klar aber -p<Passwort> nicht. Gibst Du das Passwort direkt an? Ich warte immer auf die Abfrage.

mysqldump -? sagt single-transaction works ONLY for tables stored in storage engines which support multiversioning (currently only InnoDB does). Ausserdem sind quick und lock-tables bei mir TRUE.

Wahrscheinlich fehlen dir noch Grants für die Verbindung.

Beim einrichten von MariaDB 10 habe ich folgende Befehle ausgeführt:

Code:
create database nextcloudDB;
create user 'USER'@'localhost' identified by 'NEXTCLOUD_USER_PASSWORT';
grant all privileges on nextcloudDB.* to 'USER'@'%' identified by 'NEXTCLOUD_USER_PASSWORT';

Kann ich irgendwie prüfen, ob die Privilegien noch vergeben sind?
 

Adama

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
05. Mrz 2013
Beiträge
2.149
Punkte für Reaktionen
737
Punkte
154
Ich nutze das in einem Skript, deswegen der Parameter...
 

wired2051

Benutzer
Mitglied seit
17. Mrz 2010
Beiträge
903
Punkte für Reaktionen
12
Punkte
44
Interessant. Ich würde gerne täglich ein Dump machen, kann aber nicht einmal feststellen ob die Privilegien noch richtig vergeben sind. ;(

Kannst Du das Script (in den wesentlichen Teilen) hier veröffentlichen?
 
Zuletzt bearbeitet von einem Moderator:

Adama

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
05. Mrz 2013
Beiträge
2.149
Punkte für Reaktionen
737
Punkte
154

Anhänge

  • skript.zip
    848 Bytes · Aufrufe: 3

wired2051

Benutzer
Mitglied seit
17. Mrz 2010
Beiträge
903
Punkte für Reaktionen
12
Punkte
44
Danke. Das ist mir allerdings zu kpompliziert. Mir reicht ein regelmässiger mysqldump all-databases in die immer gleiche Datei. Die Versionierung / aufräumen übernimmt das Backup Programm.
 

Adama

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
05. Mrz 2013
Beiträge
2.149
Punkte für Reaktionen
737
Punkte
154
Du brauchst ja nur den Wert für KEEP auf 1 runtersetzen.

Ich möchte halt die Datenbanken getrennt gesichert haben, damit ich auch einzelne wieder herstellen kann...
 

wired2051

Benutzer
Mitglied seit
17. Mrz 2010
Beiträge
903
Punkte für Reaktionen
12
Punkte
44
Stimmt. Ich werde mir das Skript bei Gelegenheit genauer ansehen (und verm. Fragen stellen) aber jetzt muss ich ersteinmal mysqldump hinkriegen. :cry:
 

AndiHeitzer

Benutzer
Sehr erfahren
Mitglied seit
30. Jun 2015
Beiträge
3.332
Punkte für Reaktionen
622
Punkte
174
Code:
create database nextcloudDB;
create user 'USER'@'localhost' identified by 'NEXTCLOUD_USER_PASSWORT';
grant all privileges on nextcloudDB.* to 'USER'@'%' identified by 'NEXTCLOUD_USER_PASSWORT';
Kann ich irgendwie prüfen, ob die Privilegien noch vergeben sind?
Du verwendest zwei unterschiedliche User, das kann nicht funktionieren!

In der ersten Zeile erzeugst Du die DB.
In der zweiten Zeile legst Du einen User an: 'USER'@'localhost'
In der dritten Zeile erteilst Du Rechte für den User: 'USER'@'%'

Der 'USER'@'localhost' kann also nicht auf die erzeugte Datenbank zugreifen.

Um zu prüfen, wer welche Rechte hat, brauchst Du folgenden Befehl auf der DB-Konsole:
=> show grants for user 'user'@'localhost';
bzw.
=> show grants for user 'user'@'%';
 

AndiHeitzer

Benutzer
Sehr erfahren
Mitglied seit
30. Jun 2015
Beiträge
3.332
Punkte für Reaktionen
622
Punkte
174
Das ist aber ein und derselbe Benutzer. Nur der Kontext in welchem dieser zugreifen darf. Oder nicht?
Nicht wirklich ....
Wenn ich einen Benutzer USER@% anlege, dann kann es je nach Config des DB-Servers sein, dass er als USER@LOCALHOST oder als USER@127.0.0.1 oder USER@123.2.3.4 auftaucht ...

Soweit ich das oben verstanden habe, wurde ein USER@LOCALHOST angelegt, aber keine GRANTs vergeben.
Wenn ich dann dem USER@% GRANTs vergebe, dann bekommt der USER@LOCALHOST trotzdem nix zu sehen, weil es dafür einen Benutzer gibt, der eindeutig identifiziert werden kann.

Basierend auf dieser Annahme würde ich den USER@LOCALHOST löschen/droppen und dann sollte der Zugriff auf die DB klappen.
Alternativ würde auch folgendes helfen: grant all privileges on nextcloudDB.* to 'USER'@'LOCALHOST'

Wenn die Sicherheit etwas erhöht werden soll, wäre es sinnvoll, einen Benutzer anzulegen, der aus dem örtlichen Subnetz zugreifen darf. Also sowas wie USER@192.168.% oder USER@LOCALDOMAIN% ...
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat