homework7

1. 总结pg和mysql的优劣势。

一、PostgreSQL相对于MySQL的优势

1)PostgreSQL遵循BSD协议,这意味着使用 PostgreSQL 无任何限制。
2)可支持 C、C++、Java、PHP、Python 及 Perl 等,使您的业务开发更简单更易用。
3)PostgreSQL 是架构、语法、数据类型等与 Oracle 最接近的开源数据库。
4)兼容 SQL 标准:SQL2003,支持 SQL2011 的主要特性;
5)除了支持传统 SQL 的 LIKE 操作符、还支持 SQL99 新增的 SIMILAR TO 操作符和 POSIX 风格的正则表达式。
6)丰富的数据类型:几何、网络地址、XML、JSON、RANGE、数组等。
7)支持复合类型(自定义数据类型)。
8)支持复杂的多表 JOIN 查询 SQL:JOIN 算法支持 hash join、merge join 等。
9)支持窗口函数,可以改成复杂分析函数,因为分析函数包括了窗口函数。
10)支持函数索引、部分(行)索引、自定义索引、全文索引。
11)多进程的架构,更加稳定,单机可以支持更高访问量的数据库。
12)有功能强大,性能优秀的插件,如 PostGIS 是一个空间数据库扩展程序插件,它增加了对地理对象的支持,允许您以 SQL 运行位置查询。
13)达到商用级的数据强一致,基于 Synchronous Replication 复制技术,数据做到零丢失,即使类似于资金交易系统,也可以使用 PostgreSQL。

二、MySQL相对于PG的优势

1)innodb的基于回滚段实现的MVCC机制,相对PG新老数据一起存放的基于XID的MVCC机制,是占优的。新老数据一起存放,需要定时触 发VACUUM,会带来多余的IO和数据库对象加锁开销,引起数据库整体的并发能力下降。而且VACUUM清理不及时,还可能会引发数据膨胀。
2)MySQL采用索引组织表,这种存储方式非常适合基于主键匹配的查询、删改操作,但是对表结构设计存在约束。
3)MySQL的优化器较简单,系统表、运算符、数据类型的实现都很精简,非常适合简单的查询操作。
4)MySQL相对于PG在国内的流行度更高,PG在国内显得就有些落寞了。
5)MySQL的存储引擎插件化机制,使得它的应用场景更加广泛,比如除了innodb适合事务处理场景外,myisam适合静态数据的查询场景。

总结
总体上来说,开源数据库都不是很完善,商业数据库oracle在架构和功能方面都还是完善很多的。从应用场景来说,PG更加适合严格的企业应用场景(比如金融、电信、ERP、CRM),但不仅仅限制于此,PostgreSQL的json,jsonb,hstore等数据格式,特别适用于一些大数据格式的分析;而MySQL更加适合业务逻辑相对简单、数据可靠性要求较低的互联网场景(比如google、facebook、alibaba),当然现在MySQL的在innodb引擎的大力发展,功能表现良好。

2.  总结pg二进制安装和编译安装。

1)  二进制安装

打开PostgreSQL: Downloads 下载页选择对应的系统,获取相关安装命令。

# rocky8.5 10.0.0.16安装postgresql-14

[09:09:42root@rocky85 ~]#dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm

[13:59:24root@rocky85 ~]# dnf -qy module disable postgresql

[13:59:55root@rocky85 ~]# dnf install -y postgresql14-server

[14:00:37root@rocky85 ~]#systemctl enable postgresql-14

[14:00:47root@rocky85 ~]#systemctl start postgresql-14

[14:00:56root@rocky85 ~]#su - postgres

[postgres@rocky85 ~]$ psql

postgres=# \l

2)  Rocky8.5 10.0.0.12 编译安装postgresql-14.2

访问Index of /postgresql/source/v14.2/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 获取对应版本源代码。

# 安装依赖包

yum install -y gcc make readline-devel zlib-devel

# 解压源码

tar -xf postgresql-14.2.tar.gz

cd postgresql-14.2/

./configure --prefix=/apps/pgsql14 --without-icu

make -j 4 world #默认 make 不包括文档和其它模块,4表示当产主机的CPU核心数

make install-world #默认 make install 不包括安装文档

创建数据库用户和组

#创建数据库用户和组,注意此用户需要可以交互登录

useradd -s /bin/bash -m -d /home/postgres postgres

#修改postgres密码

echo postgres:123456|chpasswd

创建数据目录并授权

mkdir -pv /postgre/data

chown postgres. /postgre/data/

设置环境变量

vim /etc/profile.d/pgsql.sh 

export PGHOME=/apps/pgsql14

export PATH=$PGHOME/bin/:$PATH

export PGDATA=/postgre/data

export PGUSER=postgres

export MANPATH=/apps/pgsql/share/man:$MANPATH

. /etc/profile.d/pgsql.sh 

su - postgres   登录postgresql数据库

#验证

psql --version

初始化数据库

su - postgres

#初始化

Initdb

initdb -D $PGDATA

#如果没有指定选项 -D <datadir> ,按环境变量$PGDATA指定的路径进行初始化

#生产建议初始化方式

initdb -A md5 -D $PGDATA -E utf8 --locale=C -U postgres -W

-A #指定local connections默认的身份验证方法

-D #指定数据目录

-E #指定字符集

--locale=C #指定语言环境

-U #指定数据库superuser用户名

-W #指定数据库superuser的用户密码

启动和停止服务

#启动数据库的命令如下: 

pg_ctl -D /pgsql/data -l logfile start

 psql    #登录

\l     #查看数据库列表

#停止数据库的命令如下:

pg_ctl stop -D $PGDATA  或  pg_ctl -D /pgsql/data -l logfile stop

3. 总结pg服务管理相关命令 pg_ctl 和pgsql命令选项及示例和不同系统的初始化操作

pg_ctl 是一个实用的命令行工具,有以下常见功能:
   1.初始化 PostgreSQL 数据库实例
   2.启动、终止或重启 PostgreSQL 数据库服务。
   3.查看 PostgreSQL数据库服务的状态
   4.让数据库实例重新读取配置文件。允许给一个指定的PostgreSQL进程发送信号
   5.控制 standby 服务器为可读写
   6.在 Windows平台下允许为数据库实例注册或取消一个系统服务

pg_ctl 命令格式
pg_ctl is a utility to initialize, start, stop, or control a PostgreSQL server.
Usage:
pg_ctl init[db]       [-D DATADIR] [-s] [-o OPTIONS]
pg_ctl start            [-D DATADIR] [-l FILENAME] [-W] [-t SECS] [-s]
                                [-o OPTIONS] [-p PATH] [-c]
pg_ctl stop            [-D DATADIR] [-m SHUTDOWN-MODE] [-W] [-t SECS] [-s]
pg_ctl restart         [-D DATADIR] [-m SHUTDOWN-MODE] [-W] [-t SECS] [-s]
                                [-o OPTIONS] [-c]
pg_ctl reload         [-D DATADIR] [-s]
pg_ctl status          [-D DATADIR]
pg_ctl promote     [-D DATADIR] [-W] [-t SECS] [-s]
pg_ctl logrotate    [-D DATADIR] [-s]
pg_ctl kill               SIGNALNAME PID

psql 命令格式
psql -h <hostname or ip> -p<端口> -d [数据库名称] -U [用户名称]
-h #指定要连接的数据库主机名或IP地址,默认local socket登录(由配置项unix_socket_directories指定)
-p #指定连接的数据库端口
-d 指定数据库
#最后两个参数是数据库名和用户名
#这些连接参数也可以用环境变量指定,比如:
export PGDATABASE=testdb
export PGHOST=192.168.3.20
export PGPORT=5432
export PGUSER=postgres
#然后运行psql即可,其效果与运行psql -h 192.168.3.20 -p 5432 testdb postgres相同。
#可通过下面命令查看详细帮助:man /apps/pgsql16/share/man/man1/psql.1

postgres=# create database db1;    创建db1数据库
postgres=# create user wang PASSWORD'123456';   创建wang用户,设置密码123456

初始化数据库

# Rocky二进制安装好后,可通过postgresql-14-setup命令初始化数据库
# 默认目录位于/var/lib/pgsql/16/data/
sudo /usr/pgsql-16/bin/postgresql-16-setup initdb

# Ubuntu 二进制安装好之后默认已初始化数据库
# 位置在/var/lib/postgresql/16/main

# 手动初始化数据库
su - postgres
#初始化
initdb
initdb -D $PGDATA
#如果没有指定选项 -D <datadir> ,按环境变量$PGDATA指定的路径进行初始化
#生产建议初始化方式
initdb -A md5 -D $PGDATA -E utf8 --locale=C -U postgres -W
-A #指定local connections默认的身份验证方法
-D #指定数据目录
-E #指定字符集
--locale=C #指定语言环境
-U #指定数据库superuser用户名

#通过wang用户密码连接10.0.0.70机器postgresql

[18:32:48root@rocky85 ~]#psql -h 10.0.0.70 -d hellodb -U wang -p5432
Password for user wang: 

4. 总结pg数据库结构组织

在一个PostgreSQL 数据库系统中,数据的组织结构可以分为以下五层:
1,例: 一个PostgreSQL对应一个安装的数据目录$PGDATA,即一个instance实例。
2,据库:一个PostgreSQL数据库服务下可以管理多个数据库,当应用连接到一个数据库时,一般只能访问这个数据库中的数据,而不能访问其他数据库中的内容。默认情况下初始实例只有三个数据库: postgres、template0、template1
3,式: 一个数据库可以创建多个不同的名称空间即Schema,用于分隔不同的业务数据
4,和索引:一个数据库可以有多个表和索引。在PostgreSQL中表的术语称为 Relation,而在其他数据库中通常叫Table
5,和列:每张表中有很多列和行数据。在 PostgreSQL 中行的术语一般为“Tuple”,而在其他数据库中则叫“Row”。

5. 实现pg远程连接。输入密码和无密码登陆

在二进制安装的Rock8.5系统配置

#现在本地登录,修改postgres账号密码

su - postgres

psql

 ALTER USER postgres WITH ENCRYPTED PASSWORD '123456';

# 配置远程连接

[postgres@rucky8 ~]$ vim /pgsql/data/postgresql.conf

# 修改侦听所有IP地址

listen_addresses = '*'

需要密码登录

[postgres@rucky8 ~]$ vim /pgsql/data/pg_hba.conf

host    all           all             0.0.0.0/0               md5

pg_ctl -D /pgsql/data -l logfile restart       #重启服务

在Ubuntu10.0.0.70远程连接

[root@ubuntu2204 ~]#psql -h 10.0.0.12 -d postgres -Upostgres -p5432

Password for user postgres:

免密登录

在rucky8.5上

[postgres@rucky8 ~]$ vim /pgsql/data/pg_hba.conf

host    all             all         0.0.0.0/0           trust      从10网段远程连接,无需密码登录

pg_ctl -D /pgsql/data -l logfile restart      #重启服务

在Ubuntu10.0.0.70远程连接

[root@ubuntu2204 ~]#psql -h 10.0.0.12 -d postgres -Upostgres -p5432

6. 总结库,模式,表的添加和删除操作。表数据的CURD。同时总结相关信息查看语句。

库操作
# 查看所有数据库
\l

# 创建数据库
CREATE DATABASE hellodb;

# 切换数据库
\c hellodb

# 删除数据库
DROP DATABASE hellodb;

表操作

# 创建表
create table teacher(tid int,name varchar(30),gender varchar(2));

# 查看所有表
\dt

# 添加记录
insert into teacher values (1,'zhangsan','F');
insert into teacher values (2,'baigujing','M');

# 查询所有记录
select * from teacher ;

# 查询特定记录
select * from teacher where tid=1;

# 删除该记录
delete  from teacher where tid=1;

# 删除表
drop table teacher;

7. 总结pg的用户和角色管理。

在PostgreSQL中,用户与角色是没有区别的。
用户和角色可以用来实现以下功能:

1)用来登录数据库实例、
2)管理数据库对象

创建用户与角色的语法如下:
CREATE USER name [[WITH] option [ ...]]
CREATE ROLE name [[WITH] option [ ...]]
#上面两个命令都可以创建用户,不同的是CREATE USER创建的用户默认可以登录,而CREATE ROLE不可以登录 
#除了CREATE USER 默认创建出来的用户有LOGIN 的权限,而CREATE ROLE 创建出来的用户没有“LOGIN"的权限之外,
# CREATE ROLE 与 CREATE USER没有其他任何的区别。

#上面语法中的“option”可以是如下内容。
SUPERUSER | NOSUPERUSER:表示创建出来的用户是否为超级用户。只有超级用户才能创建超级用户。
CREATEDB /NOCREATEDB:指定创建出来的用户是否有执行“CREATE DATABASE'的权限。
CREATEROLE NOCREATEROLE:指定创建出来的用户是否有创建其他角色的权限。
CREATEUSER NOCREATEUSER:指定创建出来的用户是否有创建其他用户的权限。
INHERIT |NOINHERIT:如果创建的一个用户拥有某一个或某几个角色,这时若指定INHERIT,则表示用户自
动拥有相应角色的权限,否则这个用户没有该角色的权限。
LOGIN | NOLOGIN:指定创建出来的用户是否有“LOGIN”的权限,可以临时地禁止一个用户的“LOGIN”权
限,这时此用户就不能连接到数据库
CONNECTION LIMIT connlimit:指定该用户可以使用的并发连接数量。默认值是-1,表示没有限制。
[ENCRYPTED | UNENCRYPTED ] PASSWORD'password' : 用于控制存储在系统表里面的口令是否加密。
VALID UNTIL 'timestamp':密码失效时间,如果不指定这个子句,那么口令将永远有效。
INROLE role name [,...]:指定用户成为哪些角色的成员,请注意没有任何选项可以把新角色添加为管理员,必须使用独立的GRANT命令来做这件事情。
IN GROUP role_name [,...]:与IN ROLE相同,是已过时的语法。
ROLE role_name [,...]: role_name将成为这个新建的角色的成员。
ADMIN role_name [,...]: role_name将有这个新建角色的WITH ADMIN OPTION权限。
USER role_name[,.…]:与ROLE子句相同,但已过时。
SYSID uid:此子句主要是为了SQL向下兼容,实际没有什么用处。

用户管理

#查看帮助
\h create user
\h alter user
\h drop user
\h create role
\h alter role
\h drop role
#以下两个命令用法相似
create user #创建的用户默认可以连接
create role #创建的用户默认无法连接
#修改用户
alter user
#删除用户
drop user
#显出所有用户和角色
#\du和\dg命令等价。原因是在PostgreSQL数据库中用户和角色不分的。
\du
\dg
#创建可以登录的用户和密码
CREATE USER wang WITH PASSWORD '123456';
#创建不可登录用户
create role zhao WITH PASSWORD '123456';
#创建可以连接的用户
CREATE ROLE li WITH LOGIN PASSWORD '123456' VALID UNTIL '2024-07-01'
#创建管理员
CREATE ROLE admin WITH SUPERUSER LOGIN PASSWORD '123456' ;
#创建复制用户
CREATE USER repl REPLICATION LOGIN ENCRYPTED PASSWORD '123456';
#修改密码
ALTER USER admin with password '654321';
#修改权限和密码
alter user wang with nologin password '123';
alter user zhao with login ;
#删除用户
DROP USER song;
#查看用户信息
\du
#查看指定用户信息
\du wang

# 修改 postgres用户密码
#使用postgres用户登录(PostgresSQL安装后会自动创建postgres用户)
su - postgres
#登录postgresql数据库
 psql -U postgres
#安全起见,修改数据库管理员postgres用户的密码
postgres=# ALTER USER postgres WITH ENCRYPTED PASSWORD '123456';
ALTER ROLE

8. 添加mage用户,magedu模式,准备zabbix库,配置mage用户的默认模式magedu,要求mage用户给zabbix库有所有权限。

# 切换到postgres用户
su - postgres    

# 以postgres用户登录postgre
psql    

# 创建用户mage
CREATE USER mage WITH PASSWORD '123456';

# 创建数据库zabbix
CREATE DATABASE zabbix;

# 设置用户mage的默认模式为magedu
ALTER USER mage SET search_path TO magedu;

# 授予用户mage对数据库zabbix的所有权限
GRANT ALL PRIVILEGES ON DATABASE zabbix TO mage;

 # 切换到zabbix数据库
\c zabbix

# 在zabbix数据库中创建模式magedu
CREATE SCHEMA magedu AUTHORIZATION mage;

psql -Umage -d zabbix
create table teacher(tid int,name varchar(30),gender varchar(2));

9. 总结pgsql的进程结构,说明进程间如何协同工作的。

Postmaster 主进程
它是整个数据库实例的主控制进程,负责启动和关闭该数据库实例。
实际上,使用pg ctl来启动数据库时,pg_ctl也是通过运行postgres来启动数据库的,只是它做
了一些包装,更容易启动数据库。
它是第一个PostgreSQL进程,此主进程还会fork出其他子进程,并管理它们。
当用户和PostgreSQL建立连接时,首先是和Postmaster进程建立连接。首先,客户端会发出
身份验证的信息给Postmaster进程,Postmaster进程根据消息中的信息进行身份验证判断,
如果验证通过,它会fork出一个会话子进程为这个连接服务。
当某个服务进程出现错误的时候,Postmaster主进程会自动完成系统的恢复。恢复过程中会
停掉所有的服务进程,然后进行数据库数据的一致性恢复,等恢复完成后,数据库又可以接受新
的连接。
验证功能是通过配置文件pg_hba.conf和用户验证模块来提供。
postmaster 程序是指向postgres的软链接

BgWriter 后台写进程
为了提高插入、删除和更新数据的性能,当往数据库中插入或者更新数据时,并不会马上把数
据持久化到数据文件中,而是先写入Buffer中
该辅助进程可以周期性的把内存中的脏数据刷新到磁盘中

WalWriter 预写式日志进程
postgres WAL是write ahead log的缩写,WAL log旧版中称为xlog,相当于MySQL中Redo log
预写式日志是在修改数据之前,必须把这些修改操作记录到磁盘中,这样后面更新实际数据
时,就不需要实时的把数据持久化到文件中了。即使机器突然宕机或者数据库异常退出, 导
致一部分内存中的脏数据没有及时的刷新到文件中,在数据库重启后,通过读取WAL日志,
并把最后一部分WAL日志重新执行一遍,就能恢复到宕机时的状态了
WAL日志保存在pg_wal目录(早期版本为pg_xlog) 下。每个xlog 文件默认是16MB,为了满足恢
复要求,在pg_wal目录下会产生多个WAL日志,这样就可保证在宕机后,未持久化的数据都
可以通过WAL日志来恢复,那些不需要的WAL日志将会被自动覆盖

Checkpointer 检查点进程
检查点(Checkpoints)是事务序列中的点,保证在该点之前的所有日志信息都更新到数据文件
中。
在检查点时,所有脏数据页都冲刷到磁盘并且向日志文件中写入一条特殊的检查点记录。在发
生崩溃的时候,恢复器就知道应该从日志中的哪个点(称做 redo 记录)开始做 REDO 操作,
因为在该记录前的对数据文件的任何修改都已经在磁盘上了。在完成检查点处理之后,任何在
redo记录之前写的日志段都不再需要,因此可以循环使用或者删除。在进行 WAL 归档的时
候,这些日志在循环利用或者删除之前应该必须先归档保存
检查点进程 (CKPT) 在特定时间自动执行一个检查点,通过向数据库写入进程 (BgWriter) 传递消
息来启动检查点请求

AutoVacuum 自动清理进程
执行delete操作时,旧的数据并不会立即被删除,在更新数据时,也不会在旧的数据上做更
新,而是新生成一行数据。旧的数据只是被标识为删除状态,在没有并发的其他事务读到这些
旧数据时,它们才会被清除掉
autovacuum lanucher 负责回收垃圾数据的master进程,如果开启了autovacuum的话,那么
postmaster会fork这个进程
autovacuum worker 负责回收垃圾数据的worker进程,是lanucher进程fork出来的

PgStat 统计数据收集进程
此进程主要做数据的统计收集工作
收集的信息主要用于查询优化时的代价估算。统计的数据包括对一个表或索引进行的插入、删
除、更新操作,磁盘块读写的次数以及行的读次数等。
系统表pg_statistic中存储了PgStat收集的各类统计信息

PgArch 归档进程
默认没有此进程,开启归档功能后才会启动archiver进程
WAL日志文件会被循环使用,也就是说WAL日志会被覆盖,利用PgArch进程会在覆盖前把WAL
日志备份出来,类似于binlog,可用于备份功能
PostgreSQL 从8.X版本开始提供了PITR ( Point-In-Time-Recovery)技术,即就是在对数据厍
进行过一次全量备份后,该技术将备份时间点后面的WAL日志通过归档进行备份,将来可以
使用数据库的全量备份再加上后面产生的WAL 日志,即可把数据库向前恢复到全量备份后的
任意一个时间点的状态

SysLogger 系统日志进程
默认没有此进程,配置文件 postgresql.conf 设置参数logging_collect设置为“on”时,主进程才
会启动SysLogger辅助进程
它从Postmaster主进程、所有的服务进程以及其他辅助进程收集所有的stderr输出,并将这
些输出写入到日志文件中

startup 启动进程
用于数据库恢复的进程

Session 会话进程
每一个用户发起连接后,一旦验证成功,postmaster进程就会fork—个新的子进程负责连接此用户。
通常表现为进程形式: postgres postgres [local] idle

ps auxf |grep postgres        #查看postgres进程

进程间协同工作:

Connection Handling:
当客户端请求连接时,Postmaster 会验证请求并根据配置的权限和资源限制决定是否允许连接。如果允许,Postmaster 进程将 fork 出一个新的 Backend Process 来与客户端直接通信。

Query Processing:
Backend Process 接收客户端发送过来的SQL命令,并解析、计划、执行SQL查询。在执行过程中,可能需要与 Background Writer 或 WAL Writer 协商数据写入策略。

Transaction Management and Concurrency Control:
Backend Processes 管理着它们各自的事务,同时通过 Multi-Version Concurrency Control (MVCC) 以及锁机制来协调并发操作,确保数据的一致性和隔离性。

Crash Recovery:
当数据库启动时,如果发现上次非正常关闭(比如系统崩溃),Postmaster 将依赖 WAL 日志来恢复数据库到最后一致的状态,而 WAL Writer 的存在是为了确保这些日志得到正确写入。

Maintenance Tasks:
Autovacuum Launcher 监视数据表的活动状态,并在检测到需要时触发 VACUUM 或 ANALYZE 命令,以保持数据库性能不下降。

10. 总结pgsql的数据目录中结构,说明每个文件的作用,并可以配上一些示例说明文件的作用。

PostgreSQL的数据目录,通常称为PGDATA目录,包含了数据库实例存储所有数据的文件和子目录。

重要的顶级文件

postgresql.conf:配置文件,用于设置数据库的参数,如端口、内存使用、WAL配置等。
pg_hba.conf:客户端认证配置文件,定义哪些用户可以通过哪种方式连接到哪个数据库。
pg_ident.conf:用户名映射文件,对操作系统用户和数据库用户之间的映射进行配置。
postmaster.pid:包含正在运行的PostgreSQL服务器进程ID的文件。这个文件防止多个实例在同一数据目录上运行并且包含启动时的一些系统信息。

子目录

base #默认表空间的目录,每个数据库都对应一个base目录下的子目录,每个表和索引对应一个独立文件
global #这个目录对应pg_global表空间,存放实例中的共享对象
pg_clog #存储事务提交状态数据
pg_bba.conf #数据库访问控制文件
pg_log #数据库系统日志目录,在查询一些系统错误时就可查看此目录下日志文件。(根据配置定义,可能没有这个目录)
pg_xact #提交日志commit log的目录,pg 9之前叫pg_clog
pg_multixact #共享行锁的事务状态数据
pg_notify #异步消息相关的状态数据pg_serial #串行隔离级别的事务状态数据
pg_snapshots #存储执行了事务snapshot导出的状态数据pg_stat_tmp #统计信息的临时文件
pg_subtrans #子事务状态数据
pg_stat #统计信息的存储目录。关闭服务时,将pg_stat_tmp目录中的内容移动至此目录实现保存
pg_stat_tmp #统计信息的临时存储目录。开启数据库时存放统计信息
pg_tblsp #存储了指向各个用户自建表空间实际目录的链接文件
pg_twophase#使用两阶段提交功能时分布式事务的存储目录
pg_wal #WAL日志的目录,早期版一本目录为pg_xlog
PG_VERSION #数据库版本
postmaster.opts #记录数据库启动时的命令行选项
postmaster.pid #数据库启动的主进程信息文件,包括PID,SPGDATA目录,数据库启动时间,监听端口,socket文件路径,临听地址,共享内存的地址信息(ipsc可查看),主进程状态

示例

postgresql.conf
如果你需要更改数据库的监听端口,默认为5432,你可以在postgresql.conf中找到以下一行,并修改它:
port = 2345 # 需要重启服务
把端口修改为1234
vim /pgsql/data/postgresql.conf   修改文件
port = 2345     
 pg_ctl -D /pgsql/data -l logfile restart     重启服务

  
pg_ctl -D /pgsql/data -l logfile restart     重启服务

pg_hba.conf
要允许来自IP地址10.0.0.70的用户smith通过密码认证连接到数据库hellodb,可以添加如下行:
# TYPE  DATABASE  USER  ADDRESS        METHOD
host    hellodb   all   10.0.0.70/24   md5
vim /pgsql/data/pg_hba.conf    修改文件

 pg_ctl -D /pgsql/data -l logfile restart   #重启服务

[postgres@rucky8 ~]$ psql

postgres=# \c hellodb

hellodb=# \du

hellodb=# CREATE USER data WITH PASSWORD '123456';

CREATE ROLE

hellodb=# \du

在Ubuntu10.0.0.70上远程连接

[root@ubuntu2204 ~]#psql -h 10.0.0.12 -d hellodb -U data -p5432

  • 29
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值