Bash脚本中psql创建用户命令无法执行的问题求助
问题原因
- 执行
sudo -u postgres psql会启动交互式psql终端,脚本会暂停在这个交互界面,必须手动输入\q退出后,才会继续执行后续的创建用户命令。 - 即便退出交互界面,后续的
psql -c "CREATE USER..."没有以postgres用户身份执行,普通用户默认没有创建数据库用户的权限,这条命令也会执行失败。
修正后的脚本
移除交互式psql的调用,直接以postgres用户身份通过psql -c执行创建用户的命令,让脚本自动完成所有步骤:
#!/bin/bash # Install golang echo "Installing required package" sudo apt-get update sudo apt install snapd snap install go --classic # Install postgreSQL echo "Installing postgreSQL" sudo apt-get update sudo apt install postgresql postgresql-contrib postgresql-client # Starting database echo "Starting Database" sudo service postgresql start # Creating user "admin" with password "admin" echo "Creating user 'admin' with password 'admin'" sudo -u postgres psql -c "CREATE USER admin WITH PASSWORD 'admin';"
额外说明
- 如果需要给admin用户添加创建数据库的权限,可修改创建命令:
sudo -u postgres psql -c "CREATE USER admin WITH PASSWORD 'admin' CREATEDB;" - 若确实需要在脚本中进入交互式psql界面,可将这一步放在所有自动操作完成之后:
# 所有自动操作完成后进入交互界面 echo "Entering psql interactive mode, type \\q to exit" sudo -u postgres psql
内容的提问来源于stack exchange,提问作者cyw
相关产品推荐
相关产品推荐

