Bash / CentOS 7 尝试自动安装和设置 PostgreSQL 但失败

Bash / CentOS 7 尝试自动安装和设置 PostgreSQL 但失败

我正在尝试使用 bash 脚本在 CentOS 7 上自动安装和设置 PostgreSQL,我对此非常陌生,我希望能够得到一些帮助。

所以,到目前为止我有以下情况;

# Install PostgreSQL ( 9.6 )
curl -O https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm
sudo rpm -ivh pgdg-centos96-9.6-3.noarch.rpm
sudo yum -y install postgresql96-server.x86_64 postgresql96-contrib.x86_64 postgresql96-devel.x86_64

# Init Postgresql
sudo /usr/pgsql-9.6/bin/postgresql96-setup initdb
sudo systemctl enable postgresql-9.6
sudo systemctl start postgresql-9.6

# Configure remote access
sudo sed -i "s/#listen_addresses = 'localhost'/listen_addresses = '*'/g" /var/lib/pgsql/9.6/data/postgresql.conf
echo "host    all             all             10.0.2.2/32               md5" | sudo tee -a /var/lib/pgsql/9.6/data/pg_hba.conf

# Configure PostgreSQL user / database
sudo -u postgres psql -c "CREATE ROLE myboxname LOGIN UNENCRYPTED PASSWORD 'secret' SUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;"
sudo -u postgres /usr/bin/createdb --echo --owner=myboxname myboxname

除最后两行之外,一切都很完美。

当我运行第一行时,我得到以下输出;

could not change directory to "/home/username": Permission denied
CREATE ROLE

当我运行第二条命令时,我得到了这个;

could not change directory to "/home/username": Permission denied
CREATE DATABASE myboxname OWNER myboxname;

然后当我尝试运行时psql我得到以下内容;

psql: FATAL:  role "username" does not exist

我很困惑。

任何帮助都将不胜感激。

答案1

错误消息指向两个问题。首先,postgres 用户没有 /home/username 的权限。这种情况发生在 CentOS/Linux 级别。第二个错误是 postgres 找不到角色“username”。因此,首先您需要查看 postgres 用户是否设置正确。只需手动执行 sudo 即可检查:

cd ~postgres
sudo -u postgres -i

希望这里没有错误。然后您需要创建角色。我建议手动执行此操作(首先在脚本之外)以检查一切是否正常:

root# sudo -u postgres -i psql
psql (9.3.20)
Type "help" for help.

postgres=# create user username;
CREATE ROLE

如果此方法有效,那么您可以通过脚本自动执行该过程。drop user username如果您想重新创建用户,可以运行以删除该用户。希望这对您有所帮助。

相关内容