如何第一次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。 这一定是毫无疑问的!