[Share Experiences] Deepin 20.1安装PostgreSQL 13 (paAdmin4)教程 gpt安装
Tofloor
poster avatar
深圳市耀影科技有限公司
deepin
2021-02-15 09:18
Author

Deepin 20.1安装PostgreSQL 13 (paAdmin4)教程   

环境

版本

备注

系统:Deepin 20.1 Linux version 5.4.70-amd64-desktop (deepin@deepin-PC) (Uos 8.3.0.3-3+rebuild) #1 SMP Wed Oct 14 15:24:23 CST 2020          debian buster

PostgreSQL

#安装后查看安装版本psql (PostgreSQL) 13.2 (Debian 13.2-1.pgdg100+1)

$ psql --version 

安装参考:https://www.postgresql.org/download/linux/debian/

https://wiki.postgresql.org/wiki/Apt

pgAdmin 4

安装参考:https://www.pgadmin.org/download/pgadmin-4-apt/

https://bbs.deepin.org/zh/post/213434

 

QQ交流群:52123458

内有教程分享文件,大神勿喷。

 

Deepin 20.1上,可以通过执行以下操作来实现:

$ sudo apt-get install curl ca-certificates gnupg  #安装curl 、ca-certificates、gnupg,

$ curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -  #下载安装源公共key

 

#配置源(速度比较慢,可以更换下面的国内源)

#输入如下命令创建文件/etc/apt/sources.list.d/pgdg.list,并打开编辑

$ sudo deepin-editor /etc/apt/sources.list.d/pgdg.list

#复制如下粘帖到/etc/apt/sources.list.d/pgdg.list文件中

$ deb http://apt.postgresql.org/pub/repos/apt buster-pgdg main

#关闭 保存 返回命令

 

$ sudo apt-get update  #更新本地软件仓库

$ sudo apt-get install postgresql-13  #安装postgresql-13

 

#安装pgadmin4图形管理实用程序

$ sudo apt-get install curl ca-certificates gnupg   #安装curl 、ca-certificates、gnupg

$ curl https://www.pgadmin.org/static/packages_pgadmin_org.pub | sudo apt-key add # 安装源公共key 

#配置源(速度比较慢,可以更换下面的国内源)

#清华大学源

sudo sh -c 'echo "deb https://mirrors.tuna.tsinghua.edu.cn/postgresql/pgadmin/pgadmin4/apt/$(lsb_release -cs) pgadmin4 main" > /etc/apt/sources.list.d/pgadmin4.list && apt update'

#腾讯云源

sudo sh -c 'echo "deb https://mirrors.cloud.tencent.com/postgresql/pgadmin/pgadmin4/apt/$(lsb_release -cs) pgadmin4 main" > /etc/apt/sources.list.d/pgadmin4.list && apt update'

#华为云源

sudo sh -c 'echo "deb https://mirrors.huaweicloud.com/postgresql/pgadmin/pgadmin4/apt/$(lsb_release -cs) pgadmin4 main" > /etc/apt/sources.list.d/pgadmin4.list && apt update'

#输入如下命令/etc/apt/sources.list.d/pgdg.list,打开编辑

$ sudo deepin-editor /etc/apt/sources.list.d/pgdg.list           #在内容后面添加

$ deb https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/buster pgadmin4 main       #关闭保存返回命令行

$ sudo apt-get update             #更新本地软件仓库

$ sudo apt-get install pgadmin4    #安装pgadmin4

$ sudo apt install pgadmin4         # 安装pgAdmin4(桌面和web双模式)

$ sudo apt install pgadmin4-desktop   # 安装pgAdmin4-desktop(桌面单模式)

$ sudo apt install pgadmin4-web         # 安装pgAdmin4-web(web单模式)

$ sudo /usr/pgadmin4/bin/setup-web.sh   # 如果已安装pgadmin4-web单模式,请运行此命令

$ sudo apt-get install postgresql-client   #安装postgresql-client    

$ sudo apt-get install postgresql-contrib   #安装postgresql-contrib

 $ sudo apt-get install postgresql-server-dev-13  #安装postgresql-server-dev-13 

该存储库包含许多不同的软件包,包括第三方插件。 最常见和最重要的软件包是(根据需要替换版本号):

postgresql-client-13

客户端库和客户端二进制文件

postgresql-13

核心数据库服务器

postgresql-contrib-9.x

提供的其他模块(版本10及更高版本中的postgresql-xx软件包的一部分)

libpq-dev

库和C语言前端开发的头文件

postgresql-server-dev-13

用于C语言后端开发的postgresql-server-dev-12库和标头

pgadmin4

pgAdmin 4图形管理实用程序

 

安装后启动服务后默认状态如下 :

1.自动创建了一个系统用户postgres

2.自动创建了一个数据库用户postgres(密码随机)

3.只允许本机通过系统用户postgres连接数据库且无需密码

以上默认状态有很多问题,如:应用程序不能连接、远程不能连接等问题,那么就需要我们修改配置来解决这些问题。

第一步:

1、PostgreSQL登录(使用psql客户端登录)

修改PostgreSQL数据库的默认用户postgres的密码(注意不是linux系统帐号)

linux shell命令下面输入: sudo -u postgres psql (这样就可以直接登录进

postgres 了, 然后在里面可以进行添加用户,修改密码之类的,都不是问题了!!)

1.1

$ sudo -u postgres psql

//这句话的意思是使用postgres用户执行psql命令打开postgresql控制台

//其中,sudo -u postgres 是使用postgres 用户登录的意思

        //PostgreSQL数据默认会创建一个postgres的数据库用户作为数据库的管理员,密码是随机的,所以这里设定为'postgres'

1.2.修改PostgreSQL登录密码:

$postgres=# ALTER USER postgres WITH PASSWORD 'postgres';  

#设置postgres用户的密码为postgres     #postgres=#为PostgreSQL下的命令提示符

$postgres=# \q    #退出PostgreSQL psql客户端 

1.4测试连接

$ psql -h 127.0.0.1 -d postgres -U postgres

#以上命令直接在root用户下执行,如提示输入密码,成功。直接输入上面修改的密码postgres即可登入

1.5[代码说明]

‘$ ’和’#'之前的字符是系统提示符,’postgres=#’是psql客户端的提示符,灰色背景字符为输入命令(本文其它部分亦如此);

1.6[功能说明]

        PostgreSQL数据默认会创建一个postgres的数据库用户作为数据库的管理员,密码是随机的,我人需要修改为指定的密码,这里设定为’postgres’

 

2、修改linux系统的postgres用户的密码(密码与数据库用户postgres的密码相同)

    2.1.删除PostgreSQL用户密码

       $ sudo passwd -d postgres    #passwd -d 是清空指定用户密码的意思

    2.2.设置PostgreSQL用户密码

         PostgreSQL数据默认会创建一个linux用户postgres,通过上面的代码修改密码为'postgres’(这取决于第二步中的密码,只要与其相同即可)。

         现在,我们就可以在数据库服务器上用 postgres帐号通过psql或者pgAdmin等等客户端操作数据库了。

        $ sudo -u postgres passwd

        输入新的 UNIX 密码:

        重新输入新的 UNIX 密码:

        passwd:已成功更新密码

 

第二步修改配置文件,允许非postgres系统用户连接

$ sudo deepin-editor /etc/postgresql/13/main/pg_hba.conf

* 不同版本配置文件路径可能不同,需要自己去找

 这里md5,意思是本地使用md5验证(即密码模式),而非系统用户验证

如需远程连接

1、需要在下面增加另一条配置文件,IP部分改为 0.0.0.0/0 即可,如下是本地和远程均使用密码模式验证的配置

host  all  all  0.0.0.0/0  md5

host  all  all  127.0.0.1/32 md5 

如果不希望允许所有IP远程访问,则可以将上述配置项中的0.0.0.0设定为特定的IP值。

2、打开监听地址(由本地改为全部)

$ sudo deepin-editor /etc/postgresql/13/main/postgresql.conf

将listen_addresses = 'localhost' 改为 '*' ,其中,参数“listen_addresses”表示监听的IP地址,默认是在localhost处监听,也就是127.0.0.1的ip地址上监听,这会让远程的主机无法登陆这台数据库,如果想从其他的机器上登陆这台数据库,需要把监听地址改为实际网络的地址,一种简单的方法是,把这个地址改为*,表示在本地的所有地址上监听。

修改完保存,重启服务即可。

$ systemctl restart postgresql-13.2

常用使用方法 

1.初始化数据库 启停重启

$ service postgresql initdb      #初始化数据库

$ systemctl start postgresql     #启动

$ systemctl stop postgresql     #停止

$ systemctl restart postgresql   #重启服务

或者

sudo /etc/init.d/postgresql start    #启动

sudo /etc/init.d/postgresql stop     #停止

sudo /etc/init.d/postgresql restart   #重启服务

$ systemctl status postgresql    #查看一个服务的状态

$ systemctl enable postgresql  #开机时启用一个服务

$ systemctl disable postgresql  #开机时关闭一个服务

$ systemctl is-enabled postgresql  #查看服务是否开机启动

二、创建用户和数据库

$ adduser dbuser       # 系统中新建一个用户

$ sudo -u postgres psql  # 登录进控制台

CREATE USER dbuser WITH PASSWORD 'dbuser';    # 创建数据库用户 dbuser 为密码

CREATE DATABASE mydb OWNER dbuser;           # 创建数据库,并指定所有者为 dbuser

GRANT ALL PRIVILEGES ON DATABASE mydb TO dbuser   # 将 mydb 的所有权限赋予 dbuser 用户

\q    # 退出

psql -U dbuser -h 127.0.0.1 -p 5432 -d mydb   # 登录验证

此时我们可以使用 dbeaver 连接,使用 dbuser 用户名 mydb 数据库。

三、备份数据库的导入导出SQL转储

        这里我们用到的工具是pg_dump和pg_dumpall。

        这种方式可以在数据库正在使用的时候进行完整一致的备份,并不阻塞其它用户对数据库的访问。它会产生一个脚本文件,里面包含备份开始时,已创建的各种数据库对象的SQL语句和每个表中的数据。可以使用数据库提供的工具pg_dumpall和pg_dump来进行备份。pg_dump只备份数据库集群中的某个数据库的数据,它不会导出角色和表空间相关的信息,因为这些信息是整个数据库集群共用的,不属于某个单独的数据库。pg_dumpall,对集簇中的每个数据库调用pg_dump来完成该工作,还会还转储对所有数据库公用的全局对象(pg_dump不保存这些对象)。 目前这包括适数据库用户和组、表空间以及适合所有数据库的访问权限等属性。

        例如,在我的计算机上,可使用如下命令对名为DBname的数据库进行备份:

备份某个数据库

$ pg_dump -h 127.0.0.1 -p 5432 -U postgres -d DBname -f DB_bak.sql

   /备份 postgres用户下的dDBname数据库,备份文件是“DB_bak.sql”,默认保存在HOME根目录

还原到某个数据库(可以不同名称),但是得提前创建好库

$ psql -h 127.0.0.1 -p 5432 -d newDBname -U postgres -f DB_bak.sql

   /使用DB_bak.sql 备份文件还原到newDBname数据库,这个newDBname需要在还原之前建立这个数据库名

备份全部数据库

$ pg_dumpall -h 127.0.0.1 -p 5432 -U postgres -c -f dev_db_bak.sql

   /重用户postgres备份所有数据库 保存为dev_db_bak.sql默认保存在HOME根目录

还原全部数据库

$ psql -h 127.0.0.1 -p 5432 -U postgres -f dev_db_bak.sql

/用dev_db_bak.sql备份文件还原数据库

Reply Favorite View the author
All Replies
深圳市耀影科技有限公司
deepin
2021-02-15 09:30
#1

这个编辑器可以升级了,,,,,,,超级无语

Reply View the author