How to configure postgresql for the first time?
我刚刚安装了postgresql,我在安装过程中指定了密码x。
当我尝试
createdb: could not connect to database postgres: FATAL: password authentication failed for user
我应该怎么开始?
我可以将自己添加为数据库用户吗?
其他答案对我来说并不完全令人满意。这是在Xubuntu 12.04.1 LTS上对postgresql-9.1有效的方法。
使用用户postgres连接到默认数据库:
sudo -u postgres psql template1
设置用户postgres的密码,然后退出psql(Ctrl-D):
ALTER USER postgres with encrypted password 'xxxxxxx';
编辑
sudo vim /etc/postgresql/9.1/main/pg_hba.conf
关于postgres的行改为"peer"到"md5":
local all postgres
peermd5
重启数据库:
sudo /etc/init.d/postgresql restart
(在这里你可以检查它是否适用于
创建一个与您同名的用户(要找到它,您可以键入
createuser -U postgres -d -e -E -l -P -r -s
这些选项告诉postgresql创建一个可以登录,创建数据库,创建新角色,是超级用户并且具有加密密码的用户。真正重要的是-P -E,因此要求您输入要加密的密码和-d,以便您可以执行
小心密码:它会首先询问您两次新密码(对于新用户),重复,然后再次发出postgres密码(步骤2中指定的密码)。
再次,编辑
local all all
peermd5
重启(如步骤4),并检查您是否可以在没有-U postgres的情况下登录:
psql template1
请注意,如果仅执行
现在
在Linux下,PostgresQL通常配置为允许root用户从shell(控制台或ssh)以postgres超级用户
1 | $ psql -U postgres |
然后你就像往常一样创建一个新的数据库:
1 2 | CREATE ROLE myuser LOGIN password 'secret'; CREATE DATABASE mydatabase ENCODING 'UTF8' OWNER myuser; |
这应该可以在不触及
这是我的解决方案:
1 2 3 | su root su postgres psql |
您可以使用两种方法。两者都需要创建用户和数据库。
使用createuser和createdb,
1 2 3 | $ sudo -u postgres createuser --superuser $USER $ createdb mydatabase $ psql -d mydatabase |
使用SQL管理命令,并通过TCP连接密码
1 | $ sudo -u postgres psql postgres |
然后,在psql shell中
1 2 | CREATE ROLE myuser LOGIN PASSWORD 'mypass'; CREATE DATABASE mydatabase WITH OWNER = myuser; |
然后你可以登录,
1 | $ psql -h localhost -d mydatabase -U myuser -p <port> |
如果你不知道端口,你可以通过运行以下命令来获得它,作为
1 | SHOW port; |
要么,
1 | $ grep"port =" /etc/postgresql/*/main/postgresql.conf |
旁注:
我建议不要修改
编辑:警告:请阅读Evan Carroll发布的答案。看来这个解决方案不安全,不推荐。
这对我来说是标准的Ubuntu 14.04 64位安装。
我按照说明进行了一些修改,我在http://suite.opengeo.org/4.1/dataadmin/pgGettingStarted/firstconnect.html中找到了这些修改。
local all postgres peer
至:
local all postgres md5
如果你像我一样运行macOS,你可能没有postgres用户。
尝试运行
幸运的是,postgres提供了可执行文件。
1 2 | createuser -D /var/postgres/var-10-LOCAL --superuser --username=nick createdb --owner=nick |
然后我能够毫无问题地访问
1 2 3 4 5 | psql psql (10.2) TYPE"help" FOR help. nick=# |
如果你是从头开始创建一个新的postgres实例,这是我采取的步骤。我使用了非默认端口,因此我可以运行两个实例。
1 2 | mkdir /var/postgres/var-10-LOCAL pg_ctl init -D /var/postgres/var-10-LOCAL |
然后我用我喜欢的端口5433编辑了
1 2 3 4 | /Applications/Postgres.app/Contents/Versions/10/bin/postgres -D /Users/nick/Library/Application\ Support/Postgres/var-10-LOCAL -p 5433 createuser -D /var/postgres/var-10-LOCAL --superuser --username=nick --port=5433 createdb --owner=nick --port=5433 |
完成!
您可能需要更新
1 2 3 4 5 6 7 | Note: textdb IS the DATABASE which you are going TO explore WITH 'alex' USER root@kalilinux:~# sudo su - postgres postgres=# psql postgres=# CREATE DATABASE testdb; postgres=# CREATE USER alex WITH password 'alex'; postgres=# GRANT ALL PRIVILEGES ON DATABASE testdb TO alex;`enter code here` |
只需浏览到您的安装目录并执行此文件"pg_env.bat",然后进入bin文件夹并执行pgAdmin.exe。这必须毫无疑问!