如何第一次configurationpostgresql?
我刚刚安装了postgresql,并在安装过程中指定了密码x。 当我尝试做createdb并指定任何密码,我得到的消息: 
createdb:无法连接到数据库postgres:FATAL:用户的密码validation失败
 相同的createuser 。 
我应该如何开始? 我可以将自己作为用户添加到数据库吗?
其他答案并不完全令我满意。 以下是在Xubuntu 12.04.1 LTS上针对postgresql-9.1的工作原理。
- 
使用用户postgres连接到默认数据库: sudo -u postgres psql template1 
- 
设置用户postgres的密码,然后退出psql(Ctrl-D): ALTER USER用encryption密码“xxxxxxx”postgres; 
- 
编辑 pg_hba.conf文件:sudo vim /etc/postgresql/9.1/main/pg_hba.conf 在“postgres”的行上将“peer”改为“md5” 本地所有postgres 同行MD5
- 
重新启动数据库: sudo /etc/init.d/postgresql重新启动 (在这里你可以检查它使用 psql -U postgres。)
- 
创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中指定的密码)。 
- 
再一次,编辑 pg_hba.conf文件(参见上面的步骤3),并在“all”其他用户的行上将“peer”改为“md5”:本地所有的 同行md5
- 
重新启动(如步骤4),并检查您是否可以在不使用-U postgres的情况下login: psql模板1 请注意,如果你仅仅使用 psql,它将会失败,因为它会尝试将你连接到一个与你同名的默认数据库(即whoami)。 template1是从这里开始的pipe理数据库。
- 
现在已经创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中的说明进行了小小的修改。;
- 安装postgreSQL(如果不在你的机器中):
 sudo apt-get install postgresql 
- 使用postgres用户运行psql
 sudo –u postgres psql postgres 
- 为postgres用户设置一个新的密码:
 \password postgres 
- 退出psql
 \q 
- 编辑/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 
- 重新启动postgreSQL:
 sudo service postgresql restart 
- 创build一个新的数据库
 sudo –u postgres createdb mytestdb 
- 再次用postgres用户运行psql:
 psql –U postgres –W 
- 列出现有的数据库(您的新数据库应该在那里):
 \l 
有两种方法可以使用。 两者都需要创build一个用户和一个数据库。
- 
使用createuser和createdb , $ sudo -u postgres createuser -s $USER $ createdb mydatabase $ psql -d mydatabase
- 
使用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用户。 
-  它通常是从操作系统locking的。 没有人应该作为postgres“login”到操作系统。 你应该有root权限来authenticationpostgres。
-  它通常不受密码保护,并委托给主机操作系统。 这是一件好事 。 这通常意味着要以PostgreSQL作为PostgreSQL等同于SQL Server的SA身份login,则必须具有对底层数据文件的写入访问权限。 而且,这意味着无论如何你都可以正常地破坏。
- 通过保持禁用状态,可以消除通过指定的超级用户进行暴力攻击的风险。 隐藏和遮蔽超级用户的名字具有优势。
 您可能需要更新您的pg_hba.conf文件。 该文件控制用户可以从哪个IP地址login。 我认为postgres用户默认是locking的。 
只需浏览到您的安装目录并执行该文件“pg_env.bat”,然后进入bin文件夹并执行pgAdmin.exe。 这一定是毫无疑问的!