我正在尝试将数据库上的连接授予用户作为该数据库中的模式所有者。
架构所有者不是超级用户。
我是否需要成为数据库的所有者才能执行
GRANT CONNECT ON DATABASE DBXXX TO USER_YYY; ??
除了超级用户之外,应该授予用户什么角色以允许它授予连接?
我正在尝试将数据库上的连接授予用户作为该数据库中的模式所有者。
架构所有者不是超级用户。
我是否需要成为数据库的所有者才能执行
GRANT CONNECT ON DATABASE DBXXX TO USER_YYY; ??
除了超级用户之外,应该授予用户什么角色以允许它授予连接?
概括:
我有一个运行 kubectl port-forward 的 docker 容器,它将作为 k8s 服务运行的 postgres 服务的端口(5432)转发到本地端口(2223)。在 Dockerfile 中,我已经暴露了相关的 2223 端口。然后我通过发布所述端口 ( -p 2223:2223
)来运行容器
现在,当我尝试通过 访问 postgrespsql -h localhost -p 2223
时,出现以下错误:
psql: server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.
但是,当我docker exec -ti
对上述容器执行上述操作并运行上述 psql 命令时,我可以连接到 postgres。
Dockerfile 命令:
EXPOSE 2223
CMD ["bash", "-c", "kubectl -n namespace_test port-forward service/postgres-11-2 2223:5432"]
Docker 运行命令:
docker run -it --name=k8s-conn-12 -p 2223:2223 my_image_name:latest
docker run 命令的输出:
Forwarding from 127.0.0.1:2223 -> 5432
所以端口转发成功,我可以从 docker 容器内部连接到 postgres 实例。我不能做的是从容器外部连接到暴露和发布的端口
我的服务器上有一个 PHP 脚本,需要访问数据库用户才能正常工作。编写 PHP 脚本的人告诉将以下内容添加到 pg_hba.conf :
host all all 127.0.0.1/32 trust
这会对我造成任何与安全相关的问题吗?根据我的理解,该行的作用是它允许本地托管的脚本在没有密码的情况下连接到 pgsql。这个对吗 ?
该行的存在是否会导致在没有数据库密码的情况下建立到我的数据库的任何远程连接?
我有一个名为 servername.mydomain.com 的服务器。我可以使用端口号 X 对这个服务器执行 ssh,方法是:
ssh [email protected] -p X
从这台服务器我可以运行:
psql -h localhost -d myDatabase -U myusername -p DBPORT
而不是必须使用 ssh 登录,我希望能够使用 psql 作为:
psql -h servername.mydomain.com:X -d myDatabase -U myusername -p DBPORT
这可能吗?我试过这个,但我收到消息:无法翻译主机名......
我只是从 Postgres 开始。
这是在 Ubuntu 14.04 LTS 上全新安装的 Postgres 9.5。我使用了来自: http ://www.postgresql.org/download/linux/ubuntu/的 apt repo
介绍页面http://www.postgresql.org/docs/9.5/static/tutorial-createdb.html说“-U”应该可以工作。它没有:
chris@blue:~$ psql -U postgres
psql: FATAL: Peer authentication failed for user "postgres"
然而,如果我“su”到 postgres,一切都很好:
chris@blue:~$ sudo su - postgres
postgres@blue:~$ psql
psql (9.5.2)
Type "help" for help.
postgres=#
我误解了什么?
情况如下。这是一个 Ubuntu 盒子:
Linux ns3mx3 2.6.32-41-server #89-Ubuntu SMP Fri Apr 27 22:33:31 UTC 2012 x86_64 GNU/Linux
这意味着当我第一次发布\e
时psql
,我被要求选择一位编辑。然后是.selected_editor
文件,其中包含
# Generated by /usr/bin/select-editor
SELECTED_EDITOR="/usr/bin/mcedit-debian"
到目前为止,这是可以的(这是我的问题,我认为这完全没用,但没关系)。
然后我设置了一个.psqlrc
文件:
\set PSQL_EDITOR /usr/bin/vim
\set EDITOR /usr/bin/vim
\set VISUAL /usr/bin/vim
如您所见,我想确保不要错过编辑器设置的候选变量。该文件按预期使用:
test=# \echo :EDITOR
/usr/bin/vim
但是当我发出\e
命令时,这些都没有被使用——我退回到SELECTED_EDITOR
. 如果我将 an 附加\unset SELECTED_EDITOR
到.psqlrc
文件,情况仍然相同。
现在我怎样才能让.psqlrc
设置胜过默认编辑器呢?
(PostgreSQL 版本号 9.1.4)
在/var/lib/pgsql/9.1/data/pg_hba.conf
中,我有以下内容:
# TYPE DATABASE USER ADDRESS METHOD
host all all 127.0.0.1/32 trust
但是当我执行
su -c "psql -d postgres" - postgres
它要求我输入密码。我的期望是不应提示用户输入密码。
我正在编写一个使用 2 种形式调用 psql 的 shell 脚本……一种是通过命令(-c),另一种是通过文件(-f)。
例如 psql -c "create table foo (bar integer)"
psql -f foobar.sql
这些形式之间的一个区别是,如果遇到错误,命令调用 (-c) 返回非零退出代码,而文件调用 (-f) 似乎总是返回零。
我想知道这种行为是否有解决方法?(即,如果在执行文件时发生错误,则返回非零值)。
谢谢。