You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 11:10:41