如何第一次configurationpostgresql?

我刚刚安装了postgresql,并在安装过程中指定了密码x。 当我尝试做createdb并指定任何密码,我得到的消息:

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

相同的createuser

我应该如何开始? 我可以将自己作为用户添加到数据库吗?

其他答案并不完全令我满意。 以下是在Xubuntu 12.04.1 LTS上针对postgresql-9.1的工作原理。

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

    sudo -u postgres psql template1

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

    ALTER USER用encryption密码“xxxxxxx”postgres;

  3. 编辑pg_hba.conf文件:

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

    在“postgres”的行上将“peer”改为“md5”

    本地所有postgres 同行 MD5

  4. 重新启动数据库:

    sudo /etc/init.d/postgresql重新启动

    (在这里你可以检查它使用psql -U postgres 。)

  5. 创build一个和你同名的用户(find它,你可以键入whoami ):

    createuser -U postgres -d -e -E -l -P -r -s <my_name>

    这些选项告诉postgresql创build一个用户login,创build数据库,创build新的angular色,是一个超级用户,并将有一个encryption的密码。 真正重要的是-P -E,这样你被要求键入将被encryption的密码,-d,以便你可以做一个createdb

    注意密码 :它会先问你两次新密码(对于新用户),重复,然后一次postgres密码(在步骤2中指定的密码)。

  6. 再一次,编辑pg_hba.conf文件(参见上面的步骤3),并在“all”其他用户的行上将“peer”改为“md5”:

    本地所有的 同行 md5

  7. 重新启动(如步骤4),并检查您是否可以在不使用-U postgres的情况下login:

    psql模板1

    请注意,如果你仅仅使用psql ,它将会失败,因为它会尝试将你连接到一个与你同名的默认数据库(即whoami )。 template1是从这里开始的pipe理数据库。

  8. 现在已经创build了createdb <dbname>应该可以工作。

在Linux下PostgresQL通常configuration为允许root用户以shell(console或ssh)的postgres超级用户postgres身份login。

 $ psql -U postgres 

然后像往常一样创build一个新的数据库:

 CREATE ROLE myuser LOGIN password 'secret'; CREATE DATABASE mydatabase ENCODING 'UTF8' OWNER myuser; 

这应该没有触及pg_hba.conf 。 如果你想在networking上使用一些graphics用户界面工具来做到这一点 – 那么你需要把pg_hba.conf搞砸。

这是我的解决scheme:

 su root su postgres psql 

这对我来说在标准的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. 创build一个新的数据库

sudo –u postgres createdb mytestdb

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

psql –U postgres –W

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

\l

有两种方法可以使用。 两者都需要创build一个用户一个数据库。

  1. 使用createuser和createdb

     $ sudo -u postgres createuser -s $USER $ createdb mydatabase $ psql -d mydatabase 
  2. 使用SQLpipe理命令,并通过TCP连接密码

     $ sudo -u postgres psql postgres 

    然后,在psql shell中

     CREATE ROLE myuser LOGIN PASSWORD 'mypass'; CREATE DATABASE mydatabase WITH OWNER = myuser; 

    然后你可以login,

     $ psql -h localhost -d mydatabase -U myuser -p <port> 

    如果你不知道这个端口,你可以通过运行以下命令来获得它,作为postgres用户,

     SHOW port; 

    要么,

     $ grep "port =" /etc/postgresql/*/main/postgresql.conf 

旁注: postgres用户

我build议不要修改postgres用户。

  1. 它通常是从操作系统locking的。 没有人应该作为postgres “login”到操作系统。 你应该有root权限来authenticationpostgres
  2. 它通常不受密码保护,并委托给主机操作系统。 这是一件好事 。 这通常意味着要以PostgreSQL作为PostgreSQL等同于SQL Server的SA身份login,则必须具有对底层数据文件的写入访问权限。 而且,这意味着无论如何你都可以正常地破坏。
  3. 通过保持禁用状态,可以消除通过指定的超级用户进行暴力攻击的风险。 隐藏和遮蔽超级用户的名字具有优势。

您可能需要更新您的pg_hba.conf文件。 该文件控制用户可以从哪个IP地址login。 我认为postgres用户默认是locking的。

只需浏览到您的安装目录并执行该文件“pg_env.bat”,然后进入bin文件夹并执行pgAdmin.exe。 这一定是毫无疑问的!