docker安装postgresql操作

#查询镜像 docker search postgres
#默认拉取最新版本 docker pull postgres
#拉取指定版本 docker pull postgres:12.5
#查看拉取的镜像
[root@centos1 overlay2]# docker images |grep postgres
postgres      12.5      044aa8666500   8 days ago      314MB

路径:/var/lib/docker
[root@centos1 overlay2]# cd /var/lib/docker/image/overlay2
[root@centos1 overlay2]# pwd
/var/lib/docker/image/overlay2
[root@centos1 overlay2]# cat repositories.json |jq .
{
  "Repositories": {
    "hello-world": {
      "hello-world:latest": "sha256:bf756fb1ae65adf866bd8c456593cd24beb6a0a061dedf42b26a993176745f6b",
      "hello-world@sha256:1a523af650137b8accdaed439c17d684df61ee4d74feac151b5b337bd29e7eec": "sha256:bf756fb1ae65adf866bd8c456593cd24beb6a0a061dedf42b26a993176745f6b"
    },
    "postgres": {
      "postgres:12.5": "sha256:044aa866650085813087ea84d5d27f7f92370dcf52812f0d3cc559a4dadc2a4d",
      "postgres@sha256:87eb6772b300b260f080eceb7658c39a37a6bd1e302f459305d2d4b5df3523b0": "sha256:044aa866650085813087ea84d5d27f7f92370dcf52812f0d3cc559a4dadc2a4d"
    }
  }
}

#创建本地目录用于挂载 mkdir /root/bwz/pgdata -p
#创建一个名字为postgres1的容器
[root@centos1 ~]# docker run --name postgres1 -e POSTGRES_PASSWORD=123456 -e TZ=PRC -p 5432:5432 -v /root/bwz/pgdata:/var/lib/postgresql/data -d postgres:12.5
6f8364ca217cffb7e9f257bd0a4d7215fe68a877ecf7f218fd153563829dac72
[root@centos1 ~]# 
--name postgres1 #给容器起个名字
-p 5432:5432 #端口映射 宿主机:容器
-e POSTGRES_PASSWORD=123456 #设置密码(默认用户名postgres)
-e TZ=PRC #时区,中国,如果在启动容器时不设置时区,默认为UTC,使用now()设置默认值的时候将有时间差。
-v /docker/postgresql/data:/var/lib/postgresql/data #映射数据目录,将容器内路径/docker/postgresql/data指向宿主机路径/var/lib/postgresql/data
-d #后台运行

#查看正在运行容器 docker ps 
#查看历史运行容器 docker ps -a

#运行出错,查看错误信息 docker logs postgres1

--进入容器postgres1
docker exec -it postgres1 /bin/bash

#退出容器 exit 
#关闭容器 docker stop postgres1
#重启容器 docker restart postgres1
#启动容器 docker start postgres1
#删除容器 docker rm postgres1


###以下命令进入容器后执行
root@ad10d614eef5:/# whereis psql
psql: /usr/bin/psql /usr/lib/postgresql/12/bin/psql /usr/share/man/man1/psql.1.gz

--用缺省用户postgres连接数据库
root@ad10d614eef5:/# psql -U postgres
psql (12.5 (Debian 12.5-1.pgdg100+1))
Type "help" for help.
postgres=#

--创建用户,1. 要以英文分号结尾;2.密码需要单引号包裹;3.用户名首字母不能大写
postgres=# create user bwz with password '123456';
CREATE ROLE
postgres=#
--赋予用户超级权限
postgres=# alter user bwz superuser ;
ALTER ROLE
postgres=#

--查看所有用户
postgres=# \du
                                   List of roles
 Role name |                         Attributes                         | Member of 
-----------+------------------------------------------------------------+-----------
 bwz       | Superuser                                                  | {}
 postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
postgres=#

--切换用户
postgres=# \c - bwz
You are now connected to database "postgres" as user "bwz".
postgres=> 
--查看当前连接的用户名
postgres=> select user;
 user 
------
 bwz
(1 row)
postgres=> 

--创建数据库db1,db2
postgres=# CREATE DATABASE DB1;
CREATE DATABASE
postgres=# CREATE DATABASE DB2;
CREATE DATABASE
postgres=#

--查看数据库
postgres=# \l
                                 List of databases
   Name    |  Owner   | Encoding |  Collate   |   Ctype    |   Access privileges   
-----------+----------+----------+------------+------------+-----------------------
 db1       | bwz      | UTF8     | en_US.utf8 | en_US.utf8 | 
 db2       | bwz      | UTF8     | en_US.utf8 | en_US.utf8 | 
 postgres  | postgres | UTF8     | en_US.utf8 | en_US.utf8 | 
 template0 | postgres | UTF8     | en_US.utf8 | en_US.utf8 | =c/postgres          +
           |          |          |            |            | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.utf8 | en_US.utf8 | =c/postgres          +
           |          |          |            |            | postgres=CTc/postgres
(5 rows)

postgres=#

--切换数据库
postgres=#  \c db1
You are now connected to database "db1" as user "bwz".
--在db1中建表
db1=# create table t1(a int);
CREATE TABLE
db1=# insert into t1 values (123);
INSERT 0 1
db1=# select * from t1;
  a  
-----
 123
(1 row)
db1=# 

--退出容器
db1=# exit

--备份db1的数据,还原到db2
root@ad10d614eef5:~# cd /var/lib/postgresql/data/
root@ad10d614eef5:/var/lib/postgresql/data#mkdir bwz
root@ad10d614eef5:/var/lib/postgresql/data# cd bwz
root@ad10d614eef5:/var/lib/postgresql/data/bwz# pg_dump -Ubwz -ddb1 -Fc -f dump.dmp
root@ad10d614eef5:/var/lib/postgresql/data/bwz# ll
total 4
-rw-r--r--. 1 root root 1235 Dec 26 17:10 dump.dmp
root@ad10d614eef5:/var/lib/postgresql/data/bwz# pg_restore -Ubwz -ddb2 -Fc dump.dmp
root@ad10d614eef5:/var/lib/postgresql/data/bwz# 
--查看还原结果
root@ad10d614eef5:/var/lib/postgresql/data/bwz# psql -Ubwz -d db2
psql (12.5 (Debian 12.5-1.pgdg100+1))
Type "help" for help.
db2-# \d
       List of relations
 Schema | Name | Type  | Owner 
--------+------+-------+-------
 public | t1   | table | bwz
(1 row)
db2=# select * from t1;
  a  
-----
 123
(1 row)

db2=#
 

猜你喜欢

转载自blog.csdn.net/mnbwz/article/details/111543368