我刚刚安装了postgresql并在安装过程中指定了密码x。 当我尝试执行createdb
并指定任何密码时,会收到以下消息:
createdb:无法连接到数据库postgres:对于用户身份验证失败的密码,致命错误
createuser
也是同样的情况。
我该如何开始呢? 我可以将自己添加为数据库的用户吗?
我刚刚安装了postgresql并在安装过程中指定了密码x。 当我尝试执行createdb
并指定任何密码时,会收到以下消息:
createdb:无法连接到数据库postgres:对于用户身份验证失败的密码,致命错误
createuser
也是同样的情况。
我该如何开始呢? 我可以将自己添加为数据库的用户吗?
其他的回答对我来说还不够满意。以下是在 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';
编辑 pg_hba.conf
文件:
sudo vim /etc/postgresql/9.1/main/pg_hba.conf
并将关于 postgres 的行上的 "peer" 更改为 "md5":
local all postgres
peermd5
要知道正在运行哪个版本的 postgresql,请查找 /etc/postgresql
下的版本文件夹。此外,您也可以使用 Nano 或其他编辑器。
重新启动数据库:
sudo /etc/init.d/postgresql restart
(在这里,您可以使用 psql -U postgres
检查它是否有效)。
创建一个与您同名的用户(要找到它,可以键入 whoami
):
sudo createuser -U postgres -d -e -E -l -P -r -s
<my_name>
这些选项告诉postgresql创建一个用户,该用户可以登录、创建数据库、创建新角色、是超级用户,并且将拥有加密密码。真正重要的选项是-P -E,这样您会被要求输入将要加密的密码,并且-d选项可以让您执行createdb
命令。
注意密码:它首先会两次询问新密码(用于新用户),接着会询问postgres密码(在第2步中指定的密码)。
再次编辑pg_hba.conf
文件(请参考上述第3步),并将与“所有”其他用户相关的行上的“peer”更改为“md5”:
local all all
peermd5
重新启动postgresql服务(就像第4步一样),并检查是否可以在不使用-U postgres选项的情况下登录:
psql template1
请注意,如果您只执行psql
命令,则会失败,因为它将尝试连接到与您名称相同的默认数据库(即whoami
)。template1是最初的管理数据库。
现在createdb <dbname>
命令应该可以正常工作了。
pg_hba.conf
文件中的行必须放在第一行,否则可能会被其他规则忽略(在F21上运行pgsql 9.3.5)。我花了一些时间才明白这一点,取消注释和更改已经注释的postgresql用户行并不能简单解决问题。 - dashesylocal all all peer
,现在我已将其更改为md5
。好吗? - Léo Léopold Hertz 준영在Linux下,PostgreSQL通常被配置为允许root用户从shell(控制台或ssh)登录为超级用户postgres
。
$ psql -U postgres
那么您只需像往常一样创建新数据库:
CREATE ROLE myuser LOGIN password 'secret';
CREATE DATABASE mydatabase ENCODING 'UTF8' OWNER myuser;
这应该可以在不触及 pg_hba.conf
的情况下正常运行。如果你想使用一些 GUI 工具通过网络来完成这个操作,那么你就需要修改 pg_hba.conf
。
psql: FATAL: Peer authentication failed for user "postgres"
。 - Peter Krausspsql -d mydatatabase -U myuser
连接。 - ranu你可以使用两种方法,均需要创建用户和数据库。
使用createuser和createdb命令,
$ sudo -u postgres createuser --superuser $USER
$ createdb mydatabase
$ psql -d mydatabase
使用SQL管理命令,并通过TCP连接密码
$ sudo -u postgres psql postgres
然后,在psql命令行中执行以下操作:
CREATE ROLE myuser LOGIN PASSWORD 'mypass';
CREATE DATABASE mydatabase WITH OWNER = myuser;
然后你可以登录,
$ psql -h localhost -d mydatabase -U myuser -p <port>
如果您不知道端口号,您可以在作为postgres
用户运行以下命令来获取它:
SHOW port;
或者,
$ grep "port =" /etc/postgresql/*/main/postgresql.conf
postgres
用户我建议不要修改 postgres
用户。
postgres
的身份“登录”到操作系统上。你需要使用root用户来进行验证。SA
(相当于 SQL Server),你必须具有对底层数据文件的写入访问权限。这意味着你本来就能够造成严重破坏。sudo -u postgres createuser -U postgres -d -e -E -l -P -r -s $(whoami)
。 - Fabien Snauwaert-s
会将用户设置为超级用户。 - Evan Carrollsudo vim /etc/postgresql/11/main/pg_hba.conf
然后
:%s/\(local\s\+all\s\+all\s\+\)peer/\1md5/g
然后
:x
然后
sudo /etc/init.d/postgresql restart
。 - undefined这是我的解决方案:
su root
su postgres
psql
sudo bash
替换了第一行。 - eje211编辑提示:警告:请先阅读Evan Carroll发布的答案。这个解决方案似乎不安全,也不建议使用。
这在标准的Ubuntu 14.04 64位安装中对我有效。
我遵循了我在http://suite.opengeo.org/4.1/dataadmin/pgGettingStarted/firstconnect.html找到的带有小修改的说明。
sudo apt-get install postgresql
sudo –u postgres psql postgres
\password postgres
\q
#Database administrative login by Unix domain socket
local all postgres peer
至:
#Database administrative login by Unix domain socket
local all postgres md5
sudo service postgresql restart
sudo –u postgres createdb mytestdb
psql –U postgres –W
\l
postgres
用户是个不好的主意。https://dev59.com/23M_5IYBdhLWcg3wPAVF#41604969 - Evan Carroll在 MacOS 中,我按照以下步骤使其工作。
首次安装后,获取系统的用户名。
$ cd ~
$ pwd
/Users/someuser
$ psql -d postgres -U someuser
现在您已经登录系统,可以创建数据库。
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
createuser -D /var/postgres/var-10-local --superuser --username=nick
createdb --owner=nick
然后我能够顺利地访问psql
。
psql
psql (10.2)
Type "help" for help.
nick=#
如果您要从头开始创建新的PostgreSQL实例,请按照以下步骤进行操作。我使用了非默认端口,以便可以运行两个实例。
mkdir /var/postgres/var-10-local
pg_ctl init -D /var/postgres/var-10-local
然后我编辑了/var/postgres/var-10-local/postgresql.conf
,将端口号更改为我喜欢的5433。
/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
完成!
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_hba.conf
文件。该文件控制用户可以从哪些 IP 地址登录。我认为默认情况下 postgres 用户是相当安全的。/var/lib/pgsql/data/pg_hba.conf
。将ident
更改为trust
以供host
使用(如果您正在使用ssh,则还需更改local
)。 - DavidGamba
postgres
用户。它是 PostgreSQL 的SU
,会导致登录攻击。创建另一个超级用户,并将锁定的postgres
保留给具有 root 权限的 UNIX 管理员。 - Evan Carroll