【问题标题】:How do I change the prompt of PostgreSQL console (psql) to not show "postgres=#", but "new_user=#"?如何将 PostgreSQL 控制台 (psql) 的提示更改为不显示“postgres=#”,而是显示“new_user=#”?
【发布时间】:2022-01-06 03:13:17
【问题描述】:

我试图弄清楚如何使用特定用户打开 psql 控制台。

假设我有两个超级用户:postgres 和 new_user。当我在 psql 控制台中运行 \du 时,我可以看到它们。

当我运行sudo -u postgres psql时,我可以成功打开psql控制台,我看到:postgres=#

如果我运行sudo -u new_user psql,我会得到一个错误:

sudo: unknown user: new_user
sudo: unable to initialize policy plugin

即使我能够创建一个新数据库并将 new_user 设置为所有者: postgres=# CREATE DATABASE newdb OWNER new_user;

我也没有找到在 psql 控制台中切换用户的方法。 我做错了什么?

提前致谢。

【问题讨论】:

  • sudo -u 更改了您的 Linux 用户 - 您显然只创建了一个 database 用户。所以使用psql -U new_user(不带sudo!)就足够了
  • @a_horse_with_no_name,非常感谢!我设法以这种方式切换用户:1.sudo su 2.psql -h localhost -U new_user
  • 没有必要为此使用sudo。一开始以 root 身份运行 psql 是一个非常糟糕的主意。
  • @a_horse_with_no_name,你是对的。它可以在没有 sudo 的情况下工作。谢谢

标签: linux postgresql psql


【解决方案1】:

您可以修改:~/.psqlrc

和:

\set PROMPT1 '%M:%> %n@%/%R%#%x '
  • %M 指数据库服务器的主机名——如果连接是通过 Unix 域套接字,则为“[local]”
  • %>指监听端口
  • %n 指会话用户名
  • %/指的是当前数据库
  • %R 指的是您是处于单线模式 (^) 还是断开连接 (!) 但通常是 =
  • %#指的是你是超级用户(#)还是普通用户(>)
  • %x 指的是事务状态——通常为空白,除非在事务块中 (*)

颜色:

您甚至可以在提示中设置颜色:

\set PROMPT1 '%M:%[%033[1;31m%]%>%[%033[0m%] %n@%/%R%#%x '
  • 32 代表绿色
  • 33 代表黄色
  • 34 代表蓝色
  • 35 代表洋红色
  • 36 代表青色
  • 37 代表白色

~/.psqlrc 中包含更多选项的示例集:

\set QUIET 1

\set PROMPT1 '%M:%[%033[1;31m%]%>%[%033[0m%] %n@%/%R%#%x '

\set PROMPT2 '%M %n@%/%R %# '

\pset null '[null]'

\set COMP_KEYWORD_CASE upper

\timing

\set HISTSIZE 2000

\x auto

\set VERBOSITY verbose

\set QUIET 0

\echo 'Welcome to PostgreSQL! \n'
\echo 'Type :version to see the PostgreSQL version. \n' 
\echo 'Type :extensions to see the available extensions. \n'
\echo 'Type \\q to exit. \n'
\set version 'SELECT version();'
\set extensions 'select * from pg_available_extensions;'

这会给你一个结果:

$ psql

Welcome to PostgreSQL!

Type :version to see the version.

Type :extensions to see the available extensions.

Type \q to exit.

psql (9.3.4)
Type "help" for help.

[local]:5432 postgres@postgres=#    

【讨论】:

  • 感谢您的回答,但这并不是您所需要的。 a_horse_with_no_name 在 cmets 中回答了我的问题。
猜你喜欢
  • 2020-09-24
  • 2022-01-27
  • 1970-01-01
  • 2021-01-10
  • 1970-01-01
  • 1970-01-01
  • 2020-12-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多