首次使用postgresql如何配置?
- 2024-10-31 08:38:00
- admin 原创
- 269
问题描述:
我刚刚安装了 postgresql,并在安装过程中指定了密码 x。当我尝试执行createdb
并指定任何密码时,我收到以下消息:
createdb:无法连接到数据库 postgres:严重:用户密码验证失败
也一样createuser
。
我应该如何开始?我可以将自己添加为数据库用户吗?
解决方案 1:
其他答案并不能完全让我满意。以下是在 Xubuntu 12.04.1 LTS 上对 postgresql-9.1 起作用的方法。
使用用户 postgres 连接到默认数据库:
sudo -u postgres psql 模板1
设置用户 postgres 的密码,然后退出 psql(Ctrl-D):
ALTER USER postgres 使用加密密码‘xxxxxxx’;
编辑
pg_hba.conf
文件:
sudo vim /etc/postgresql/9.1/main/pg_hba.conf
并将涉及 postgres 的行中的“peer”更改为“md5”:
本地所有 postgres 对等md5
要知道您正在运行哪个版本的 postgresql,请查找 下的版本文件夹/etc/postgresql
。此外,您可以使用 Nano 或其他编辑器代替 VIM。
重新启动数据库:
sudo /etc/init.d/postgresql 重启
(在这里您可以检查它是否可以使用psql -U postgres
)。
创建一个与您同名的用户(要找到它,您可以输入
whoami
):
sudo 创建用户-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 模板1
请注意,如果您仅仅执行psql
,它将会失败,因为它将尝试将您连接到具有与您相同名称的默认数据库(即whoami
)。template1 是从一开始就存在的管理数据库。
现在
createdb <dbname>
就可以工作了。
解决方案 2:
在 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
。
解决方案 3:
您可以使用两种方法。两者都需要创建用户和数据库。
使用 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
。您应该拥有 root 权限才能以 的身份进行身份验证postgres
。它通常不受密码保护,并委托给主机操作系统。这是件好事。这通常意味着,为了以与
postgres
SQL Server 相当的 PostgreSQL身份登录SA
,您必须拥有对底层数据文件的写访问权限。而且,这意味着您通常可以造成破坏。通过禁用此功能,您可以消除通过指定超级用户进行暴力攻击的风险。隐藏和模糊超级用户的名称有好处。
解决方案 4:
这是我的解决方案:
su root
su postgres
psql
解决方案 5:
编辑:警告:请阅读Evan Carroll发布的答案。看来此解决方案不安全,不推荐。
这在标准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
创建新数据库
sudo –u postgres createdb mytestdb
再次使用 postgres 用户运行 psql:
psql –U postgres –W
列出现有的数据库(您的新数据库现在应该在那里):
l
解决方案 6:
在 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
解决方案 7:
如果您像我一样运行 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
完毕!
解决方案 8:
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`
解决方案 9:
您可能需要更新pg_hba.conf
文件。此文件控制哪些用户可以从哪些 IP 地址登录。我认为默认情况下 postgres 用户是相当锁定的。
解决方案 10:
就我而言,我第一次不知道如何进入 postgresql,在最近安装的 Ubuntu 22.04 中,对于我来说,该命令sudo -u postgres psql
有效。
解决方案 11:
安装 PostgresSQL版本 16后,步骤如下。
要检查服务器状态:
sudo systemctl status postgresql
如果您使用pgAdmin之类的工具,则必须为 postgres 用户设置密码。为此,请以postgres
用户身份登录。
sudo -u postgres psql
为 postgres 用户设置密码
password postgres
此命令中的 postgres 是用户名而不是密码。然后它会提示Enter new password for user "postgres":
终于q
退出了。
解决方案 12:
以下命令帮助我设置安装后的数据库
ubuntu@server1:~$ sudo -i -u postgres
postgres@server1:~$
postgres@server1:~$
postgres@server1:~$ psql
psql (12.18 (Ubuntu 12.18-0ubuntu0.20.04.1))
Type "help" for help.
postgres=# create database db1;
postgres=# create user user1 with encrypted password 'pass123';
CREATE ROLE
postgres=# grant all privileges on database db1 to user1;
GRANT
解决方案 13:
只需浏览到您的安装目录并执行此文件“pg_env.bat”,然后转到 bin 文件夹并执行 pgAdmin.exe。毫无疑问,这一定会起作用!
扫码咨询,免费领取项目管理大礼包!