环境
版本
备注
系统: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/
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 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备份文件还原数据库
这个编辑器可以升级了,,,,,,,超级无语
Featured Collection
Popular Events
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
在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备份文件还原数据库