linux环境下 postgresql 切换到 postgres用户,终端显示为 -bash-4.2$ 的解决办法

一 问题说明

​ 最近在华为云服务器上安装Postgresql14数据库,操作系统是 Centos7,按照Postgresql 官方提供的脚本进行了二进制方式的安装,但在切换到数据库超级用户 postgres时,终端的提示符是 -bash-4.2$,没有显示用户名,不符合常规预期。

[root@wy ~]# su - postgres

Last login: Fri Feb 24 09:29:03 CST 2023 on pts/0

-bash-4.2$

二 原因分析

​ 在postgresql 二进制安装方式下,安装系统自动创建了超级用户postgres,他的家目录并不在 /home 下,而是在 /var/lib/pgsql,这可以通过如下二种方式进行确认。

pwd命令

[root@wy ~]# su - postgres

Last login: Fri Feb 24 09:50:56 CST 2023 on pts/0

-bash-4.2$ pwd

/var/lib/pgsql

查看 passwd 文件

...

postgres:x:26:26:PostgreSQL Server:/var/lib/pgsql:/bin/bash

...

二 解决方法

方法1 通过修改postgres的家目录

以root用户登录,修改 /etc/passwd文件中postgres用户的家目录

vim /etc/passwd

.....

#postgres:x:26:26:PostgreSQL Server:/var/lib/pgsql:/bin/bash

postgres:x:26:26:PostgreSQL Server:/home/postgres:/bin/bash

......

创建postgres的家目录,并拷贝2个文件

mkdir -p /home/postgres

cp /etc/skel/.bashrc /home/postgres

cp /etc/skel/.bash_profile /home/postgres

chown -R postgres:postgres /home/postgres

修改后的效果

[root@wy ~]# su - postgres

[postgres@wy ~]$ pwd

/home/postgres

方法2 修改postgres家目录的内容

因为官方把postgresql系统的超级用户的家目录设置为 /var/lib/pgsql 是有一定道理的,因为创建的数据库也默认是在此目录下,数据库管理员在操作数据库时有一定的便利性。

# 切换到postgres用户

[root@wy ~]# su - postgres

cp /etc/skel/.bashrc /var/lib/pgsql

# 修改 .bash_profile文件,增加如下内容

if [ -f ~/.bashrc ]; then

. ~/.bashrc

fi

方法2是值得推荐的方法,修改后的效果如下

[root@wy ~]# su - postgres

Last login: Fri Feb 24 11:12:31 CST 2023 on pts/0

[postgres@wy ~]$ pwd

/var/lib/pgsql

推荐链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: