创建数据库前请确保您具有足够的权限。通常,只有超级用户或被授予了
CREATEDB
权限的用户才能创建数据库。数据库名称必须遵循 PostgreSQL 的标识符命名规则,且不能与已存在的数据库名称重复。
创建数据库时,还可以指定一些额外的选项,如字符集、模板数据库等。例如可以指定使用 UTF8 字符集
已经连接到了 PostgreSQL 服务器,可以直接运行 CREATE DATABASE
命令来创建一个新的数据库。
CREATE DATABASE dbName;
CREATE DATABASE mydatabase WITH ENCODING 'UTF8';
创建数据库后,您可以使用
\l
命令列出所有数据库,检查新创建的数据库是否存在。
\l
要允许 PostgreSQL 用户从远程主机连接到数据库,需要进行几个配置步骤。以下是在 PostgreSQL 17 中配置远程连接的详细步骤:
首先,需要编辑 PostgreSQL 的配置文件 postgresql.conf
,以允许监听来自外部网络的连接。
postgresql.conf
文件:Linux系统中,默认情况下这个文件位于 PostgreSQL 的数据目录中,通常是 /etc/postgresql/17/main/
或 /var/lib/pgsql/17/data/
Windows系统中,默认情况下这个文件位于 PostgreSQL 的数据目录中,如:D:\Programs\PostgreSQL\17\data\
postgresql.conf
文件:postgresql.conf
文件。listen_addresses
配置项,并将其设置为 '*'
,表示允许从任何 IP 地址连接。例如:listen_addresses = '*'
接下来,需要编辑 pg_hba.conf
文件,以允许特定的用户从特定的 IP 地址连接到数据库。
找到 pg_hba.conf
文件:
postgresql.conf
文件在同一位置。编辑 pg_hba.conf
文件:
使用文本编辑器打开 pg_hba.conf
文件。
添加或修改一行,允许特定的用户从特定的 IP 地址连接。例如,允许用户 john
从 IP 地址 192.168.1.100
连接:
# TYPE DATABASE USER ADDRESS METHOD
host all john 192.168.1.100/32 md5
解释:
TYPE
: 连接类型,host
表示 TCP/IP 连接。DATABASE
: 允许连接的数据库名称,all
表示所有数据库。USER
: 允许连接的用户名。ADDRESS
: 允许连接的 IP 地址和子网掩码。192.168.1.100/32
表示单个 IP 地址,192.168.1.0/24
表示整个子网。METHOD
: 认证方法,md5
表示使用 MD5 加密的密码认证。使用文本编辑器打开 pg_hba.conf
文件。
# TYPE DATABASE USER ADDRESS METHOD
...
# IPv4 local connections:
host all all 127.0.0.1/32 scram-sha-256
host all all 192.168.1.26/32 scram-sha-256
# IPv6 local connections:
....
# TYPE DATABASE USER ADDRESS METHOD
...
# IPv4 local connections:
host all all 127.0.0.1/32 scram-sha-256
host all all 192.168.1.0/24 scram-sha-256
# IPv6 local connections:
....
添加或修改一行,允许特定网段的主机连接。例如,允许用户 all(所有用户)
从 192.168.1.0/24
网段的主机连接
TYPE
: 连接类型,host
表示 TCP/IP 连接。DATABASE
: 允许连接的数据库名称,all
表示所有数据库。USER
: 允许连接的用户名,all
表示所有用户。ADDRESS
: 允许连接的 IP 地址和子网掩码。192.168.1.0/32
表示整个 192.168.1.0
到 192.168.1.255
的网段。METHOD
: 认证方法,scram-sha-256
表示使用 scram-sha-256加密的密码认证。修改配置文件后,需要重启 PostgreSQL 服务以使更改生效。
# Windows下先停止在启动
# 停止服务
net stop postgresql-x64-17
# 启动服务
net start postgresql-x64-17
\l
在 PostgreSQL 17 中,使用 psql
命令行工具可以方便地切换数据库和查看表结构。以下是详细的步骤和命令:
首先,使用 psql
命令连接到 PostgreSQL 服务器。假设您要以 john
用户连接到 localhost
上的 PostgreSQL 服务器:
psql -h localhost -U john
-h localhost
: 指定服务器地址,如果是本地连接,可以省略。-U john
: 指定连接的用户名。连接成功后,您会看到 psql
提示符,类似于 john=#
。
如果您已经连接到某个数据库,但需要切换到另一个数据库,可以使用 \c
命令。假设您要切换到 mydatabase
数据库:
\c mydatabase
要查看当前数据库中的所有表,可以使用 \dt
命令:
\dt
这个命令会列出当前数据库中的所有表。
# 切换到 syson-db数据库
postgres-# \c "syson-db"
您现在已经连接到数据库 "syson-db",用户 "postgres".
# 查看当前数据库下的表
syson-db-# \dt
关联列表
架构模式 | 名称 | 类型 | 拥有者
----------+-------------------------+--------+--------
public | databasechangelog | 数据表 | dbuser
public | databasechangeloglock | 数据表 | dbuser
public | document | 数据表 | dbuser
public | image | 数据表 | dbuser
public | nature | 数据表 | dbuser
public | project | 数据表 | dbuser
public | project_image | 数据表 | dbuser
public | representation_content | 数据表 | dbuser
public | representation_metadata | 数据表 | dbuser
public | semantic_data | 数据表 | dbuser
public | semantic_data_domain | 数据表 | dbuser
(11 行记录)
如果您想查看某个表的详细结构,可以使用 \d
命令加上表名。例如,查看 users
表的结构:
\d users
\l
\c dbName
\dn
\df
想查看某个表的详细结构,可以使用 \d
命令加上表名。例如,查看 users
表的结构:
\d users
\l
\c dbName
\dn
\df