0

在此处输入图像描述

我在控制台上使用 emacs (emacs -nw)。我使用 sql 模式,当连接到 postgresql 时,它要求我在缓冲区中输入密码,其中密码可见。

如果我在 sql-postgre-login-params 列表中自定义组并设置密码选项,它会在 minibuffer 上询问密码,但也会在缓冲区上询问密码。

如何自定义 sql-mode 以仅在 minibuffer 上要求输入密码?

提前致谢。

编辑:Emacs 版本:GNU Emacs 24.3.1 (x86_64-unknown-linux-gnu, GTK+ Version 2.24.10)

4

2 回答 2

0

你用的是什么emacs版本?当我使用 emacs23 时,这发生在我身上,如果是这样的话,你有几个选择。

  • 更新到 emacs 24。它会自动隐藏密码。

  • 如果这种情况发生一两次,您可以使用M-x send-invisible (RET) password (RET)

  • 如果这种情况经常发生,请尝试:

    (add-hook 'comint-output-filter-functions 'comint-watch-for-password-prompt)

于 2014-03-07T10:37:51.690 回答
0

找到了这个问题的临时解决方案。

根据 psql 手册页:

-W,--密码
强制 psql 在连接到数据库之前提示输入密码。 这个选项从来都不是必需的,因为 psql 会自动提示输入 如果服务器要求密码验证,则输入密码。但是,psql 将 浪费连接尝试发现服务器需要密码。 在某些情况下,值得键入 -W 以避免额外的连接尝试。

因此,当连接需要密码时,通过 psql 连接到 postgres 数据库将提示在缓冲区中输入密码。

临时解决方案可能是-w在 psql 调用上设置选项以不询问密码。~/.pgpass然后,它从文件中获取密码。该文件具有 0600 权限,因此不安全。但现在对我有用。

.emacs文件中:

(自定义设置变量
        '(sql-postgres-options (quote ("-P" "pager=off" "-w" ))))

更好的解决方案可能是使用 ssl 证书,我将对此进行探讨。

感谢大家的帮助。

于 2014-03-08T08:01:05.847 回答