Postgresql的快速安装与简单使用

一、以docker快速部署pgsql

docker run -d \
-p 5432:5432 \
--name pgsql \
-e POSTGRES_PASSWORD=123456 \
-v /home/docker/timescaledb/data:/var/lib/postgresql/data \
--restart=always \
postgres:12

二、以docker快速部署pgsql + timescaledb

docker run -d \
-p 5432:5432 \
--name timescaledb \
-e POSTGRES_PASSWORD=123456 \
-v /home/docker/timescaledb/data:/var/lib/postgresql/data \
--restart=always \
timescale/timescaledb:latest-pg11

三、pgsql的简单使用(pgsql的使用与我们习惯的mysql相差很大)

1、docker部署的pgsql操作:

# 进入容器
docker exec -it xxxxxxx /bin/bash

# 切换用户(pgsql的操作都需要切换到postgres用户)
su postgres

# 连接pgsql:
psql -Upostgres

# 创建数据库:
CREATE DATABASE jiguiquan;

# 查看数据库:
\l

# 删除数据库:
drop database jiguiquan;

# 断开退出:
\q 1

2、非docker部署的pgsql操作:

# 本机无密码直接登录:
sudo -u postgres psql
# 或
su postgres
psql -Upostgres

# 登录其它机器:
psql -h 10.206.73.150 -p 5432 -U postgres -d postgres -W
## -W: 表示控制台输入密码登录

# 修改密码:
ALTER USER postgres WITH PASSWORD 'Haier2022!@#';

补充一:postgresql部署后,用户无法通过其它机器登录

原因是因为没有在配置文件中允许对应的IP的用户接入:

# 找到配置文件pg_hba.conf
[root@master ~]# find / -name pg_hba.conf
/var/lib/pgsql/13/data/pg_hba.conf

# 修改配置,允许指定ip段的用户连接
host    all             all             10.206.73.0/24          trust

修改后,对pgsql服务进行重启:

[root@master ~]# su - postgres
Last login: Wed Jul  6 16:41:13 CST 2022 on pts/0
-bash-4.2$ pg_ctl restart


补充二:对于允许的IP段的用户,输入任意密码都可以连接数据库,很不安全

同样是修改上面的配置文件pg_hba.conf:

host    all             all             0.0.0.0/0               md5
## 我这么配置就是,允许所有的ip的用户以密码的方式连接


补充三:使用pg_dump对Postgresql数据的备份和恢复

我将使用pg_dump命令,将testtb中的数据copy到copytb的数据库中,使用Navicat实操不可行(某些行数据过长)

1、数据库的备份:

# pg_dump  --host hostname --port 5432 --username username -t tablename -f d://test.sql dbname
hostname:主机名称
username:用户名
tablename:导出的表名
daname:使用的数据库名

# 实操:
pg_dump  --host localhost --port 5432 --username postgres -f /var/lib/postgresql/data/testtb.sql testtb

#查看
postgres@7bd21c826f4e:~/data$ ls -alh
total 7.3M
drwx------ 19 postgres postgres 4.0K Sep 13 02:19 .
drwxr-xr-x  1 postgres postgres   27 Sep 13 02:17 ..
drwx------  9 postgres postgres   93 Sep 13 01:59 base
drwx------  2 postgres postgres 4.0K Sep 13 02:23 global
...
-rw-r--r--  1 postgres postgres 7.2M Sep 13 02:19 testtb.sql

2、恢复至copytb数据库中:

psql -d dbname --username username -f D://test.sql

#实操
psql -d copytb --username postgres -f /var/lib/postgresql/data/testtb.sql

成功后,校验,数据库正常可用,数据正常!

3、如果是docker中部署的postgresql,并且没有挂载的话,那就docker cp出来:

docker cp pgsql:/var/lib/postgresql/data/testtb.sql ~/testtb.sql

jiguiquan@163.com

文章作者信息...

留下你的评论

*评论支持代码高亮<pre class="prettyprint linenums">代码</pre>

相关推荐