我不能用普通的psql到Postgres

时间:2013-02-13 09:15:40

标签: postgresql ubuntu-12.04 postgresql-9.2 postgresql-8.4

我总是要给出像sudo -u postgres psql这样的命令才能登录Postgres控制台。为了登录sudo psqlpsql

等帖子,我需要具备哪些条件

我正在处理的环境是Ubuntu Linux 12.04

提前致谢。

3 个答案:

答案 0 :(得分:1)

安装后,只有postgres用户能够对数据库服务器执行任何操作,这是正常的。安装程序不能假设我们想要打开对其他任何人的访问权。

为了让自己作为临时用户进行访问,假设您的登录名是joe(您的普通,非特权用户),您只需要创建相应的用户和数据库:

在psql内部作为postgres管理员(使用sudo -u postgres psql),发出:

 CREATE USER joe;
 CREATE DATABASE joe OWNER joe;

之后,在shell提示符下发出psql时,它将默认使用您的用户名连接到您自己的数据库。在您需要发出其他管理员命令之前,您不再需要sudo到postgres

答案 1 :(得分:0)

  

psql -U psql

为你工作?

编辑:

我虽然你会介意sudo

如果您的问题是键入-U <user>,您还可以设置环境变量PGUSER。这也可以在shell的登录脚本中完成,以便始终设置它。

感兴趣的其他环境变量可能是PGDATABASEPGHOSTPGPORT

答案 2 :(得分:0)

你的psql在/ usr / bin / psql中。除非您的权限错误,否则您不需要使用sudo,或者除非您的链接错误。 (在PostgreSQL的更高版本中,/ usr / bin / psql是可执行文件的符号链接。我不知道在8.4中是否正确。在我的家用计算机上,它链接到/ usr / share / postgresql-common / pg_wrapper 。)

psql的完整框架语法是

psql -U username -h hostname -p portnumber database_name

因此,例如,当我连接到我的临时数据库(名为“sandbox”)时,我会这样做。

$ psql -U postgres -h localhost -p 5432 sandbox

你会替换

  • 您的数据库用户名(必须已存在,且不一定与您的网络/计算机用户名相同),
  • 您的主机名(但“localhost”可能适合本地安装PostgreSQL),
  • PostgreSQL正在侦听的端口(但5432可能是正确的;它是默认值),并且
  • 您的数据库名称。