我刚安装了postgresql,并在安装过程中指定了密码x。当我尝试执行createdb
并指定任何密码时,我收到以下消息:
createdb:无法连接到数据库postgres:严重:用户的密码身份验证失败
相同createuser
。
我应该如何开始?我可以将自己添加为数据库用户吗?
我刚安装了postgresql,并在安装过程中指定了密码x。当我尝试执行createdb
并指定任何密码时,我收到以下消息:
createdb:无法连接到数据库postgres:严重:用户的密码身份验证失败
相同createuser
。
我应该如何开始?我可以将自己添加为数据库用户吗?
Answers:
其他答案对我来说并不完全令人满意。这是在Xubuntu 12.04.1 LTS上用于postgresql-9.1的工具。
使用用户postgres连接到默认数据库:
须藤-u postgres psql template1
设置用户postgres的密码,然后退出psql(Ctrl-D):
使用加密密码“ xxxxxxx”的ALTER USER postgres;
编辑pg_hba.conf
文件:
须藤vim /etc/postgresql/9.1/main/pg_hba.conf
并在与postgres有关的行上将“ peer”更改为“ md5”:
本地所有 postgres
对等md5
要知道您正在运行的Postgresql版本,请在中查找version文件夹/etc/postgresql
。另外,您可以使用Nano或其他编辑器代替VIM。
重新启动数据库:
sudo /etc/init.d/postgresql重新启动
(在这里您可以检查它是否适用于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”:
本地所有 所有
对等md5
重新启动(如步骤4中所示),并检查是否可以在不使用-U postgres的情况下登录:
psql template1
请注意,如果执行mere psql
,它将失败,因为它将尝试将您连接到与您同名的默认数据库(即whoami
)。template1是从头开始的管理数据库。
现在createdb <dbname>
应该可以工作了。
pg_hba.conf
必须是第一行,否则由于其他规则(F21上的pgsql 9.3.5)而可能被忽略。我花了一些时间弄清楚这一点,对于postgresql用户,取消注释和更改已经注释掉的行将不会简单地完成。
local all all peer
更改了第3点md5
。好?
在Linux下,通常将PostgresQL配置为允许root用户postgres
从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"
即使是须藤。
psql -d mydatatabase -U myuser
。
这是我的解决方案:
su root
su postgres
psql
sudo bash
。
您可以使用两种方法。两者都需要创建一个用户和一个数据库。
使用createuser和createdb,
$ sudo -u postgres createuser --superuser $USER
$ createdb mydatabase
$ psql -d mydatabase
使用SQL管理命令,并通过TCP连接密码
$ sudo -u postgres psql postgres
然后,在psql shell中
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
。您应该具有身份验证身份的根postgres
。postgres
与SQL Server等效的PostgreSQL 登录SA
,必须具有对基础数据文件的写访问权。并且,这意味着您通常无论如何都可以破坏。sudo -u postgres createuser -U postgres -d -e -E -l -P -r -s $(whoami)
-s
使用户成为超级用户。
编辑:警告:请阅读由埃文·卡洛尔(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
用户不是一个好主意。stackoverflow.com/a/41604969/124486-
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
for host
(local
如果使用的是ssh)。
如果您像我一样运行macOS,则可能没有postgres用户。
尝试运行时sudo -u postgres psql
出现错误sudo: unknown user: postgres
幸运的是,postgres提供了一些可执行文件。
createuser -D /var/postgres/var-10-local --superuser --username=nick
createdb --owner=nick
然后,我可以psql
毫无问题地访问。
psql
psql (10.2)
Type "help" for help.
nick=#
如果要从头开始创建新的postgres实例,请按照以下步骤操作。我使用了非默认端口,因此可以运行两个实例。
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
做完了!
在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