Skip to content

创建数据库

在开始使用 PostgreSQL 之前,我们首先需要创建一个数据库。PostgreSQL 服务器实例可以管理多个数据库,一般建议为每个项目或每个用户创建单独的数据库以便于管理。本文将介绍如何创建和管理 PostgreSQL 数据库。

数据库创建流程

一个标准的数据库创建和管理流程如下:

创建数据库

基本语法

创建数据库的基本命令如下:

sql
createdb mydb

这个命令将创建一个名为mydb的新数据库。如果命令执行后没有任何响应,表示创建成功。

创建同名数据库

您可以创建一个与当前用户名相同的数据库,这样许多 PostgreSQL 工具会将其作为默认值,为您节省输入:

sql
createdb

常见问题及解决方案

问题 1:命令未找到
bash
createdb: command not found

这表明 PostgreSQL 可能未正确安装,或者 shell 的搜索路径未包含 PostgreSQL 的 bin 目录。

解决方案:

  1. 使用绝对路径调用命令:
    bash
    /usr/local/pgsql/bin/createdb mydb
  2. 将 PostgreSQL 的 bin 目录添加到系统 PATH 中
问题 2:无法连接服务器
bash
createdb: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed: No such file or directory
Is the server running locally and accepting connections on that socket?

解决方案:

  1. 检查 PostgreSQL 服务是否已启动
  2. 确认服务器监听的地址和端口是否正确
问题 3:用户不存在
bash
createdb: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed: FATAL: role "joe" does not exist

解决方案:

  1. 请管理员为您创建 PostgreSQL 用户账户
  2. 使用-U选项或设置PGUSER环境变量指定已存在的 PostgreSQL 用户名
问题 4:权限不足
bash
createdb: error: database creation failed: ERROR: permission denied to create database

解决方案: 请站点管理员授予您创建数据库的权限

数据库命名规则

在创建数据库时,需要注意以下命名规则:

数据库命名规则

  • 第一个字符必须是字母
  • 长度限制为 63 个字节
  • 名称区分大小写

删除数据库

如果您不再需要某个数据库,可以使用dropdb命令将其删除:

sql
dropdb mydb

不可恢复操作

删除数据库是一个物理删除所有关联文件的操作,且无法撤销!请在执行此操作前谨慎考虑。

不同用户场景的处理方法

bash
# 使用默认用户创建数据库
createdb myproject

# 指定用户创建数据库
createdb -U postgres myproject
bash
# 创建用户并授权
CREATE USER developer WITH PASSWORD 'password';
GRANT ALL PRIVILEGES ON DATABASE myproject TO developer;
bash
# 应用程序连接字符串示例
DATABASE_URL="postgresql://developer:password@localhost:5432/myproject"

用户与数据库的关系

PostgreSQL 中用户和数据库的关系如下:

PostgreSQL 用户与操作系统用户

PostgreSQL 用户账户与操作系统用户账户是分开的。当您连接到数据库时,可以选择使用哪个 PostgreSQL 用户名连接。如果不指定,默认使用与当前操作系统账户相同的名称。