Frage

Ich versuche mysqldump zu verwenden, um ein Schema zu entleeren, und es funktioniert meistens, aber ich lief in eine Kuriosität: die -p oder --password Option scheint, wie es etwas anderes als Einstellung das Passwort zu tun (wie die man Seite und --help Ausgang sagen, es soll).

Im Einzelnen sieht es aus wie es tut, was hier angegeben: http: //snippets.dzone. com / Beiträge / show / 360 -. das heißt, dump die Datenbank einstellen

Zu meiner etwas abwegig Anspruch zu unterstützen, kann ich Ihnen sagen, dass, wenn ich nicht angeben, die --password (oder -p) Option, den Befehl druckt die Verwendungsanweisung und tritt mit einem Fehler. Wenn ich es tun geben, ist mir sofort aufgefordert, ein Passwort einzugeben (!), Und dann die angegebene Datenbank in der --password Option abgeladen (oder ein Fehler im üblichen Fall gegeben, dass ein Passwort keine Datenbanknamen passenden angegeben wurden) .

Hier ist ein Transkript:

    $ mysqldump -u test -h myhost --no-data --tables --password lose
    Enter password: 
    -- MySQL dump 10.10
    mysqldump: Got error: 1044: Access denied for user 'test'@'%' to
    database 'lose' when selecting the database

Also, was soll das? Ist das der Weg, dies funktionieren soll? Es scheint sicher nicht sinnvoll, noch übernimmt sie die offizielle Dokumentation entsprechen. Und schließlich, wenn dies so, wie es funktioniert, wie ich das Passwort angeben sollte in einem automatisierten Auftrag verwendet werden? Mit expect ???

Ich bin mit mysqldump Ver 10.10 Distrib 5.0.22, for pc-linux-gnu (i486).

War es hilfreich?

Lösung

Von Mann mysqldump:

  

- Passwort [= password], -p [password]

     

Das Passwort zu verwenden, wenn die Verbindung zum Server. Wenn du benutzt   die Kurzform der Option (-p), können Sie kein Leerzeichen zwischen der Option             und das Passwort ein. Wenn Sie das Kennwort Wert nach weglassen der             --password oder -p-Option auf der Kommandozeile, werden Sie aufgefordert, für             ein.
            Die Angabe soll ein Passwort auf der Kommandozeile in Betracht gezogen werden             unsicher. Siehe Abschnitt 6.6, "Wie Sie Ihre Kennwörter sicher".

syntaktisch, Sie sind nicht die --password Schalter funktioniert nicht richtig. Als solche sieht die Befehlszeilenparser Ihre Verwendung von „verlieren“ als Stand-alone-Argument, das interpretiert als Datenbanknamen mysqldump, wie es wäre, wenn Sie einen einfacheren Befehl wie mysqldump lose versuchen würde

Um dies zu beheben, verwenden Sie das Passwort mit --password=lose oder -plose oder verwenden Sie einfach -p oder --password und bei entsprechender Aufforderung ein.

Andere Tipps

Eine weitere Option ist die Datei ~ / .my.cnf (Berechtigungen müssen 600 sein) zu erstellen.

Fügen Sie diese auf die .my.cnf Datei

[client]
password=lose

Auf diese Weise können Sie sich als MySQL-Benutzer eine Verbindung, die tatsächlich ohne dass ein Kennwort erforderlich das Passwort eingeben. Sie brauchen noch nicht einmal die -p oder --password.

Sehr praktisch für Scripting mysql & mysqldump-Befehle.

fand ich, dass dies der Fall ist, wenn Sie Ihr Passwort Sonderzeichen in ihm hat. Das mysql Passwort hat hier ein! in ihm, so habe ich == password = ‚xxx! xxxx‘ zu tun, denn es corrrectly zu arbeiten. Beachten Sie die "Mark.

Ich bin nicht sicher, ob es für die --password Version funktioniert, aber wenn Sie -p verwenden, können Sie das Kennwort angeben, unmittelbar danach (der Schlüssel ein Leerzeichen nicht enthalten ist):

mysqldump -pmypassword ...

Versuchen a '=' zwischen --password verlieren wie Abdrucken:

--password=lose

Wenn Sie -p, dann kann es keinen Raum zwischen dem -p und dem Passwort, das heißt ‚-plose‘.

Haben Sie versucht, --password = was auch immer-Passwort-ist?

Vielleicht fehlt mir die Frage, aber das ist, was ich tue das Tool auszuführen.

Wenn Sie die -p oder --password ohne Argument verwenden, erhalten Sie eine Aufforderung erhalten, fragen, ein Passwort einzugeben.

Wenn Sie ein Passwort auf der Kommandozeile angeben möchten, müssen Sie -pYOURPASSWORD oder --password = IhrKennwort verwenden. Beachten Sie, dass es keinen Raum nach -p, und es gibt ein „=“ nach --password schreiben.

In Ihrem Beispiel fragt mysqldump nach einem Passwort, und dann behandelt „verlieren“, wie der Datenbankname. Wenn das Ihr Passwort ist, sollten Sie eine „=“ enthalten

Die Option -p erfordert kein Argument. Sie legen sich lediglich -p oder --password um anzuzeigen, dass Sie ein Passwort verwenden werden auf die Datenbank zuzugreifen. Der Grund, es ist die Datenbank Dumping genannt, was auch immer Sie nach setzen -p ist, dass das letzte Argument für mysqldump der Name der Datenbank enthalten sein sollte (oder --all-Datenbanken, wenn Sie sie alle wollen) dump wollen.

@ Antwort Nathans ist auch wahr. Sie können das Passwort angeben sofort im Anschluss an die Option -p (nützlich in Skripten und solche, wo man es nicht von Hand eingeben, nachdem der Befehl ausgeführt wird).

- Passwort [= password]

Hier ist die Dokumentation

Vielleicht ist Ihr Benutzer „test“ hat nicht die Erlaubnis, Ihre „verlieren“ Datenbank zugreifen?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top