2012-01-10 14 views
0

データベースのメンテナンスを行うためのスクリプトを書いていますが、MySQLはそれを受けようとしているユーザ名を受け入れていません。linuxのMySQL mungingユーザ名

私は、 'abc_wpsites'という名前のMySQLユーザーとデータベース、および 'abc_wpsitesdev'という名前のユーザーとデータベースを持っています。ここでは、abc_wpsitesdevにアクセスしようとしていますが、MySQLは引き続き代わりにアカウント 'abc_wpsites'を使用してアクセスを試みます。

abc.com [~]# mysql -uabc_wpsitesdev --password='(redacted)' -h localhost abc_wpsitesdev 
ERROR 1045 (28000): Access denied for user 'abc_wpsites'@'localhost' (using password: YES) 
abc.com [~]# mysql --user='abc_wpsitesdev' --password='(redacted)' -h localhost abc_wpsitesdev 
ERROR 1045 (28000): Access denied for user 'abc_wpsites'@'localhost' (using password: YES) 
abc.com [~]# mysql --user='abc_wpsitesfff' --password='(redacted)' -h localhost abc_wpsitesdev 
ERROR 1045 (28000): Access denied for user 'abc_wpsites'@'localhost' (using password: YES) 

ユーザー名を試しても、「abc_wpsites」アカウントを使用してMySQLにアクセスしようとする試みには注意が必要です。ここで何が起こっているのか考えてみましょうか?


また、私は私が(例えばMySQLのを経由して)適切な資格情報を使用して他の方法を経由して接続できることを言及する必要がありますので、これは私の理解/ MySQLのCLIインタフェースの動作に問題のいくつかの並べ替えのようです。

+0

認証プラグイン/プロキシユーザーを使用していますか? – piotrm

+0

良い考え - 残念ながら、これは非常にバニラのユースケースです(プラグイン/プロキシユーザーは使用していません)。とても奇妙です! – rinogo

答えて

0

このようにログイン情報を渡すことはお勧めしません。これは、パスワードが

  • 代わりにscript.cnfで
  • 作成のcrontabに保存されているか、あなたのbashの.historyファイルのいずれか(いくつかのディストリビューションのはそれをフィルタリングしますが)PROCESSLISTで

    • 可視であることを意味します世界では読めないファイル。

      内容は

      [client] 
      user=abc_wspitesdev 
      password=your_password 
      

      変更コマンド・ラインコールのmysql --defaults-ファイル

      へ= /パスのようになります/に/ script.cnf -h localhostのabc_wpsitesdev mysqlの

      編集

      あなたの他のコメントはあなたが他のユーザーとして接続できると言いました。このdb実行にroot権限でアクセスした場合

      mysql.usersからpassowrdを選択してください。

      他の人とは機能しないものと比較してください。

      保存されるパスワードは、実際の値のハッシュ値になります。彼らはすべて同じ長さですか?かなり長くなったり短くなったりすると、バージョン4.x以前のバージョンで使用されていた古いパスワードハッシュ方式でパスワードが保存されていた可能性があります。

      接続しようとしているアカウントのホストとは何ですか?それは 'localhost'かIPアドレスですか?それがあなたのIPアドレスなら、これはおそらく問題かもしれません。あなたのコマンドライン呼び出しがlocalhostに接続しているので、これはunixソケット(おそらく/var/lib/mysql/mysql.sock)を通して接続するよう指示します。 MySQLはこれらの接続をTCPスタックを経由してくるものと区別します。

      これは

      のmysql -u何とか-pblah -h 1.2.3のようなケースである場合は、代わりに、コマンドライン上のあなたの完全な(非127.0.0.1)IPアドレスを指定することもできます。4

    +0

    アドバイスありがとうございます。なぜこれが起こっているのかご存じですか?私が推奨するように.cnfファイルを使用するようにスクリプトを書き直しても、同じ問題が発生する恐れがあります。 – rinogo

    +0

    コマンドラインでパスワードを指定せずに、パスワードの入力を求めるようにした場合、ログインは受け入れられますか? – atxdba

    +0

    良いアイデア。ちょうどそれを試みた。いいえ。:/ – rinogo

    -1

    あなたのライン

    mysql -uabc_wpsitesdev --password='(redacted)' -h localhost abc_wpsitesdev 
    

    での問題は、あなたが-u (および-pの後にスペースなし)の後にスペースを必要とすること、である

    これは私が使用してフォームです:

    mysql -u abc_wpsitesdev -p(redacted) -h localhost abc_wpsitesdev 
    
    +1

    '-u'の後にスペースは必要ありません。 –

    +0

    残念ながら、これはまだ動作しません。 MySQLコマンドは適切に構成されており、他のユーザー名に対しても正常に動作します。 :/ – rinogo

    0

    "abc_wpsites"ユーザーが接続を許可されている場所とは対照的に、 "abc_wpsitesdev"はユーザー "abc_wpsitesdev"です - 違いはありますか?

    「abcwpsitedevのすべての特権を 'abc_wpsitesdev' @ '%'に 'thedevpassword'で指定した場合は、 MySQLのマニュアルから

    :それは、以下のマニュアルからの投稿で最後pargraphで説明したようにローカルホストからのアクセスのために動作しません

    ルートとしてサーバに接続した後、新しいアカウントを追加することができます。次の文は、GRANTを使用して4つの新しいアカウントを設定します。

    mysql> GRANT ALL PRIVILEGES ON 'monty' @ 'localhost' - > IDENTIFIED BY 'some_pass' WITH GRANT OPTION;

    mysql> GRANT ALL PRIVILEGES ON TO 'monty' @ '%' - > IDENTIFIED BY 'some_pass' WITH GRANT OPTION;

    mysql> GRANT RELOAD、PROCESS ON TO 'admin' @ 'localhost';

    mysql> GRANT USAGE ON TO 'dummy' @ 'localhost';アカウントの

    2つはモンティのユーザー名とsome_passのパスワードを持っています。これらのステートメントによって作成された

    アカウントには次の特性を持っています。両方のアカウントは、何かを行う完全な権限を持つスーパーユーザーアカウントです。 'monty' @ 'localhost'アカウントは、ローカルホストから接続する場合にのみ使用できます。 'monty' @ '%'アカウントは、ホストパーツに '%'ワイルドカードを使用するので、任意のホストからの接続に使用できます。

    どこからでもmontyとして接続できるようにするには、両方のアカウントをmontyにする必要があります。 localhostアカウントがないと、montyがローカルホストから接続すると、mysql_install_dbによって作成されたlocalhostの匿名ユーザーアカウントが優先されます。その結果、montyは匿名ユーザーとして扱われます。この理由は、匿名ユーザーアカウントが 'monty' @ '%'アカウントよりも具体的なホスト列値を持ち、したがってユーザーテーブルの並べ替え順序の方が早いからです。 (ユーザーテーブルのソートについては、第5.5.4項「アクセス制御、ステージ1:接続の検証」を参照してください)

    +0

    両方のデータベースは、どこから接続を許可できるかについては分かりません。 – rinogo

    関連する問題