質問

スキーマをダンプするために mysqldump を使用しようとしていますが、ほとんど機能しますが、好奇心に陥りました: -p または-password オプションは、パスワードの設定以外のことを行っているようです( man ページと-help の出力が示すとおり)。

具体的には、ここで示されていることを実行しているように見えます: http://snippets.dzone。 com / posts / show / 360 -つまり、データベースをダンプに設定します。

やや奇妙な主張をサポートするために、-password (または -p )オプションを指定しない場合、コマンドは使用法を出力することを伝えることができますステートメントで終了し、エラーで終了します。指定した場合、すぐにパスワード(!)の入力を求められ、その後-password オプションで指定されたデータベースがダンプされます(または通常の場合、エラーが発生しますどのデータベース名とも一致しないパスワードが指定されました。)

これはトランスクリプトです:

    $ 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

では、何が得られますか?これはこれが機能するはずの方法ですか?それは確かに意味をなさないように思われ、公式文書と一致しません。そして最後に、これが機能する場合、自動化されたジョブで使用されるパスワードをどのように指定するのでしょうか? expect ???

を使用する

mysqldump Ver 10.10 Distrib 5.0.22、pc-linux-gnu(i486)を使用しています

役に立ちましたか?

解決

man mysqldumpから:

  

-password [= password]、-p [password]

     

サーバーに接続するときに使用するパスワード。使用する場合   短いオプション形式(-p)、オプション間にスペースを入れることはできません             およびパスワード。次のパスワード値を省略した場合             コマンドラインで--passwordまたは-pオプションを選択すると、プロンプトが表示されます             one。
            コマンドラインでパスワードを指定することを検討する必要があります             安全でない。セクション6.6、「パスワードを安全に保つ」を参照してください。

構文的には、-passwordスイッチを正しく使用していません。そのため、コマンドラインパーサーは、「失う」の使用を確認しています。 mysqldumpが mysqldump lose

のような単純なコマンドを試みる場合のようにデータベース名として解釈するスタンドアロン引数として

これを修正するには、-password = lose または -plose を使用するか、単に -p または-passwordを使用してくださいプロンプトが表示されたらパスワードを入力します。

他のヒント

別のオプションは、ファイル〜/ .my.cnf を作成することです(アクセス許可は600である必要があります)。

これを.my.cnfファイルに追加します

[client]
password=lose

これにより、実際にパスワードを入力しなくても、パスワードが必要なMySQLユーザーとして接続できます。 -pや--passwordも必要ありません。

mysql&のスクリプト作成に非常に便利mysqldumpコマンド。

パスワードに特殊文字が含まれている場合、これが発生することがわかりました。ここのmysqlパスワードには!その中で、私はそれが正しく動作するために== password = 'xxx!xxxx'をしなければなりません。 'マークに注意してください。

-passwordバージョンで機能するかどうかはわかりませんが、-pを使用すると、すぐにパスワードを指定できます(キーにスペースを含めることはできません):

mysqldump -pmypassword ...

--passwordの間に「=」を入れてみてください:

--password=lose

-pを使用する場合、-pとパスワードの間にスペースを入れないでください(例: '-plose')。

-password = whatever-password-isを試しましたか?

おそらく質問がありませんが、それがツールを実行するために行うことです。

引数なしで-pまたは--passwordを使用すると、パスワードの挿入を求めるプロンプトが表示されます。

コマンドラインでパスワードを指定する場合は、-pYOURPASSWORDまたは--password = YOURPASSWORDを使用する必要があります。 -pの後にスペースがなく、" ="があることに注意してください。 --passwordの後に署名します。

あなたの例では、mysqldumpはパスワードを要求し、「失う」を扱います。データベース名として。それがパスワードだった場合、" ="

を含める必要がありました。

-pオプションには引数は必要ありません。 -pまたは--passwordを入力するだけで、データベースにアクセスするためにパスワードを使用することを示します。 -pの後に指定した名前のデータベースをダンプする理由は、mysqldumpの最後の引数が、ダンプするデータベースの名前(または、必要な場合は--all-databases)であることです。

@Nathanの答えも正しい。 -pスイッチの後にパスワードをすぐに指定できます(スクリプトなどで便利です。コマンドの実行後に手で入力することはできません)。

-password [= password]

ドキュメント

ユーザーの" test"あなたの「失う」にアクセスする権限がありません。データベース?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top