一、版本和情况
选择要安装的版本举行下载:PostgreSQL: File Browser
我选的版本是:postgresql-14.7.tar.gz 操作体系是:CentOS-stream9
二、安装依赖包
在要安装postgresql数据库的Linux服务器(hostname:hdp001)上实行以下命令安装所需要的依赖包:
- yum install -y perl-ExtUtils-Embed readline-devel zlib-devel pam-devel libxml2-devel libxslt-devel openldap-devel python-devel gcc-c++ openssl-devel cmake
复制代码 三、安装postgres
1、上传安装包并将postgresql-14.7.tar.gz解压,我是将安装包传的目次/home/appview/dev_package,目次自己决定
- [root@hdp001 dev_package]# cd /home/appview/dev_package/
- [root@hdp001 dev_package]# ll
- -rw-r--r-- 1 appview appview 29070900 7月 6 16:55 postgresql-14.7.tar.gz
- [root@hdp001 pgsql]# pwd
复制代码 2、解压压缩包
- [root@hdp001 pgsql]# tar -zxvf postgresql-14.7.tar.gz
- # 解压过程略过了,太多了
复制代码 3、进入解压后的文件夹
- [root@hdp001 dev_package]# cd postgresql-14.7.
- [root@hdp001 postgresql-14.7.]# ls
- aclocal.m4 configure contrib doc HISTORY Makefile src
- config configure.in COPYRIGHT GNUmakefile.in INSTALL README
复制代码 4、编译postgresql源码
- [root@hdp001 postgresql-14.7.]# ./configure
-
- #############################################################
- 这里我选择默认的安装目录所有不指定了,默认为/usr/local/pgsql
- -–prefix=prefix 安装到prefix指向的目录;
- --without-readline 选项的作用是禁用对Readline库的使用,用于命令行编辑和历史记录
- 我在内网安装的时候通常加上这个,不加的话会报错,无法进行编译下面这个
- ############################################################
- # 以下根据需求自行选择
- -–bindir=dir 安装应用程序到dir;默认为prefix/bin
- -–with-docdir=dir 安装文档到dir;默认为prefix/doc
- -–with-pgport=port 设置默认的服务器端网络连接服务TCP端口号
- -–with-tcl 为服务端提供Tcl存储过程支持
- -–with-perl 为服务端提供Perl存储过程支持
- -–with-python 为服务端提供Python存储过程支持
- [root@hdp001 postgresql-14.7.]# make
- # 过程略过
- [root@hdp001 postgresql-14.7.]# make install
- # 过程略过
- [root@hdp001 psql]# ls
- bin include lib share
复制代码 四、创建用户组postgres并创建用户postgres
- [root@hdp001 postgresql-14.7.]# groupadd postgres
- [root@hdp001 postgresql-14.7.]# useradd -g postgres postgres
- [root@hdp001 postgresql-14.7.]# id postgres
- 用户id=1002(postgres) 组id=1002(postgres) 组=1002(postgres)
复制代码 五、创建postgresql数据库的数据主目次并修改文件所有者
这个数据库主目次是随现真相况而不同,这里我们的主目次是在/pgsql/postgresql/data目次下:
- [root@hdp001 postgresql-14.7]# cd /usr/local/pgsql/
- [root@hdp001 pgsql]# mkdir data
- [root@hdp001 pgsql]# chown -R postgres:postgres /usr/local/pgsql
- [root@hdp001 pgsql]# ls -al
- [root@hdp001 pgsql]# ls -al
- 总用量 20
- drwxr-xr-x 7 postgres postgres 68 6月 23 00:28 .
- drwxr-xr-x. 14 root root 164 6月 23 00:26 ..
- drwxr-xr-x 2 postgres postgres 4096 6月 23 00:26 bin
- drwx------ 19 postgres postgres 4096 7月 6 16:40 data
- drwxr-xr-x 6 postgres postgres 4096 6月 23 00:26 include
- drwxr-xr-x 4 postgres postgres 4096 6月 23 00:26 lib
- drwxr-xr-x 6 postgres postgres 4096 6月 23 00:26 share
复制代码 六、配置情况变量
进入/home/postgres目次可以看到.bash_profile文件。
- [root@hdp001 pgsql]# cd /home/postgres
- [root@hdp001 pgsql]# ls -al
- [root@hdp001 postgres]# ll -la
- 总用量 212
- drwx------ 4 postgres postgres 165 7月 6 16:39 .
- drwxr-xr-x. 5 root root 50 6月 23 00:28 ..
- -rw------- 1 postgres postgres 685 7月 6 16:54 .bash_history
- -rw-r--r-- 1 postgres postgres 18 2月 15 23:31 .bash_logout
- -rw-r--r-- 1 postgres postgres 241 6月 23 00:32 .bash_profile
- -rw-r--r-- 1 postgres postgres 492 2月 15 23:31 .bashrc
- drwx------ 2 postgres postgres 6 6月 23 00:32 .cache
- -rw------- 1 postgres postgres 191649 6月 23 16:12 logfile
- drwxr-xr-x 4 postgres postgres 39 5月 30 07:04 .mozilla
- -rw------- 1 postgres postgres 84 7月 6 16:46 .psql_history
- -rw------- 1 postgres postgres 4016 7月 6 16:39 .viminfo
-
- ########添加环境变量
- [root@hdp001 postgres]# vi .bash_profile
- 添加以下内容。
- export PGHOME=/usr/local/pgsql
- export PGDATA=/usr/local/pgsql/data
- PATH=$PATH:$HOME/bin:$PGHOME/bin
- 保存,退出vi。执行以下命令,使环境变量生效
- [root@hdp001 postgres]# source .bash_profile
复制代码 七、切换用户到postgres并使用initdb初使用化数据库
- [root@hdp001 postgres]# su - postgres
- [postgres@hdp001 ~]$ initdb
- The files belonging to this database system will be owned by user "postgres".
- This user must also own the server process.
-
- The database cluster will be initialized with locale "zh_CN.UTF-8".
- The default database encoding has accordingly been set to "UTF8".
- initdb: could not find suitable text search configuration for locale "zh_CN.UTF-8"
- The default text search configuration will be set to "simple".
- #####过程略过
- Success. You can now start the database server using:
-
- pg_ctl -D /usr/local/pgsql/data -l logfile start
- # 看到这里可以切换到data目录下看看
- ##########################################################
- [postgres@hdp001 ~]$ cd /usr/local/pgsql/data/
- [postgres@hdp001 data]$
- [postgres@hdp001 data]$
- [postgres@hdp001 data]$ pwd
- /usr/local/pgsql/data
- [postgres@hdp001 data]$
- [postgres@hdp001 data]$ ls
- base pg_ident.conf pg_serial pg_tblspc postgresql.auto.conf
- global pg_logical pg_snapshots pg_twophase postgresql.conf
- pg_commit_ts pg_multixact pg_stat PG_VERSION
- pg_dynshmem pg_notify pg_stat_tmp pg_wal
- pg_hba.conf pg_replslot pg_subtrans pg_xact
复制代码 八、配置服务
修改/usr/local/pgsql/data/目次下的两个文件
postgresql.conf 配置PostgreSQL数据库服务器的相应的参数。
pg_hba.conf 配置对数据库的访问权限。
- [postgres@hdp001 data]$ vi postgresql.conf
- ## 找到以下内容进行修改即可
- ##########################################################
- listen_addresses = '*' # what IP address(es) to listen on;
- # comma-separated list of addresses;
- # defaults to 'localhost'; use '*' for all
- # (change requires restart)
- #port = 5432 # (change requires restart)
- ########说明
- 其中,参数“listen_addresses”表示监听的IP地址,默认是在localhost处监听,也就是127.0.0.1的ip地址上监听,只接受来自本机localhost的连接请求,这会让远程的主机无法登陆这台数据库,如果想从其他的机器上登陆这台数据库,需要把监听地址改为实际网络的地址,一种简单的方法是,将行开头的#去掉,把这个地址改为*,表示在本地的所有地址上监听。
复制代码- [postgres@hdp001 data]$ vim pg_hba.conf
- ## 找到以下内容进行修改即可,加入host all all 127.0.0.1/32 trust
- #################################################################################
-
- # "local" is for Unix domain socket connections only
- local all all trust
- # IPv4 local connections:
- host all all 0.0.0.0/0 trust
- host all all 127.0.0.1/32 trust ###新加的
- # IPv6 local connections:
- host all all ::1/128 trust
- # Allow replication connections from localhost, by a user with the
- # replication privilege.
- local replication all trust
- host replication all 127.0.0.1/32 trust
- host replication all ::1/128 trust
复制代码 阐明:local和IPv4、IPv6后面的trust是当地登录大概远程登录不验证暗码,如果需要暗码验证的把trust改成md5
九、设置PostgreSQL开机自启动
为PostgreSQL的开机自启动脚本,systemctl 的启动文件,一般存放在/etc/systemd/system 大概/usr/lib/systemd/system/文件夹下
我是在/usr/lib/systemd/system/创建一个postgresql.service,并给赋予实行权限,当然开机自启的方式不知这一种
- [root@hdp001 system]# cd /usr/lib/systemd/system/
- [root@hdp001 system]#
- [root@hdp001 system]# vim postgresql.service
- [root@hdp001 system]# chmod +x postgresql.service
- # 添加以下自动脚本
复制代码- [Unit]
- # 服务名称
- Description=postgresql.service
- # 在network.target服务之后运行
- After=network.target
- [Service]
- # 服务的类型,常用的有 simple(默认类型) 和 forking。
- Type=forking
- #运行程序的用户和群组
- User=postgres
- Group=postgres
- # 工作目录
- WorkingDirectory=/usr/local/pgsql
- # 启动命令
- ExecStart=/usr/local/pgsql/bin/pg_ctl start -D /usr/local/pgsql/data
- # 重启命令
- ExecReload=/usr/local/pgsql/bin/pg_ctl restart -D /usr/local/pgsql/data
- # 停止命令
- ExecStop=/usr/local/pgsql/bin/pg_ctl stop -D /usr/local/pgsql/bin/data
- # 是否给服务分配独立的临时空间,需要
- PrivateTmp=true
- [Install]
- # 列出依赖当前服务的模块
- WantedBy=multi-user.target
复制代码 切换到有权限的的用户实行以下命令
- ## 重载systemctl服务
- [root@hdp001 ~]# systemctl daemon-reload
- ## 启动postgresql服务
- [root@hdp001 ~]# systemctl start postgresql.service
- ## 查看服务状态
- [root@hdp001 ~]# systemctl status postgresql.service
- ● postgresql.service
- Loaded: loaded (/usr/lib/systemd/system/postgresql.service; disabled; preset: disabled)
- Active: active (running) since Sat 2024-07-06 16:40:42 CST; 1h 16min ago
- Process: 2394 ExecStart=/usr/local/pgsql/bin/pg_ctl start -D /usr/local/pgsql/data (code=exited, status=0/SUCCESS)
- Main PID: 2397 (postgres)
- Tasks: 7 (limit: 48581)
- Memory: 26.0M
- CPU: 570ms
- CGroup: /system.slice/postgresql.service
- ├─2397 /usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data
- ├─2400 "postgres: checkpointer "
- ├─2401 "postgres: background writer "
- ├─2402 "postgres: walwriter "
- ├─2403 "postgres: autovacuum launcher "
- ├─2404 "postgres: stats collector "
- └─2405 "postgres: logical replication launcher "
-
- 7月 06 16:40:42 hdp001 pg_ctl[2397]: 2024-07-06 16:40:42.244 CST [2397] LOG: listening on Unix socket "/tmp/.s.PGSQL.5432"
- 7月 06 16:40:42 hdp001 pg_ctl[2398]: 2024-07-06 16:40:42.249 CST [2398] LOG: database system was interrupted; last known up at 2024-06-23 16:15:01 CST
- 7月 06 16:40:42 hdp001 pg_ctl[2398]: 2024-07-06 16:40:42.279 CST [2398] LOG: database system was not properly shut down; automatic recovery in progress
- 7月 06 16:40:42 hdp001 pg_ctl[2398]: 2024-07-06 16:40:42.280 CST [2398] LOG: redo starts at 0/1A0C440
- 7月 06 16:40:42 hdp001 pg_ctl[2398]: 2024-07-06 16:40:42.281 CST [2398] LOG: invalid record length at 0/1A0DB10: wanted 24, got 0
- 7月 06 16:40:42 hdp001 pg_ctl[2398]: 2024-07-06 16:40:42.281 CST [2398] LOG: redo done at 0/1A0DAD0 system usage: CPU: user: 0.00 s, system: 0.00 s, elapsed:>
- 7月 06 16:40:42 hdp001 pg_ctl[2397]: 2024-07-06 16:40:42.284 CST [2397] LOG: database system is ready to accept connections
- 7月 06 16:40:42 hdp001 pg_ctl[2394]: done
- 7月 06 16:40:42 hdp001 pg_ctl[2394]: server started
- 7月 06 16:40:42 hdp001 systemd[1]: Started postgresql.service.
- [root@hdp001 ~]#
- [root@hdp001 ~]#
复制代码 十、开始测试
- 切换为postgres用户,进入客户端:
- [root@hdp001 system]# su - postgres
- [postgres@hdp001 ~]$ psql
- psql (14.7)
- Type "help" for help.
-
- postgres=#
- postgres=# \l
- List of databases
- Name | Owner | Encoding | Collate | Ctype | Access privileges
- -----------+----------+----------+-------------+-------------+-----------------------
- postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
- template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
- | | | | | postgres=CTc/postgres
- template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
- | | | | | postgres=CTc/postgres
- (3 rows)
- # 创建用户并设定密码
- postgres=#create user hive with password 'Psbc@2025';
- CREATE ROLE
- # 创建数据库指定属组
- postgres=# create database hivemeta_db owner hive;
- CREATE DATABASE
- # 授权
- postgres=# grant all privileges on database hivemeta_db to hive ;
- GRANT
- postgres=#
- #显示数据库
- postgres=# \l
- List of databases
- Name | Owner | Encoding | Collate | Ctype | Access privileges
- ----------------+----------+----------+-------------+-------------+-----------------------
- hivemeta_db | hive | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | =Tc/hive +
- | | | | | hive=CTc/hive
- postgres | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 |
- template0 | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/postgres +
- | | | | | postgres=CTc/postgres
- template1 | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/postgres +
- | | | | | postgres=CTc/postgres
- (54rows)
- # 退出
- postgres=# \q
复制代码 看到以上内容阐明数据库已经安装完成了
仅作为个人学习记录分享,后期偶然间继续分享postgres、elasticsearch等数据迁移,也好久没有写博客了,重要是项目比较忙,加班多,没有精神了^~^!!!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |