0

コマンド:

ssh xxx.xxx.xxx.xxx \"mysql -u root -password \\\"grant all privileges on rcf_275d315.* to rfc_user@localhost identified by \'W27j453frxrff23\'\\\"\"

エラーが発生します:

bash: mysql -u root -p97yf2beiru3trf289 "grant all privileges on rcf_275d315.* to rfc_user@localhost identified by 'W27j453frxrff23'": command not found

bashによって返された文字列をコピーすると、ローカルで実行を終了します。リモートサーブに貼り付けると動作します。

何らかの理由で、sshでは機能せず、エラーを返します。

mysql -u root -p97yf2beiru3trf289 "grant all privileges on rcf_275d315.* to rfc_user@localhost identified by 'W27j453frxrff23'": command not found

アップデート:

私はいくつかのバリエーションを試しましたが、成功しませんでした:

ssh xxx.xxx.xxx.xxx \"mysql -u root -pBOY8o7ubio87gubip7 \\\"grant all privileges on rfc_275d315.* to rfc_user identified by \'KUG34dY976fyvc768g\'\\\"\"

結果:

bash: mysql -u root -pBOY8o7ubio87gubip7 "grant all privileges on rfc_275d315.* to rfc_user identified by 'KUG34dY976fyvc768g'": command not found


ssh xxx.xxx.xxx.xxx \"mysql -u root -pBOY8o7ubio87gubip7 \\"grant all privileges on rfc_275d315.* to rfc_user identified by \'KUG34dY976fyvc768g\'\\"\"

結果:

bash: -c: line 0: unexpected EOF while looking for matching `"'
bash: -c: line 1: syntax error: unexpected end of file


ssh xxx.xxx.xxx.xxx mysql -u root -pBOY8o7ubio87gubip7 \\"grant all privileges on rfc_275d315.* to rfc_user identified by \'KUG34dY976fyvc768g\'\\"

結果:

mysql  Ver 14.14 Distrib 5.1.66, for redhat-linux-gnu (x86_64) using readline 5.1
Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective

所有者。

Usage: mysql [OPTIONS] [database]
  -?, --help          Display this help and exit.



ssh xxx.xxx.xxx.xxx mysql -u root -pBOY8o7ubio87gubip7 \\\"grant all privileges on rfc_275d315.* to rfc_user identified by \'KUG34dY976fyvc768g\'\\\"

結果:

mysql  Ver 14.14 Distrib 5.1.66, for redhat-linux-gnu (x86_64) using readline 5.1
Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective

所有者。

Usage: mysql [OPTIONS] [database]
  -?, --help          Display this help and exit.

それでも、問題がどこにあるのかわからないでください。助けてくれてありがとう。

更新:echoがファイルに保存されたとき:ssh xxx.xxx.xxx.xxx "echo mysql -u root -piugiu -e\\"rfc_275d315。*のすべての特権を\'in76bn6bgb876n\'\\">rfcで識別されるrfc_userに付与します/echo.txt "

私はこれをファイルで取得します:mysql -u root -piugiu -e"'in76bn6bgb876n'で識別されるrfc_userにrfc_275d315。*のすべての特権を付与します"

これは適切なコマンドであり、リモートサーバーのコマンドラインにコピーして貼り付けると、正常に機能します。

エコーが削除された場合:ssh xxx.xxx.xxx.xxx "mysql -u root -piugiu -e\\"rfc_275d315。*のすべての特権を\'in76bn6bgb876n\'\\ "> rfc/echo.txtで識別されるrfc_userに付与します「」

テキストファイルには、mysqlの使用法に関する情報が含まれています。使用法:mysql [OPTIONS][database]-?,--helpこのヘルプを表示して終了します。

4

2 に答える 2

2
ssh xxx.xxx.xxx.xxx 'mysql -u root -pBOY8o7ubio87gubip7 -e "grant all privileges on rfc_275d315.* to rfc_user@localhost identified by '\''KUG34dY976fyvc768g'\''" yourdatabase'

動作しているはずです。-eステートメントを渡すことができるMySQLクライアントパラメータを忘れました

編集1:

固定引用

bashでは、引用の2つの方法を変えることができます(他の多くの言語と同じように)

1.弱い引用:二重引用符

例えばecho "$PATH"

弱い引用符で囲まれた文字列には、次の解釈はありません。

  • 単語区切り文字としてのスペース
  • パス名の拡張
  • プロセス置換
  • 強い引用符を導入するための単一引用符
  • パターンマッチング用の文字

それ以外の場合は、パラメーターの拡張が行われます。

ls -l "*"

*と呼ばれるファイルがない限り、解釈されず、文字通り渡され、エラーが発生します*

echo "Your PATH is: $PATH"

期待どおりに動作します。$PATH解釈されます

2.強力な引用:一重引用符

一重引用符内では、解釈はまったく得られません。一重引用符で囲まれたすべての文字はテキストとして扱われます。

一重引用符で囲まれたテキスト内で一重引用符を使用する必要がある場合は、単にエスケープするだけでは不十分です。あなたはこのように連結する必要があります:

QUERY='SELECT * FROM myTable WHERE col1 = ' \' 'value1' \'

ソース:http ://wiki.bash-hackers.org/syntax/quoting

于 2012-12-08T13:13:44.423 に答える
0

に送信するコマンドを引用する必要はありませんssh。コマンドの周りの引用符の最外層を削除するmysqlと、正常に機能するはずです。

于 2012-12-08T02:29:07.577 に答える