sql >> データベース >  >> RDS >> PostgreSQL

パスワードなしでpsqlコマンドを使用してバッチファイルを実行する

    読み続けてください。最良の選択肢は最後に来る 。ただし、最初にいくつかのことを明確にしましょう。

    パスワード要求のみを無音にします

    問題がパスワードプロンプトのみである場合は、それを黙らせることができます。ここでマニュアルを引用します:

    -w
    -パスワードなし

    パスワードプロンプトを発行しないでください。サーバーがパスワード認証を必要とし、 .pgpassなどの他の手段でパスワードを使用できない場合 ファイルの場合、接続の試行は失敗します。このオプションは、パスワードを入力するユーザーがいないバッチジョブやスクリプトで役立ちます。 (...)

    おそらくパスワードは必要ありません

    通常、これは不要です。デフォルトのデータベーススーパーユーザーpostgres 通常、同じ名前のシステムユーザーに対応します。 psqlを実行しています 認証方法がpeer の場合、このアカウントからのパスワードは必要ありません またはident pg_hba.confで設定されます ファイル。おそらく次のような行があります:

    local    all    postgres    peer
    

    そして通常も:

    local    all    all         peer
    

    つまり、すべてのローカル ユーザーはすべてにログインできます パスワードなしの同じ名前のデータベースユーザーとしてのデータベース。
    ただし 、ここにはよくある誤解があります。もう一度引用:

    この方法は、ローカル接続でのみサポートされます 。

    大胆な強調鉱山。
    あなたはlocalhostに接続しています 、これは「ローカル接続」ではありません 、「ローカル」という単語が含まれている場合でも。これは、127.0.0.1へのTCP/IP接続です。ローカルホスト上のウィキペディア:

    最新のコンピューターシステムでは、 localhost ホスト名が127.0.0.0/8のIPv4アドレスに変換されるため (ループバック)ネットブロック、通常は 127.0.0.1 、または ::1 IPv6で。

    ローカル接続のシンプルなソリューション

    パラメータ-hを省略します psqlから 呼び出し。 psqlのマニュアルを引用する もう一度:

    ホスト名を省略すると、psqlはUnixドメインソケットを介して接続します。 ローカルホスト上のサーバーに送信するか、TCP/IP経由でlocalhostに送信します Unixドメインソケットを持たないマシン。

    ウィンドウズ

    ... Unixドメインソケット、 pg_hba.confがありません localで始まる行 Windowsには適用されません。 Windowsでは、 localhostを介して接続します デフォルトでは、最初に戻ります。

    セキュリティ要件が緩い場合は、 localhostを介したすべての接続を信頼できます。 :

    host    all    all    127.0.0.1/32     trust
    

    これは、リモート接続をオフにしてデバッグする場合にのみ行います。セキュリティを強化するために、WindowsでSSPI認証を使用できます。この行をpg_hba.confに追加します 「ローカル」接続の場合:

    host    all    all    127.0.0.1/32     sspi
    

    実際にパスワードが必要な場合

    あなたはできた 環境変数を設定します 、ただし、これは非推奨です 、特にWindowsの場合。マニュアル:

    PGPASSWORD パスワードconnectionparameterと同じように動作します。一部のオペレーティングシステムでは、非ルートユーザーがpsを介してプロセス環境変数を表示できるため、セキュリティ上の理由から、この環境変数の使用はお勧めしません。代わりに、〜/ .pgpassの使用を検討してください ファイル(セクション32.15を参照)。

    psqlのマニュアル :

    conninfo 文字列は、接続パラメータを指定するための代替手段です:

     $ psql "user=myuser password=secret_pw host=localhost port=5432 sslmode=require"
    

    またはURI 、データベース名の代わりに使用されます:

     $ psql postgresql://myuser:[email protected]:5432/mydb?sslmode=require
    

    パスワードファイル

    ただし、通常は .pgpassを設定することをお勧めします。 ファイル パスワードをスクリプトファイルに入れるのではなく。
    マニュアルの短い章を注意深く読んでください。特に、ここで注意してください...

    localhostのホスト名 両方のTCPに一致します(ホスト名 localhost )およびUnixドメインソケット( pghost 空またはデフォルトのソケットディレクトリ)ローカルマシンからの接続。

    正確なパスはシステムによって異なります。このファイルには、役割とポートの複数の組み合わせ(DBクラスター)のパスワードを保存できます。

    localhost:5432:*:myadmin:myadminPasswd
    localhost:5434:*:myadmin:myadminPasswd
    localhost:5437:*:myadmin:myadminPasswd
    ...
    

    Windows の場合 マシンは次の場所でファイルを検索します:

    %APPDATA%\postgresql\pgpass.conf
    

    %APPDATA% 通常、次のように解決されます: C:\ Documents and Settings \ My_Windows_User_Name \ Application Data \



    1. MariaDBでのCOMPRESS()のしくみ

    2. SQLServerでスキーマバインドビューを作成する

    3. ケースとデコード

    4. Oracle ODBCドライバはOracleクライアントをどのようにロードしますか?