AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 294290
Accepted
Miantian
Miantian
Asked: 2021-06-16 04:38:33 +0800 CST2021-06-16 04:38:33 +0800 CST 2021-06-16 04:38:33 +0800 CST

如何在 linux 中设置基于用户的 .psql_history?

  • 772

如果在 linux 中使用 postgres,它有一个postgres用户。所以当psql从这个用户使用时,它会在这个用户下生成一个.psql_history文件 - /home/postgres/.psql_history。

在 linux 服务器上设置很多用户时,他们都想psql在他们的会话下使用/home/user1. 如何让他们使用psql并为他们每个人生成 psql 历史记录?

像这些

  • /home/user1/.psql_history
  • /home/user2/.psql_history
  • /home/.../.psql_history

是否需要为每个用户安装 postgres 客户端?

postgresql linux
  • 2 2 个回答
  • 155 Views

2 个回答

  • Voted
  1. Best Answer
    Jasen
    2021-06-17T04:31:09+08:002021-06-17T04:31:09+08:00

    为每个人创建 unix 用户帐户,并在 pg_ident 中设置用户名映射,以便每个人都作为 postgres 连接。

    https://www.postgresql.org/docs/10/auth-username-maps.html

    或者为每个帐户创建单独的数据库用户并为他们提供超级用户权限。如果您希望 postgres 拥有新的关系,可以选择“设置会话身份验证 postgres”作为启动操作在 ~/.psqlrc 中设置 - 如果每个人都已经是超级用户,这并没有太大区别。

    • 2
  2. Evan Carroll
    2021-06-17T16:39:32+08:002021-06-17T16:39:32+08:00

    不是理想的配置

    PostgreSQL 的创建使得数据库内部的权限旨在直接镜像系统。你可以解决这个问题,它不会太痛苦,但你应该psql按照你user1的user2例子运行。

    现在你要求做的是一个特别糟糕的主意。postgres不是普通用户,是超级用户。这些用户可以DROP DB并且随意TRUNCATE。您可能不希望共享该帐户。

    但是假设您不想授予每个用户连接到数据库或创建新数据库的能力。这并不理想,但如果您想这样做,有一些机制可以帮助您,尽管受上述警告的影响,我永远不会与postgres用户共享访问权限。

    环境变量

    使用HISTFILEor PSQL_HISTORYor 环境变量,

    历史文件

    将用于存储历史列表的文件名。如果未设置,则文件名取自PSQL_HISTORY环境变量。如果也未设置,则默认为~/.psql_history, 或%APPDATA%\postgresql\psql_history在 Windows 上。例如,把:

    \set HISTFILE ~/.psql_history- :DBNAME
    

    in~/.psqlrc将导致 psql 为每个数据库维护单独的历史记录。

    注意:此功能是从 Bash 中无耻地抄袭的。

    你可以这样做

    postgres$ SQL_HISTORY="/home/otheruser/.psql" psql
    

    使用须藤

    你也可以做sudo -E(-E是--preserve-env)观察,

    ❯ sudo -u postgres -- /bin/sh -c "echo ~/.psql_history"
    /var/lib/postgresql/.psql_history
    ❯ sudo -E -u postgres -- /bin/sh -c "echo ~/.psql_history"
    /home/ecarroll/.psql_history
    

    您可以通过上面的-E标志看到我们获取调用sudo的用户目录,而不是您要更改为的用户。因此,您可以postgres通过执行此操作以身份登录并将历史记录记录到您的主目录,

    ❯ sudo -E -u postgres -- psql
    

    现在你只需要决定你想给谁这个非常危险的访问权限!

    • 2

相关问题

  • 我可以在使用数据库后激活 PITR 吗?

  • 运行时间偏移延迟复制的最佳实践

  • 存储过程可以防止 SQL 注入吗?

  • PostgreSQL 中 UniProt 的生物序列

  • PostgreSQL 9.0 Replication 和 Slony-I 有什么区别?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve