2013-08-20 46 views
3

我想通過自動shell腳本在postgresql下創建兩個名爲spider和geo的數據庫。這是迄今爲止的代碼。在shell中自動安裝和創建postgresql數據庫

apt-get install -y postgresql 
echo "CREATE ROLE deploy LOGIN ENCRYPTED PASSWORD '$APP_DB_PASS';" | sudo -u postgres psql 
su postgres -c "createdb spider --owner deploy" 
su postgres -c "createdb geo --owner deploy" 
/etc/init.d/postgresql reload 

任何人都可以請看看,看看我是否正在這個正確的方式。此外,當我嘗試看看它是否通過運行以下命令我得到一個錯誤:

root:~# psql -l                    
psql: FATAL: role "root" does not exist 

我在哪裏出了問題,是有什麼辦法可以改善這個腳本?

+0

「--owner deploy」不應該是「--owner = deploy」嗎? – bma

回答

3

通過apt-get判斷,您的部署平臺是Ubuntu-(ish)。

apt-get install -y postgresql 
echo "CREATE ROLE deploy LOGIN ENCRYPTED PASSWORD '$APP_DB_PASS';" | sudo -u postgres psql 
su postgres -c "createdb spider --owner deploy" 
su postgres -c "createdb geo --owner deploy" 
service postgresql reload 

那麼你應該能夠通過在命令行上指定一個用戶登錄:

psql -U root spider 

psql -U deploy spider 

一般來說,你在正確的軌道上。

+0

我對命令行有更好的運氣:sudo -u postgres psql -c「create database spider --owner deploy」 – Fredrick