如何首次配置postgresql?

Roh*_*nga 183 database linux postgresql configuration

我刚刚安装了postgresql,我在安装过程中指定了密码x.当我尝试createdb并指定任何密码时,我收到消息:

createdb:无法连接到数据库postgres:FATAL:用户的密码验证失败

同样的createuser.

我应该怎么开始?我可以将自己添加为数据库用户吗?

Man*_*nur 315

其他答案对我来说并不完全令人满意.这是在Xubuntu 12.04.1 LTS上对postgresql-9.1有效的方法.

  1. 使用用户postgres连接到默认数据库:

    sudo -u postgres psql template1

  2. 设置用户postgres的密码,然后退出psql(Ctrl-D):

    ALTER USER postgres加密密码'xxxxxxx';

  3. 编辑pg_hba.conf文件:

    sudo vim /etc/postgresql/9.1/main/pg_hba.conf

    关于postgres的行改为"peer"到"md5":

    本地所有      postgres      peer md5

  4. 重启数据库:

    sudo /etc/init.d/postgresql restart

    (在这里你可以检查它是否适用ls /etc/postgresql.)

  5. 创建一个与您同名的用户(要找到它,您可以键入psql -U postgres):

    createuser -U postgres -d -e -E -l -P -r -s whoami

    这些选项告诉postgresql创建一个可以登录,创建数据库,创建新角色,是超级用户并且具有加密密码的用户.真正重要的是-P -E,因此要求您输入将被加密的密码,以及-d以便您可以执行此操作<my_name>.

    小心密码:它会首先询问您两次新密码(对于新用户),重复,然后再次发出postgres密码(步骤2中指定的密码).

  6. 再次,编辑createdb文件(参见上面的步骤3),并在关于"所有"其他用户的行上将"peer"更改为"md5":

    本地      所有     同行 md5

  7. 重启(如步骤4),并检查您是否可以在没有-U postgres的情况下登录:

    psql template1

    请注意,如果您仅仅执行此操作pg_hba.conf,它将失败,因为它将尝试将您连接到与您具有相同名称的默认数据库(即.psql).template1是从头开始的管理数据库.

  8. 现在whoami应该工作.

  • 在Ubuntu 14.04 LTS上工作得很好 (2认同)
  • 就像一个注释一样,`pg_hba.conf`中的行必须是第一行,否则它可能因其他规则而被忽略(F21上的pgsql 9.3.5).我花了一些时间才弄明白这一点,对于postgresql用户来说,取消注释和更改已经注释掉的行不会简单地做到. (2认同)
  • 这实际上是一个糟糕的建议。你正在和 postgres 用户搞混。http://stackoverflow.com/a/41604969/124486 (2认同)

Oli*_*old 52

在Linux下,PostgresQL通常配置为允许root用户postgres从shell(控制台或ssh)以postgres超级用户身份登录.

$ psql -U postgres
Run Code Online (Sandbox Code Playgroud)

然后你就像往常一样创建一个新的数据库:

CREATE ROLE myuser LOGIN password 'secret';
CREATE DATABASE mydatabase ENCODING 'UTF8' OWNER myuser;
Run Code Online (Sandbox Code Playgroud)

这应该没有触及pg_hba.conf.如果你想通过网络使用一些GUI工具来做到这一点 - 那么你需要搞砸pg_hba.conf.

  • `psql:致命:即使用sudo,用户"postgres"的对等身份验证也失败了. (6认同)

Adm*_*ian 19

这是我的解决方案:

su root
su postgres
psql
Run Code Online (Sandbox Code Playgroud)

  • 这将在许多情况下起作用,因为许多站点将使用pg_hba.conf对postgres系统帐户(对等方法)对postgres db用户进行身份验证.但是,成功登录最终将取决于任何特定站点的pg_hba.conf的内容. (4认同)

Eva*_*oll 16

您可以使用两种方法.两者都需要创建用户数据库.

  1. 使用createuser和createdb,

    $ sudo -u postgres createuser --superuser $USER
    $ createdb mydatabase
    $ psql -d mydatabase
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使用SQL管理命令,并通过TCP连接密码

    $ sudo -u postgres psql postgres
    
    Run Code Online (Sandbox Code Playgroud)

    然后,在psql shell中

    CREATE ROLE myuser LOGIN PASSWORD 'mypass';
    CREATE DATABASE mydatabase WITH OWNER = myuser;
    
    Run Code Online (Sandbox Code Playgroud)

    然后你可以登录,

    $ psql -h localhost -d mydatabase -U myuser -p <port>
    
    Run Code Online (Sandbox Code Playgroud)

    如果您不知道端口,可以通过以postgres用户身份运行以下命令来获取端口

    SHOW port;
    
    Run Code Online (Sandbox Code Playgroud)

    要么,

    $ grep "port =" /etc/postgresql/*/main/postgresql.conf
    
    Run Code Online (Sandbox Code Playgroud)

旁注:postgres用户

我建议不要修改postgres用户.

  1. 它通常是从操作系统锁定的.没有人应该"登录"操作系统postgres.你应该有root来进行身份验证postgres.
  2. 它通常不受密码保护,并委托给主机操作系统.这是一件好事.这通常意味着为了登录postgresPostgreSQL等效的SQL Server SA,您必须具有对底层数据文件的写访问权.而且,这意味着无论如何你通常都会破坏混乱.
  3. 通过禁用此功能,您可以消除通过指定超级用户进行暴力攻击的风险.隐藏和模糊超级用户的名称具有优势.


Rob*_*ert 15

这对我来说是标准的Ubuntu 14.04 64位安装.

我按照说明进行了一些修改,我在http://suite.opengeo.org/4.1/dataadmin/pgGettingStarted/firstconnect.html中找到了这些修改.

  1. 安装postgreSQL(如果你的机器上还没有):

sudo apt-get install postgresql

  1. 使用postgres用户运行psql

sudo –u postgres psql postgres

  1. 为postgres用户设置一个新密码:

\password postgres

  1. 退出psql

\q

  1. 编辑/etc/postgresql/9.3/main/pg_hba.conf并更改:

#Database administrative login by Unix domain socket local all postgres peer

至:

#Database administrative login by Unix domain socket local all postgres md5

  1. 重启postgreSQL:

sudo service postgresql restart

  1. 创建一个新数据库

sudo –u postgres createdb mytestdb

  1. 再次使用postgres用户运行psql:

psql –U postgres –W

  1. 列出现有数据库(您的新数据库现在应该在那里):

\l

  • 我投了反对票,因为我认为激活 `postgres` 用户是个坏主意。http://stackoverflow.com/a/41604969/124486 (2认同)
  • @ Evan-Carroll我编辑了指向您的答案。 (2认同)

Sup*_*ova 8

在 MacOS 中,我按照以下步骤使其工作。

首次安装后,获取系统的用户名。

$ cd ~
$ pwd
/Users/someuser
$ psql -d postgres -U someuser
Run Code Online (Sandbox Code Playgroud)

现在您已经登录系统,可以创建数据库了。

postgres=# create database mydb;
CREATE DATABASE
postgres=# create user myuser with encrypted password 'pass123';
CREATE ROLE
postgres=# grant all privileges on database mydb to myuser;
GRANT
Run Code Online (Sandbox Code Playgroud)