質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.51%
bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Q&A

解決済

2回答

5773閲覧

シェルスクリプトでのpostgresqlの設定編集法

postgres

総合スコア7

bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

0グッド

0クリップ

投稿2016/10/06 03:13

複数のマシーンに同様のpostgresqlの環境をローカルで構築したいと考えています。

同様の環境を複数構築すること、構築するマシーンの所有者はpostgresqlの設定等を考えずに入れられるようすること、以上のような理由からシェルスクリプトを書いて自動化して実行できたらと思います。
しかしデータベースに接続するまではlinuxのユーザーが行っているのでできているようなのですが、接続してからパスワードを変更したり、リストア用のsqlファイルを読み込ませる等の操作ができません。

書いているスクリプト自体は

bash

1install.sh 2#!/bin/bash 3 4〜〜〜〜〜〜〜〜〜 5インストール等 6〜〜〜〜〜〜〜〜〜 7 8expect -c " 9set timeout -1 10spawn su \"${user}\" -c ./postgres_setup.sh 11expect \"パスワード\" 12send ${pass} 13expect eof exit 0 14" 15 16 17postgres_setup.sh 18#!/bin/bash 19psql <- ここから進めない 20
このような状況で目的を果たすためにはどのようにすればよろしいでしょうか。 またそもそもシェルスクリプトでpostgresqlをいじれるのか。 環境は ubuntu 14.04 postgresql 9.3 シェルはなんだかわかりません ぐぐったのそのまま書いてます。 初心者で質問がわかりにくいかもしれませんがどうぞよろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

インストール用のシェル作成は可能と思いますが、自動化の度合い、環境による機能の制限により作成方法も異なると思われます。
質問させて頂きたいのですが。お答えでなくてすみません、状況が分かるとお手伝いできる事も有るかと・・・

同様の環境を複数構築すること、構築するマシーンの所有者はpostgresqlの設定等を考えずに入れられるようすること、

各linux所有者のマシン上にpostgresをインストールして、ユーザ設定、データベース構築までの範囲を行というシェル機能要件でしょうか?

しかしデータベースに接続するまではlinuxのユーザーが行っているのでできているようなのですが、接続してからパスワードを変更したり、リストア用のsqlファイルを読み込ませる等の操作ができません。

各個人の方がターミナルよりpsqlで接続して利用している状況で、psql接続上でパスワード変更が出来ないまたはリストアコマンドが実行できないと言う理解でよろしいでしょうか?

シェルスクリプトを実行する上に於いて、各マシン所有者はsudoを実行する事は可能なのでしょうか?
何か元となるpostgresデータベース(共有利用)が有りデータも含めて同様なものをインストールする事を望まれているのでしょうか?

投稿2016/10/06 04:09

A.Ichi

総合スコア4070

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

postgres

2016/10/06 05:19 編集

>各linux所有者のマシン上にpostgresをインストールして、ユーザ設定、データベース構築までの範囲を行というシェル機能要件でしょうか? ー> そうです。おっしゃる通りです。 各個人の方がターミナルよりpsqlで接続して利用している状況で、psql接続上でパスワード変更が出来ないまたはリストアコマンドが実行できないと言う理解でよろしいでしょうか? ー> 各個人がではなく、各個人のマシーンでpostgersをインストールした後で初期の管理者ユーザpostgresになり、psqlで接続した状況だと考えております。 同じことをおっしゃっているのだとしたらすみません。 その上で他の回答者のおっしゃるとおり入力待ちになっています。 自分でターミナル操作の場合は postgres@hoge:~$ psql postgres=# \password postgres=# create database hoge postgres=# \d hoge hoge=# \i hoge.sql とかやっているのですが、上の操作をシェルスクリプトで行った場合psqlコマンド以降入力待ちになります そのまま\password等をスクリプトに書いても受け付けないのでどうしようかと。 >シェルスクリプトを実行する上に於いて、各マシン所有者はsudoを実行する事は可能なのでしょうか? ー> 個人が持っているものなのでできると思います。 何か元となるpostgresデータベース(共有利用)が有りデータも含めて同様なものをインストールする事を望まれているのでしょうか? ー> そうです。最終的には一つのマシーンでやりたいのですが現状バラバラに作っているのでそれぞれのローカルに同じ設定のDBを立ててしまおうと思ってます。 煩雑になりましたがどうぞよろしくおねがいします。
A.Ichi

2016/10/06 06:00

sqlファイル取込をされているのですね。勘違いしておりました。 シェルもしpasswordを聞かれる様で有れば、export PGPASSWORD=password や.pgpassファイルで省略できると思います。
A.Ichi

2016/10/06 06:34

PGPASSWORD=hogehoge psql hogedb -U hogeuser -f aaa.sql でも行ける
guest

0

ベストアンサー

psql は -f パラメータでファイルを読み込ませられます。
あるいは標準入力から渡すこともできます。
そうすれば psql で入力待ちになることはないでしょう。

投稿2016/10/06 04:02

NOTEPAD

総合スコア80

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

postgres

2016/10/06 05:08

渡したファイルに記述したことを接続した状況で行えるのならば解決に大きく近づけそうです。 調べてみます!ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.51%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問