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
文章讲述了在Centos7系统上安装Postgresql14后,切换到postgres用户出现-bash-4.2$提示符的问题。原因在于postgres用户的家目录不在常规的/home下。提供了两种解决方案:一是修改postgres用户的家目录至/home/postgres并拷贝必要文件;二是不改变家目录,而是修改.bash_profile引入.bashrc。推荐使用第二种方法,以保持数据库管理的便利性。



8695

被折叠的 条评论
为什么被折叠?



