我刚刚安装了postgresql,我在安装过程中指定了密码x。当我尝试做createdb
并指定任何密码时,我收到消息:
createdb:无法连接到数据库postgres:FATAL:用户密码验证失败
createuser
也是如此。
我应该怎么开始?我可以将自己添加为数据库用户吗?
其他答案对我来说并不完全令人满意。这是在Xubuntu 12.04.1 LTS上对postgresql-9.1有效的方法。
pg_hba.conf
文件:
sudo vim /etc/postgresql/9.1/main/pg_hba.conf
关于postgres的行改为“peer”到“md5”:
当地所有的Postgres
窥视
MD5psql -U postgres
。)whoami
):
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”:
当地所有的一切
窥视
MD5psql
,它将失败,因为它会尝试将您连接到与您具有相同名称的默认数据库(即.whoami
)。 template1是从头开始的管理数据库。createdb <dbname>
应该工作。在Linux下,PostgresQL通常配置为允许root用户从shell(控制台或ssh)以postgres超级用户postgres
身份登录。
$ psql -U postgres
然后你就像往常一样创建一个新的数据库:
CREATE ROLE myuser LOGIN password 'secret';
CREATE DATABASE mydatabase ENCODING 'UTF8' OWNER myuser;
这应该没有触及pg_hba.conf
。如果你想通过网络使用一些GUI工具来做到这一点 - 那么你需要搞乱pg_hba.conf
。
这是我的解决方案:
su root
su postgres
psql
您可以使用两种方法。两者都需要创建用户和数据库。
$ sudo -u postgres createuser --superuser $USER
$ createdb mydatabase
$ psql -d mydatabase
$ 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
user我建议不要修改postgres
用户。
postgres
一样“登录”操作系统。你应该有root用户来验证postgres
。postgres
登录,这是PostgreSQL相当于SQL Server的SA
,你必须具有对底层数据文件的写访问权。而且,这意味着无论如何你通常都会破坏混乱。编辑:警告:请阅读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
您可能需要更新您的pg_hba.conf
文件。此文件控制用户可以从哪些IP地址登录。我认为postgres用户默认是非常锁定的。
如果你像我一样运行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
然后我用我喜欢的端口5433编辑了/var/postgres/var-10-local/postgresql.conf
。
/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_env.bat”,然后转到bin文件夹并执行pgAdmin.exe。这必须毫无疑问!