PostgreSQL17.x创建数据库及数据库信息查看命令

PostgreSQL17.x创建数据库及数据库信息查看命令

文章目录

  • PostgreSQL17.x创建数据库及数据库信息查看命令
  • 1.创建数据库
    • [1. 使用 SQL 命令创建数据库](#1. 使用 SQL 命令创建数据库)
    • [2. 创建数据库并指定字符集](#2. 创建数据库并指定字符集)
    • [3. 验证数据库是否创建成功](#3. 验证数据库是否创建成功)
    • [3. 远程连接](#3. 远程连接)
      • [1. 修改 PostgreSQL 配置文件](#1. 修改 PostgreSQL 配置文件)
      • [2. 修改客户端认证配置](#2. 修改客户端认证配置)
      • [4. 指定某个用户](#4. 指定某个用户)
      • [5. 指定某个网段可连接](#5. 指定某个网段可连接)
      • [6. 重启 PostgreSQL 服务](#6. 重启 PostgreSQL 服务)
  • [2. 查看数据库及表](#2. 查看数据库及表)
    • [1. 查看数据库信息](#1. 查看数据库信息)
    • [2. 查看表信息](#2. 查看表信息)
      • [1. 连接到 PostgreSQL 服务器](#1. 连接到 PostgreSQL 服务器)
      • [2. 切换数据库](#2. 切换数据库)
      • [3. 查看当前数据库中的所有表](#3. 查看当前数据库中的所有表)
      • [4. 查看特定表的结构](#4. 查看特定表的结构)
  • [3. 常用命令](#3. 常用命令)
  • [3. 常用命令](#3. 常用命令)

1.创建数据库

创建数据库前请确保您具有足够的权限。通常,只有超级用户或被授予了 CREATEDB 权限的用户才能创建数据库。

数据库名称必须遵循 PostgreSQL 的标识符命名规则,且不能与已存在的数据库名称重复。

创建数据库时,还可以指定一些额外的选项,如字符集、模板数据库等。例如可以指定使用 UTF8 字符集

1. 使用 SQL 命令创建数据库

已经连接到了 PostgreSQL 服务器,可以直接运行 CREATE DATABASE 命令来创建一个新的数据库。

sql 复制代码
CREATE DATABASE dbName;

2. 创建数据库并指定字符集

sql 复制代码
CREATE DATABASE mydatabase WITH ENCODING 'UTF8';

3. 验证数据库是否创建成功

创建数据库后,您可以使用 \l 命令列出所有数据库,检查新创建的数据库是否存在。

sql 复制代码
\l

3. 远程连接

要允许 PostgreSQL 用户从远程主机连接到数据库,需要进行几个配置步骤。以下是在 PostgreSQL 17 中配置远程连接的详细步骤:

1. 修改 PostgreSQL 配置文件

首先,需要编辑 PostgreSQL 的配置文件 postgresql.conf,以允许监听来自外部网络的连接。

  1. 找到 postgresql.conf 文件
  • Linux系统中,默认情况下这个文件位于 PostgreSQL 的数据目录中,通常是 /etc/postgresql/17/main//var/lib/pgsql/17/data/

  • Windows系统中,默认情况下这个文件位于 PostgreSQL 的数据目录中,如:D:\Programs\PostgreSQL\17\data\

  1. 编辑 postgresql.conf 文件
  • 使用文本编辑器打开 postgresql.conf 文件。
  • 找到 listen_addresses 配置项,并将其设置为 '*',表示允许从任何 IP 地址连接。例如:
shell 复制代码
listen_addresses = '*'

2. 修改客户端认证配置

接下来,需要编辑 pg_hba.conf 文件,以允许特定的用户从特定的 IP 地址连接到数据库。

  1. 找到 pg_hba.conf 文件

    • 这个文件通常也位于 PostgreSQL 的数据目录中,与 postgresql.conf 文件在同一位置。
  2. 编辑 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 加密的密码认证。

4. 指定某个用户

使用文本编辑器打开 pg_hba.conf 文件。

shell 复制代码
# 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:
....

5. 指定某个网段可连接

shell 复制代码
# 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.0192.168.1.255 的网段。
    • METHOD: 认证方法,scram-sha-256 表示使用 scram-sha-256加密的密码认证。

6. 重启 PostgreSQL 服务

修改配置文件后,需要重启 PostgreSQL 服务以使更改生效。

shell 复制代码
# Windows下先停止在启动
# 停止服务
net stop postgresql-x64-17
# 启动服务
net start postgresql-x64-17

2. 查看数据库及表

1. 查看数据库信息

shell 复制代码
\l

2. 查看表信息

在 PostgreSQL 17 中,使用 psql 命令行工具可以方便地切换数据库和查看表结构。以下是详细的步骤和命令:

1. 连接到 PostgreSQL 服务器

首先,使用 psql 命令连接到 PostgreSQL 服务器。假设您要以 john 用户连接到 localhost 上的 PostgreSQL 服务器:

复制代码
psql -h localhost -U john
  • -h localhost: 指定服务器地址,如果是本地连接,可以省略。
  • -U john: 指定连接的用户名。

连接成功后,您会看到 psql 提示符,类似于 john=#

2. 切换数据库

如果您已经连接到某个数据库,但需要切换到另一个数据库,可以使用 \c 命令。假设您要切换到 mydatabase 数据库:

复制代码
\c mydatabase

3. 查看当前数据库中的所有表

要查看当前数据库中的所有表,可以使用 \dt 命令:

复制代码
\dt

这个命令会列出当前数据库中的所有表。

shell 复制代码
# 切换到 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 行记录)

4. 查看特定表的结构

如果您想查看某个表的详细结构,可以使用 \d 命令加上表名。例如,查看 users 表的结构:

复制代码
\d users

3. 常用命令

1. 查看数据库

shell 复制代码
\l

2. 切换数据库

sql 复制代码
\c dbName

3.查看所有模式

shell 复制代码
\dn

4.查看所有函数

sql 复制代码
\df

想查看某个表的详细结构,可以使用 \d 命令加上表名。例如,查看 users 表的结构:

复制代码
\d users

3. 常用命令

1. 查看数据库

shell 复制代码
\l

2. 切换数据库

sql 复制代码
\c dbName

3.查看所有模式

shell 复制代码
\dn

4.查看所有函数

sql 复制代码
\df
相关推荐
爱的叹息6 分钟前
Redis 除了数据类型外的核心功能 的详细说明,包含事务、流水线、发布/订阅、Lua 脚本的完整代码示例和表格总结
数据库·redis·lua
快来卷java3 小时前
MySQL篇(六)MySQL 分库分表:应对数据增长挑战的有效策略
数据库·mysql·oracle
IT认证通关5 小时前
金仓数据库KCM认证考试介绍【2025年4月更新】
数据库
程序猿阿伟5 小时前
《SQL赋能人工智能:解锁特征工程的隐秘力量》
数据库·人工智能·sql
冰箱里的金鱼6 小时前
MYSQL 存储引擎 和 日志
数据库
Yan-英杰6 小时前
【百日精通JAVA | SQL篇 | 第三篇】 MYSQL增删改查
java·数据库·sql
信徒_6 小时前
Mysql 中的 binlog、redolog、undolog
数据库·mysql
极限实验室7 小时前
代理 Elasticsearch 服务:INFINI Gateway VS Nginx
数据库·搜索引擎
三月七(爱看动漫的程序员)7 小时前
LLM面试题六
数据库·人工智能·gpt·语言模型·自然语言处理·llama·milvus
追光天使8 小时前
Mac 上使用 mysql -u root -p 命令,出现“zsh: command not found: mysql“?
数据库·mysql·macos