How to write bash & sql files to setup users for postgres?
我正在尝试创建bash和sql文件来创建用户和数据库..
这是我到目前为止所做的......
Setup_postgres.sql
1 2 3 4 | Create USER dummbyuser; ALTER USER dummbyuser with superuser; ALTER USER dummbyuser with LOGIN; /q |
Setup_postgres.sh
1 2 3 4 | sudo su - postgress psql -f setup_postgres.sql; sh setup_postgres.sql logout |
我的问题[求助]
我告诉bash运行Setup_postgres.sh然后它挂起后
sudo su - postgres line setup_postgres.sql根本不运行。
任何人对我做错了什么都有任何想法?
这是正确的方法吗?
我写bash文件的经验很少。
是否有可能脚本提示用户输入"dummbyuser"的名称
您正在使用
您可以像这样修改脚本以使其正常工作:
1 2 3 | #!/bin/bash sudo -iu postgres psql < setup_postgres.sql |
这将使用postgres用户权限运行指定的psql命令。
此外,您不需要sudo over psql,您只需运行
或者你可以做这样的事情。
1 2 3 | #!/bin/bash createuser -U psql -s dummbyuser createdb -U psql -O dummbyuser dummbyuser |
甚至在这里使用shell文档
1 2 3 4 5 | psql -U psql <<EOF Create USER dummbyuser; ALTER USER dummbyuser with superuser; ALTER USER dummbyuser with LOGIN; EOF |
---回答评论中的问题---
您可以使用位置参数,例如
所以,例如,如果您的脚本被称为
1 2 3 | #!/bin/bash createuser -U psql -s $1 createdb -U psql -O $1 $2 |
然后将其称为
这将用
或者您可以提示用户输入并使用
所以相同的
1 2 3 4 5 6 7 | #!/bin/bash echo"please enter username followed by [enter]" read user echo"please enter db_name followed by [enter]" read dbname createuser -U psql -s $user createdb -U psql -O $user $dbname |
然后,如果你想要真正的幻想,你可以结合它们
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #!/bin/bash if ["$1" !="" ]; then user=$1 else echo"please enter username followed by [enter]" read user fi if ["$2" !="" ]; then dbname=$2 else echo"please enter db_name followed by [enter]" read dbname fi createuser -U psql -s $user createdb -U psql -O $user $dbname echo"created new user $user, and gave them a db called $dbname" |