2017-11-16 61 views
0

AWS EC2 Ubuntu 16.04インスタンスに接続しています。私は私の生産スクリプトの一部として:MySQL接続がコマンド接続から拒否されました

mysql -u root -pmy-secret -e "source resetDb.sql;" >> lastRun.log

このresetDb.sqlは、データベース情報を作成し、移入するクエリを持っています。その後、アプリで続けてください。

事が

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

をスローすることによって、MySQLはこのように私のアクセスを拒否されていることである。しかし、私はmysql -u root -pと接続し、手動でパスワードを入力すると、それがコンソールに私をすることができますので、これは私が見てみましょうパスワードは正しいです。

は私が権限をフラッシュし、rootのパスワードを再設定については、別の質問で見てきた

$ mysql --version mysql Ver 14.14 Distrib 5.7.20, for Linux (x86_64) using EditLine wrapper $ uname -a Linux ip-xx.xx.xx.xx 4.4.0-1038-aws #47-Ubuntu SMP Thu Sep 28 20:05:35 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

サーバー上でこの出力を得るが、それは私には良いもしなかったので、私のパスワードが正しいです。

誰か手掛かりがありますか?スクリプトを実行してサーバー全体を自動的にセットアップすることが考えられます。前もって感謝します。

+0

URLスクリプトは何を使用していますか? – kosa

答えて

2

パスワードコマンドシェルが解釈している "特殊"文字を使用しています。パスワードでこれらの文字を見てください:

$ ! \ [] <> `

Linux用の単一引用符で囲みパスワード: 'my_%PATH_problem &パスワード' を。 Windowsでは二重引用符を使用します。バックスラッシュを使用して問題の文字をエスケープすることもできます\

+0

あなたはそれが正しいです。私は '$'を持っていた。これを引用符で囲むことは、 'mysql -u root -p'my- $ ecret '-e" select * from mysql; "'のように十分でした。ありがとうございました。 – MarAvFe

0

パスワードの引用符を使用しようとしましたか?あなたも置くことができ

mysql -u root -p"your_passord" -e "SHOW DATABASES" 

はそれに等しい: このお試しください

mysql --user="root" --password="your_passord" -e "SHOW DATABASES" 

をそして、あなたは永久的な何かをしたい場合には、(それをテストすることはありません)あなたはthisを試すことができそうです。

+0

これと二重引用符がうまくいっていないのはなぜですか?しかしコンセプトは正しかった。他の答えを選んだのは、特殊文字がリストされているためです。 – MarAvFe

+0

あなたの事例に適したものを見つけることが大好きです。 – Novy

0

ルートパスワードには特定のホスト制限があります。

あなたは

select user,host,password from mysql.user; 

を実行するのであればあなたはすべての異なるパスワードを存在するが、持っているルート@ localhostを、[email protected]、およびルートの@%を表示されることがあります。

+0

これを試してみて、rootはlocalhostにしか存在しませんでした。幸いにも、私はサーバ(localhost)の内部からのみ使用しています。 – MarAvFe

関連する問題