PostgreSQL

注意:
PostgreSQL安装、psql工具、PostgreSQL角色和数据库管理、启用远程访问PostgreSQL服务器(慎用)、PostgreSQL Shell命令

需要以root或有sudo权限的用户登录

AI导读:本文介绍了PostgreSQL的安装和管理,包括使用psql工具进行数据库操作、创建角色和数据库、以及启用远程访问的注意事项。在安装PostgreSQL后,用户需要以root或有sudo权限的身份登录,并可切换到postgres用户使用psql工具。文中详细说明了创建角色、数据库及授权的步骤,并警告关于远程访问时应谨慎设置防火墙和配置文件。附录部分列出了常用的PostgreSQL Shell命令,以帮助用户进行基本的数据库操作和管理。

Step1 安装PostgreSQL

1
2
sudo apt update
sudo apt install postgresql postgresql-contrib

状态

1
sudo systemctl restart postgresql.service

打印版本

1
sudo -u postgres psql -c "SELECT version();"

Step2 psql工具

为了以postgres用户身份登录 PostgreSQL 服务器,首先切换用户,然后使用psql工具访问 PostgreSQL。

1
2
sudo su - postgres
psql

退出 PostgreSQL Shell,输入:

1
\q

也可以不切换用户,而使用sudo命令访问 PostgreSQL:

1
sudo -u postgres psql

Step3 PostgreSQL角色和数据库管理

具体见[附录1](## 附录1 PostgreSQL Shell命令)

创建PostgreSQL角色

1
sudo su - postgres -c "createuser manpower"

创建一个数据库

1
sudo su - postgres -c "createdb manpowerdb"

授权用户操作数据库

1
2
sudo -u postgres psql # 进入psql
grant all privileges on database manpowerdb to manpower;

Step4 启用远程访问PostgreSQL服务器(慎用)

公网ip慎用,若使用请确保防火墙仅接受信任IP的连接

修改配置文件

1
sudo vi /etc/postgresql/12/main/postgresql.conf

CONNECTIONS AND AUTHENTICATION一节添加listen_addresses = '*'

1
2
3
# - Connection Settings -

listen_addresses = '*' # what IP address(es) to listen on;

保存文件并且重启 PostgreSQL 服务:

1
sudo service postgresql restart

使用ss工具验证修改:

1
ss -nlt | grep 5432

在你的防火墙上打开端口5432端口

1
sudo ufw allow proto tcp from 192.168.1.0/24 to any port 5432

附录1 PostgreSQL Shell命令

基本使用

为postgres用户设置一个密码

1
\password postgres

建数据库用户dbuser(刚才创建的是Linux系统用户),并设置密码

1
CREATE USER dbuser WITH PASSWORD 'password';

创建用户数据库,这里为exampledb,并指定所有者为dbuser

1
CREATE DATABASE exampledb OWNER dbuser;

将exampledb数据库的所有权限都赋予dbuser,否则dbuser只能登录控制台,没有任何数据库操作权限

1
GRANT ALL PRIVILEGES ON DATABASE exampledb to dbuser;

控制台命令

除了前面已经用到的\password命令(设置密码)和\q命令(退出)以外,控制台还提供一系列其他命令。

  • \h:查看SQL命令的解释,比如\h select。

  • ?:查看psql命令列表。

  • \l:列出所有数据库。

  • \c [database_name]:连接其他数据库。

  • \d:列出当前数据库的所有表格。

  • \d [table_name]:列出某一张表格的结构。

  • \du:列出所有用户。

  • \e:打开文本编辑器。

  • \conninfo:列出当前数据库和连接的信息。

数据库操作

基本的数据库操作,就是使用一般的SQL语言

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# 创建新表
CREATE TABLE user_tbl(name VARCHAR(20), signup_date DATE);

# 插入数据
INSERT INTO user_tbl(name, signup_date) VALUES('张三', '2013-12-22');

# 选择记录
SELECT * FROM user_tbl;

# 更新数据
UPDATE user_tbl set name = '李四' WHERE name = '张三';

# 删除记录
DELETE FROM user_tbl WHERE name = '李四' ;

# 添加栏位
ALTER TABLE user_tbl ADD email VARCHAR(40);

# 更新结构
ALTER TABLE user_tbl ALTER COLUMN signup_date SET NOT NULL;

# 更名栏位
ALTER TABLE user_tbl RENAME COLUMN signup_date TO signup;

# 删除栏位
ALTER TABLE user_tbl DROP COLUMN email;

# 表格更名
ALTER TABLE user_tbl RENAME TO backup_tbl;

# 删除表格
DROP TABLE IF EXISTS backup_tbl;

参考文章:
参考链接

作者

Janki

发布于

2022-12-21

更新于

2024-09-03

许可协议

评论