Appearance
创建数据库
在开始使用 PostgreSQL 之前,我们首先需要创建一个数据库。PostgreSQL 服务器实例可以管理多个数据库,一般建议为每个项目或每个用户创建单独的数据库以便于管理。本文将介绍如何创建和管理 PostgreSQL 数据库。
数据库创建流程
一个标准的数据库创建和管理流程如下:
创建数据库
基本语法
创建数据库的基本命令如下:
sql
createdb mydb
这个命令将创建一个名为mydb
的新数据库。如果命令执行后没有任何响应,表示创建成功。
创建同名数据库
您可以创建一个与当前用户名相同的数据库,这样许多 PostgreSQL 工具会将其作为默认值,为您节省输入:
sql
createdb
常见问题及解决方案
问题 1:命令未找到
bash
createdb: command not found
这表明 PostgreSQL 可能未正确安装,或者 shell 的搜索路径未包含 PostgreSQL 的 bin 目录。
解决方案:
- 使用绝对路径调用命令:bash
/usr/local/pgsql/bin/createdb mydb
- 将 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?
解决方案:
- 检查 PostgreSQL 服务是否已启动
- 确认服务器监听的地址和端口是否正确
问题 3:用户不存在
bash
createdb: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed: FATAL: role "joe" does not exist
解决方案:
- 请管理员为您创建 PostgreSQL 用户账户
- 使用
-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 用户名连接。如果不指定,默认使用与当前操作系统账户相同的名称。