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
推荐链接
发表评论