基础

切换用户至 posgres 进入数据库交互式命令行:

sudo -u postgres psql

在 bash 中输入以下命令操作数据库

要求当前登录用户是 postgre
# 创建数据库
createdb [数据库名]

# 删除数据库
dropdb database_name

以其它用户身份创建数据库:

# -W 密码验证
createdb -U [用户名] -W [数据库名]

命令 psql 以进入数据库的交互式命令行

使用 \? 获取帮助


命令行

最开始遇到的问题

以用户 example 进入 testdb 数据库的交互式命令行

# -W 为输入密码
psql -U example -W testdb

用户名, 密码, 数据库都正确, 但却报错:

psql: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL:  Peer authentication failed for user "example"

问题出在身份验证方式上, 如果当前操作系统的用户名与数据库中的用户名不一致, 就会认证失败

在PostgreSQL中,Peer 身份验证是一种针对本地连接的身份验证方法。默认情况下,它使用操作系统的用户和组来验证 PostgreSQL 的用户身份。

我们可以修改认证方式来解决这个问题:

md5 认证方式我个人不推荐, 在本地连接中, 可以采用 SCRAM-SHA-256 认证
  1. 编辑 /etc/postgresql/版本号/main/pg_hba.conf 文件, 修改本地认证方式

    # TYPE  DATABASE        USER            ADDRESS                 METHOD
    local   all             all                                     scram-sha-256
  2. 重启 postgreSQL 服务

数据库

在交互式命令行中, 可用简写命令查询和切换数据库

\l # 列出数据库
\c  [数据库] # 切换数据库

使用 SQL 语句操作数据库

# 查找数据库
SELECT datname FROM pg_database;

用户管理

创建用户

CREATE USER 用户名 WITH PASSWORD '密码';

分配权限

GRANT ALL PRIVILEGES ON DATABASE 数据库 TO 用户;

-- 修改数据库所有者
ALTER DATABASE 数据库 OWNER TO 用户;

# 赋予超级权限
ALTER USER 用户 WITH SUPERUSER;
一般先用 postgres 创建数据库, 再授权数据库给用户

删除用户:

DROP USER IF EXISTS 用户名;

权限管理

-- 去除用户创建数据库的权限:
ALTER ROLE 用户名 NOCREATEDB;

-- 授权用户可创建数据库:
ALTER ROLE 用户名 CREATEDB

开启远程连接

建议使用非管理员用户开启远程连接

修改配置文件 /etc/postgresql/版本号/main/postgresql.conf, 以允许其它 IP 进行访问

listen_addresses = "*"

修改 /etc/postgresql/版本号/main/pg_hba.conf 文件, 以允许远程连接

# TYPE  DATABASE        USER            ADDRESS                 METHOD
host    all             all             0.0.0.0/0               scram-sha-256
根据需要修改文件

最后重启 PostageSQL 服务


交互式命令行

\l # 列出数据库

信息查看

查看选项:

  • S 系统对象 (show system objects)
  • + 额外信息 (additional detail)

一个例子:

\d # 列出表, 视图等
\du # 列出角色, 即用户

PGSQL 语句

创建数据库:

CREATE DATABASE 数据库名;
最后修改:2025 年 10 月 01 日
如果觉得我的文章对你有用,请随意赞赏