2017-09-16 4 views
0

わからない、なぜこれが起こっているではないとき。mysqlコマンドラインは、@「172.X」のため拒否されたが、インタラクティブ

のmysql -h myhostの-u myuserの-p

パスワード:

私のユーザーは、私のようなコマンドを実行する場合

(ホストは '%' である)正しいパスワード/特権を持っています:

接続します。私がしなければ

しかし: - 内部IP

のmysql -h myhostの-u myuserの--password =

私はアクセスがユーザー 'myuser'@'172.xxx' <を拒否された取得します

これがなぜ起こっているのかよく分かりませんが、解決方法を理解できないようです。それを172.2%のホストに追加することはどちらもうまくいかないようです。

ありがとうございます。 man mysqlから

+0

パスワードに先行スペースが含まれていますか。パスワードと '-p'オプションの間にスペースは入れてはいけません。 – Sal

+0

@Salパスワードに先行スペースがある場合、彼は引用符で囲む必要があります(Linux/bashを前提とします)。 – Binarus

+0

スペースは不要です。また、引用符で囲んでみてください。これはAmazon RDS btwにあります。 – john

答えて

0

(強調鉱山):

形式
     のMySQL [オプション] DB_NAME

--password [=パスワード] -p [パスワード]
パスワードにサーバーに接続するときに使用します。 短いオプション形式(-p)を使用する場合、オプションとパスワードの間にスペースを入れることはできません。コマンドラインで--passwordまたは-pオプションの後にパスワード値を省略すると、mysqlはプロンプトを表示します。 [...]

のは、あなたが言及した最初のコマンドに集中してみましょう:

mysql -h myhost -u myuser -p Password 

あなたは、これが機能することを言ったが、実際には、それがいけません。マニュアルによれば、-pとパスワードの間にスペースは入れてはいけません。パスワードがある場合(あなたの場合のように)、パスワードは追加のコマンドラインパラメータ(この場合は最後のコマンドラインパラメータ)として解釈されます。

一方、マニュアルに従って、最後のコマンドラインパラメータを使用するデータベースの名前です。求める

MySQLクライアントは、(コマンドライン上で)、その後myhostに接続しなければならない:

このように、マニュアルの私の理解によれば、以下の上記のコマンドが入力されたときに起こるべきmyuserのパスワード(-pが与えられているので、実際のパスワードはではありません)。パスワードが正しく入力されている場合は、myuserにログインし、直ちにPassword(最後のコマンドラインパラメータ)を名前に持つデータベースに切り替えます。

myuserのパスワードを書き留めずにすぐに接続すると、あなたはまだmyuserのパスワードがありません。

いずれの場合も、実際のログインが行われた後に、名前としてパスワード(最後のコマンドラインパラメータ)を持つデータベースが存在しない可能性があるため、エラーメッセージが表示されます。ログイン後にこのようなエラーメッセージが表示された場合、その名前にPassword(最後のコマンドラインパラメータ)が含まれているデータベースがある場合は教えてください。

上記のコマンドがうまくいかない理由がわかっている場合は、2番目のコマンド(mysql -h myhost -u myuser --password=)が失敗する理由がわかります。この動作が期待されている1

(あなたがあなたの質問を編集した後で)

EDIT。 --password=と言うのは、正式には--password=''と同じです。つまり、パスワードとして空の文字列を使用する必要があることをMySQLクライアントに伝えています。

パスワードを要求する場合は、代わりに--password(等号なし)を使用してください。コマンドラインでは、次のようになります。

mysql -h myhost -u myuser --password 
+0

私は投稿を編集しました。混乱を招くフォーマット上の問題がありました。最初の例では、スペースでパスワードを入力していません - 私はパスワードプロンプトを明確にしようとしていました。 – john

+0

私の答えにEDIT 1を見てください。 – Binarus

関連する問題