在WSL中安装和使用Postgres
#教程 #postgres #database #wsl

我会保持这么短而甜蜜的状态,所以我假设您知道自己的bash,Postgres并已经安装了WSL。

要安装Postgres并在WSL中运行它,您要做的就是以下内容:

  1. 打开WSL终端
  2. 更新您的Ubuntu软件包:sudo apt update
  3. 包装更新后,请安装PostgreSQL(以及具有一些有用实用程序的-Contrib软件包),使用:sudo apt install postgresql postgresql-contrib
  4. 确认安装并获取版本号:psql --version

默认管理用户postgres需要分配的密码才能连接到数据库。设置密码:

  1. 输入命令:sudo passwd postgres
  2. 您将获得提示输入新密码。
  3. 关闭并重新打开您的终端。

您可以使用sudo -u postrges psql直接访问PSQL。您应该看到您的及时更改为:

postgres=#

更改数据库只需使用\c mydb

您也可以使用su - postgres进入Postgres用户。在这里,您使用步骤5-6中设置的密码。您的提示应更改为:

postgres@mycomputername:~$

从这里,您可以使用PSQL登录任何数据库。

创建数据库

要创建数据库,只需使用以下命令:

createdb mydb

您可以将mydb更改为要给数据库的任何名称。要访问它,只需在命令行中输入psql mydb。现在您的提示应该看起来像这样:

mydb=#

要从文件中创建数据库中的表,请使用以下命令:

psql -U postgres -q twit < <file-path/file.sql>

有用的命令

  • \l列出了所有数据库。来自任何数据库的工作。
  • \dt列出了当前数据库中的所有表。
  • \c <db name>切换到其他数据库。

使用没有sudo的psql

使用以下命令创建与Ubuntu用户名相同名称的Postgres用户。当它询问时,使新角色成为超级用户。

$ sudo -u postgres createuser --interactive
Enter name of role to add: sabrina
Shall the new role be a superuser? (y/n) y

然后,您必须更改pg_hba.conf文件。它将在/etc/postgresql/<postgres-version>/main下。您将需要Sudo来编辑此文件。

sudo vi pg_hba.conf

滚动到文件的底部,现在更改为peer的位置,像trust一样:

# Database administrative login by Unix domain socket
local   all             postgres                                trust

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     trust

从Windows访问数据库

  1. 您必须更改文件postgresql.conf。只需输入listen_address的线路,然后将其更改为listen_address = '*'
  2. 为Postgres管理员用户sudo -u postgres psql -c "ALTER USER postgres PASSWORD 'postgres';"设置密码。这将将密码更改为Postgres,这是您连接到数据库时使用的。您在安装过程中设置的密码是针对Postgres Ubuntu用户的。

现在,您应该能够使用诸如TablePlus的软件从Windows连接到数据库。

需要更多?

这只是一个快速概述,要做什么来启动和运行,有关更深入的教程,请参见this和以下列出的来源。

来源

WSL Documentation: Install PostgreSQL
Postgres documentation: 1.3. Creating a Database
StackOverflow: PostgreSQL: Why psql can't connect to server?
StackExchange: How do I list all databases and tables using psql?
StackOverflow: fatal role "root" does not exist
POSTGRESQL ON WSL2 FOR WINDOWS: INSTALL AND SETUP
StackOverflow: password authentication failed for user "postgres"