『ボヘミアン・ラプソディ』はなぜ人々を魅了したのか >>

psqlコマンドでDBへの接続を行っております。

/usr/local/pgsql/bin/psql -U postgres -h xxx.xxx.xxx.xxx testdb

上記コマンドをコマンドラインから実行するとパスワードが聞かれます。
パスワード設定をmd5にしているためですが、
その設定を変更せずコマンドラインでパスワードを渡すなどしてパスワードの入力を促す処理をスルーしたいのですが全然出来ません。

どのなたかご存知の方、いらっしゃいましたらご教示の程お願い致します。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

PGPASSWORD=○○○ /usr/local/pgsql/bin/psql -U postgres -h xxx.xxx.x

xx.xxx testdb
    • good
    • 7

環境変数で解決済みかもしれませんが。


パスワードファイルと呼ばれる仕組みも用意されています。(参考URL)

Webなどから使用する場合は↓
http://ml.postgresql.jp/pipermail/pgsql-jp/2005- …

参考URL:http://www.postgresql.jp/document/pg826doc/html/ …
    • good
    • 0

失礼しました。


パスワードを設定する変数名は PGPASSWD ではなく、alte_6 さんの
書かれたとおり PGPASSWORD でした。訂正させていただきます。
    • good
    • 1

export PGPASSWD=パスワード


psql -U postgres ....

ただ、環境変数はサーバを共用している他のユーザにも見えてしまう
ので、あまりお勧めできないんです。サーバを他人と共用していない
など、ある程度安全性が確保できるときにだけお使いください。
    • good
    • 0
この回答へのお礼

ありがとうございます。
出来れば接続コマンドと同時に設定したいと思っております。

/usr/local/pgsql/bin/psql -U postgres -h xxx.xxx.xxx.xxx ○○○ testdb
※○○○:パスワード

こういったやり方ってやっぱり無理なのでしょうか?

お礼日時:2008/02/04 19:32

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qファイルに記述されている複数のSQL文を一度に実行させたい

こんにちわ。

ファイルに記述されているSQL文を、Linuxのコマンドラインなどから
実行したいと考えています。

ファイルに
insert into DB_NAME(aaa,bbb,ccc) values(111,222,333);
insert into DB_NAME(ddd,eee,fff) values(333,777,222);
insert into DB_NAME(aaa,ttt,ddd) values(111,000,999);
...

などのSQL文が複数行(例えば1000個ほど)記述しているのを用意して
なんかしらの方法で一度に実行させたいのです。

mySQLでは、このようなやり方があるのですが
postgreではどのようにすればいいのか、わかりません。

どなたかご存知の方、よろしくお願い致します。

OSはLinuxです。

Aベストアンサー

#1の方も指摘されている通り、 psql を使えば出来ます。

psql で、-f オプションを使うか、該当のDBに接続して \i コマンドを使えば良いでしょう。
http://www.postgresql.jp/document/pg746doc/html/app-psql.html

SQLが記述されているファイルを insert_data.sql、
DBを testdb としますと
例1)-------------------------------------------------------------
$ psql testdb
Welcome to psql x.x.x, the PostgreSQL interactive terminal.




testdb=> \i insert_data.sql
testdb=> \q
-----------------------------------------------------------------

例2)-------------------------------------------------------------
$ psql testdb -f insert_data.sql
-----------------------------------------------------------------

注) ユーザのDBへのアクセス権によっては -U オプションや -W オプションも必要になります。

#1の方も指摘されている通り、 psql を使えば出来ます。

psql で、-f オプションを使うか、該当のDBに接続して \i コマンドを使えば良いでしょう。
http://www.postgresql.jp/document/pg746doc/html/app-psql.html

SQLが記述されているファイルを insert_data.sql、
DBを testdb としますと
例1)-------------------------------------------------------------
$ psql testdb
Welcome to psql x.x.x, the PostgreSQL interactive terminal.




testdb=> \i insert_data.sql
testdb=> \q...続きを読む

Qpsqlでエラーログをとりたい

こんにちは、honiyonです。

 WindowsXP + Cygwin + PostgreSQL
 という環境で使用しています。
 psqlは
  http://www.interwiz.koganei.tokyo.jp/software/PostgreSQL/windows.html
 にあるWindows版を使用しています。

 この環境で、ファイルに保存してあるSQLを一括処理した場合に発生するエラーをしる為に、実行結果をファイルに保存したいと思い、

 psql -h localhost [DB名] < sqllist.txt > log.txt

 のように実行してみました。
 確かにログは作成されましたが、正常時のみで肝心のエラーメッセージが省かれて保存されます。
 そこで、

 psql -f sqllist.txt -o log.txt -h localhost [DB名]

 としましたが、変化ありませんでした。

 もしエラーメッセージを保存する方法がありましたら、是非ご教授ください(..
 宜しくお願いします(..

こんにちは、honiyonです。

 WindowsXP + Cygwin + PostgreSQL
 という環境で使用しています。
 psqlは
  http://www.interwiz.koganei.tokyo.jp/software/PostgreSQL/windows.html
 にあるWindows版を使用しています。

 この環境で、ファイルに保存してあるSQLを一括処理した場合に発生するエラーをしる為に、実行結果をファイルに保存したいと思い、

 psql -h localhost [DB名] < sqllist.txt > log.txt

 のように実行してみました。
 確かにログは作成されましたが、正常時のみで肝...続きを読む

Aベストアンサー

#1です。
WINDOWS版って書いてありましたね。
リダイレクトの切り替えはWindowsでも可能です。
(psql -h localhost [DB名] < sqllist.txt) 2>&1) > log.txt

2>&1は標準エラー出力2を標準出力1に切り替えという
意味です。
切り替えた結果を()で囲み、されにファイル出力してます。

QPOSTGRESのデータの格納場所はどこでしょうか?

RedHat7.2/PostgreSQL7.2/という環境で、サーバーがクラッシュしてしまい、データを他のサーバに移し変えないといけなくなりました。そこで、PostgreSQLを再インストールしないとデータベースが使えない状況となりました。

データベースを再インストールするのは良いとして、どこかに格納されているはずのデータベースの内容を取り出し、復帰させたいのですが、方法はありますか?大変困っております。よろしくお願いします。

Aベストアンサー

No.1の追加です。
データの移設でよかったと思います。
または、データを読み込むときに、「iオプション」でディレクトリを指定して、元のファイルを読み込んでもよかったと思います。

Qpasswordが入れられません・・・・

コマンドプロントにてDBへ接続するために「psql postgre」と入れたのですが

Password :

となるのですが、どのキーをたたいても入力することができません。エンターキーを押すと

psql: FATAL: password authentication failed for user "postgre"

と出るか

paql: fe_sendauth: no password supplied

と出てしまい何もできません。パスワードはコマンドプロントで入力できないのでしょうか?

Aベストアンサー

パスワードが表示されていないだけで、入力されているんですよ。

だから、
psql: FATAL: password authentication failed for user "postgre"
アクセス権が無い(パスワードが違ってる)
paql: fe_sendauth: no password supplied
パスワードが入力されていない(Enterを押しただけ)
というエラーが返ってきています。

表示されませんから、正確に入力してみましょう。

QPostgreSQLで外部DB内のテーブル参照方法を教えてください

PostgreSQLで別データベースのテーブルを参照することはできますか?

仮に以下のデータベースが2つあるとします
CREATE DATABASE common_db ...
CREATE DATABASE app1_db ...

app1_db に接続した状態で common_db のテーブルを参照することはできますか?

仮にcommon_dbに郵便番号テーブル postcodeがあるとします
CREATE TABLE postcode (
postcode text, --郵便番号
pref_name text, -- 県名
 ・・・
)

このpostcodeテーブルをapp1_dbに接続した状態で参照するには、どのような参照クエリになりますか?
ご教授の程よろしくお願います。
そもそもできないのでしょうか?

Aベストアンサー

PostgreSQL 本体の機能では実現できませんが、contrib モジュールの dblink を使えばできます。

dblink のインストール方法は PostgreSQL のインストール方法によって異なりますが、RPM パッケージであれば postgresql-contrib というパッケージをインストールし、以下のように dblink の関数などを定義します。

psql -f /usr/share/postgresql/contrib/dblink.sql (データベース名)

データベース名には他のデータベースにアクセスしたいデータベース名、例では app1_db を指定します。なお、dblink.sql のパスはパッケージによって異なる場合があります。

dblink をインストールすれば以下のように関数を呼び出して別のデータベース内のテーブルを参照できます。

SELECT * FROM dblink('dbname=common_db', 'SELECT * FROM postcode') AS postcode(postcode text, pref_name text);

dblink について詳しくは PostgreSQL のマニュアルを読んでください。

http://www.postgresql.jp/document/pg840doc/html/dblink.html

ただ、質問の例にあるデータベース名やテーブル名を見ていると、アプリケーションごとに名前空間を分けたいだけのようなので、それであればスキーマを使ったほうがよさそうな気もします。

参考URL:http://www.postgresql.jp/document/pg840doc/html/dblink.html

PostgreSQL 本体の機能では実現できませんが、contrib モジュールの dblink を使えばできます。

dblink のインストール方法は PostgreSQL のインストール方法によって異なりますが、RPM パッケージであれば postgresql-contrib というパッケージをインストールし、以下のように dblink の関数などを定義します。

psql -f /usr/share/postgresql/contrib/dblink.sql (データベース名)

データベース名には他のデータベースにアクセスしたいデータベース名、例では app1_db を指定します。なお、dblink.sq...続きを読む

Qpingでポートの指定

pingでIPアドレスを指定して、通信できるかどうかというのは
よく使いますが、pingでポートを指定して応答するかどうかは調べられるのでしょうか?

よろしくお願いします

Aベストアンサー

pingを含むICMPというプロトコルは、OSIの7レイヤで言うところのL2(同一セグメント内通信)とL3(IPルーティングされた通信)の両方にまたがる、ちょっと珍しいプロトコルです。

IPアドレスは指定できますが、別サブネットに属するIPアドレスに到達できればL3通信、できなければゲートウェイと呼ばれる同一サブネットに属する中継装置からの回答を得るという点でL2(MAC通信ではなく、同一セグメント内通信という意味)通信です。

ポート番号はL4で使用されるアドレスですから、L4機能の疎通確認はping(を含むICMP)ではできません。

FTPの疎通確認であれば、クライアントからサーバに対するTCP/21通信(FTP-CMD)が可能であること(サーバからクライアントへのTCP/21からの応答を含む)+サーバからクライアントに対するTCP/20通信(FTP-DATA)が可能であること(クライアントからサーバへのTCP/21からの応答を含む)が必要でしょう。

監視ソフトによるものであれば、
・クライアントからサーバへのログイン(TCP/21)
・クライアントからサーバへのlsの結果(TCP/20)
で確認すればよいでしょう。

pingを含むICMPというプロトコルは、OSIの7レイヤで言うところのL2(同一セグメント内通信)とL3(IPルーティングされた通信)の両方にまたがる、ちょっと珍しいプロトコルです。

IPアドレスは指定できますが、別サブネットに属するIPアドレスに到達できればL3通信、できなければゲートウェイと呼ばれる同一サブネットに属する中継装置からの回答を得るという点でL2(MAC通信ではなく、同一セグメント内通信という意味)通信です。

ポート番号はL4で使用されるアドレスですから、L4機能の疎通確認はping(を含む...続きを読む

Qpostgresのdatabase名と、そのencodingを取得する

postgresのdatabase名と、そのencodingを取得する方法を教えてください。



postgres8.1です。

システムカタログ
http://www.postgresql.jp/document/pg811doc/html/catalogs.html

pg_databaseの項目として持っているだろうと思い、見てみました。

encodingint4 このデータベースの文字符号化方式

これか?と思いましたが、数値IDのみでした。

この数値から、utf8やsjisといった情報にどうやったら繋がりますか?

Aベストアンサー

pg_encoding_to_char関数で文字エンコーディング名に変換できます。

=> SELECT datname, pg_encoding_to_char(encoding) FROM pg_database;
datname | pg_encoding_to_char
-----------+---------------------
template1 | UTF8
template0 | UTF8
postgres | UTF8
(4 rows)

Q接続中のユーザを表示する方法

こんにちは。Postgresで接続中ユーザの表示をするには(コマンド)どうすればよいか教えてください。

Aベストアンサー

(ソースのリダイレクトです)
postgreSQL v8.0.2で
select * from pg_stat_activity;
とすれば出て来ました。

一応、探すのに苦労しましたが
23.2. 統計情報収集器
にその他統計情報の閲覧テーブルが記載されています(参考までに)
http://www.postgresql.jp/document/pg800doc/html/monitoring-stats.html

参考URL:http://ml.postgresql.jp/pipermail/pgsql-jp/2003-August/014272.html

QPostgreSQLが起動しない・・・

はじめまして、tanu_2です。
玄箱HGをDebian化し、いろいろと遊んでいます。

PostgreSQLをapt-getでインストールし、Webアプリを動かしていたのですが、昨日より突然、PostgreSQLが動かなくなってしまいました。
原因が分からず、サーバを再起動し、
# /etc/init.d/postgresql start

$ pg_ctl start
などを試してみたのですが、動きません。
念のため、初期化(initdb)も試みたのですが、これも失敗してしまいます。
/var/log/postgresql/postgres/logを覗いてみると、

FATAL: could not write lock file "/var/lib/postgres/data/postmaster.pid": No space

となっており、上記ディレクトリにpostmaster.pid書き込みできないよ、と言われているっぽかったので、パーミッションを変更したりして
みましたが、postgresql startにしろ、pg_ctl startにしろ、それぞれのコマンドで起動すると、強制的にパーミッションが「700」に変更されてしまうようで、結果は同じでした。

どなたか、解決策をご教示願えませんでしょうか?

よろしくお願いします。m(_ _)m

はじめまして、tanu_2です。
玄箱HGをDebian化し、いろいろと遊んでいます。

PostgreSQLをapt-getでインストールし、Webアプリを動かしていたのですが、昨日より突然、PostgreSQLが動かなくなってしまいました。
原因が分からず、サーバを再起動し、
# /etc/init.d/postgresql start

$ pg_ctl start
などを試してみたのですが、動きません。
念のため、初期化(initdb)も試みたのですが、これも失敗してしまいます。
/var/log/postgresql/postgres/logを覗いてみると、

FATAL: could not wri...続きを読む

Aベストアンサー

それ以外にも、以下のようなコマンドを使ってデータベースサーバプログラムの起動が出来ますよね。

postmaster -D /usr/local/pgsql/data

ただ、以下のURLのドキュメント内には、次のような記述があります。

「何を実行するにしても、サーバはPostgreSQLユーザアカウントで起動させなければなりません。 rootであってはいけませんし、他のユーザでもいけません。」

パッケージによるインストールであれば、自動でpostgresユーザが作られているはずだと思うけど。(Debianは使ったことないので、確証はなし。)

su - postgres

上記のコマンドでログインするなり、パスワードを忘れたのならroot権限にてpasswdコマンドから変更するなりした後、もう一度postmasterを起動してみよう!

ちなみに、パーミッション関係のエラーは、「Permission denied」ですよね。

参考URL:http://www.postgresql.jp/document/pg803doc/html/postmaster-start.html

それ以外にも、以下のようなコマンドを使ってデータベースサーバプログラムの起動が出来ますよね。

postmaster -D /usr/local/pgsql/data

ただ、以下のURLのドキュメント内には、次のような記述があります。

「何を実行するにしても、サーバはPostgreSQLユーザアカウントで起動させなければなりません。 rootであってはいけませんし、他のユーザでもいけません。」

パッケージによるインストールであれば、自動でpostgresユーザが作られているはずだと思うけど。(Debianは使ったことないので、確証は...続きを読む

Qサーバに接続できません・・・

環境はxp、apache2、php5、Postgresql8.2です。

ただ今PHPとPostgresqlの勉強をしています。

Pgadmin3で
postgresサーバに接続しようとすると
次のようエラーが出て
接続することが出来ません。

「サーバに接続できませんでした
サーバはホスト"000.0.0.1"で稼働していますか?
また、ポート5432でTCP/IP接続を受け付けていますか?」

そのため、postgresをアンインストールして
インストールし直したところ
接続できるようになったのですが
新しいデータベースを作ろうとしたところ
また同じエラーが出て接続できなくなってしまいました。

ご教示して頂けたら幸いです。

Aベストアンサー

1台のPCを、サーバ&クライアントにするのですね?
PostgreSQLのサービスは、動いているのですね?
もし、動いていないなら、PostgreSQLのインストールフォルダの\data配下に、
pg_hba.conf
postgresql.conf
に、IPアドレスを指定している場所があるので、「127.0.0.1」以外になっていないか確認してください。
この二つのファイルは、pgAdminIIIで、メニューバーの「ファイル」から編集できます。

pgAdminIIIだけが繋がらないなら、サーバ名を選択した状態で、メニューバーの「編集」→「プロパティ」で、「アドレス」が「localhost」か「127.0.0.1」以外になっていないでしょうか?


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング