Linux安装PostGresql

慢吞云雾缓吐愁  金牌会员 | 2024-6-23 20:46:59 | 来自手机 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 691|帖子 691|积分 2073


提示:以下是本篇文章正文内容,下面案例可供参考
一、PostGresql是什么?

PostgreSQL数据库是目前功能强盛的开源数据库,支持丰富的数据类型(如JSON和JSONB类型、数组类型)和自界说类型。而且他提供了丰富的接口,可以很容易的扩展它的功能,如可以再GiST框架下实现自己的索引类型等。PostgreSQL是完全的事务安全性数据库,完备地支持外键、团结、视图、触发器和存储过程(并支持多种语言开辟存储过程)。它支持了大多数的SQL:2008标准的数据类型,包罗整型、数值值、布尔型、字节型、字符型、日期型、时间隔断型和时间型,它也支持存储二进制的大对像,包罗图片、声音和视频。PostgreSQL对很多高级开辟语言有原生的编程接口,如C/C++、Java、.Net、Perl、Python、Ruby、Tcl 和ODBC以及其他语言等
二、Linux 上安装 PostgreSQL

linux下安装PostgreSQL可采用三种方式,二进制已编绎安装包、yum安装、源码安装三种方式举行安装
1.环境准备

  1. // 检查PostgreSQL 是否已经安装
  2. rpm -qa | grep postgres
  3. // 检查PostgreSQL 安装位置
  4. rpm -qal | grep postgres
  5. // 卸载已安装PostgreSQL
  6. rpm –e PostgreSQL版本
  7. // 查看卸载是否已完成
  8. rpm -qa | grep postgres
复制代码
2.二进制已编绎安装包

2.1 下载二进制包

  1. // 官网下载地址
  2. https://www.enterprisedb.com/download-postgresql-binaries
复制代码

  1. // 下载地址
  2. https://get.enterprisedb.com/postgresql/postgresql-10.23-1-linux-x64-binaries.tar.gz
复制代码
2.2 创建postgres用户

  1. // 创建用户
  2. useradd postgres
  3. // 设置密码
  4. passwd postgres
复制代码
2.3 解压安装包

安装包放到 /home/postgres 下
  1. // 创建目录
  2. mkdir -p /home/postgres
  3. //  解压安装包
  4. tar -xvf postgresql-10.23-1-linux-x64-binaries.tar.gz -C /home/postgres/
  5. // yum依赖
  6. yum install -y gcc gcc-c++
  7. yum install -y readline-devel
  8. yum install -y zlib-devel
复制代码
2.4 创建data目次

  1. mkdir -p /home/postgres/pgsql
  2. mkdir -p /home/postgres/pgsql/data   
  3. mkdir -p /home/postgres/pgsql/logs  
复制代码
2.4 启动登岸postgresql

  1. //初始化
  2. ./bin/initdb -E utf8 -D /home/postgres/pgsql/data
复制代码
  1. //初始化结果返回
  2. [postgres@localhost pgsql]$ ./bin/initdb -E utf8 -D /home/postgres/pgsql/data
  3. The files belonging to this database system will be owned by user "postgres".
  4. This user must also own the server process.
  5. The database cluster will be initialized with locale "en_US.UTF-8".
  6. The default text search configuration will be set to "english".
  7. Data page checksums are disabled.
  8. fixing permissions on existing directory /home/postgres/pgsql/data ... ok
  9. creating subdirectories ... ok
  10. selecting default max_connections ... 100
  11. selecting default shared_buffers ... 128MB
  12. selecting default timezone ... PRC
  13. selecting dynamic shared memory implementation ... posix
  14. creating configuration files ... ok
  15. running bootstrap script ... ok
  16. performing post-bootstrap initialization ... ok
  17. syncing data to disk ... ok
  18. WARNING: enabling "trust" authentication for local connections
  19. You can change this by editing pg_hba.conf or using the option -A, or
  20. --auth-local and --auth-host, the next time you run initdb.
  21. Success. You can now start the database server using:
  22.     ./bin/pg_ctl -D /home/postgres/pgsql/data -l logfile start
复制代码
  1. //启动
  2. ./bin/pg_ctl -D /home/postgres/pgsql/data -l /home/postgres/pgsql/logs/pgsql.log start
复制代码
  1. //关闭
  2. ./bin/pg_ctl -D /home/postgres/pgsql/data stop
复制代码
  1. //登录postgresql数据库
  2. ./bin/pg_ctl -D /home/postgres/pgsql/data stop
复制代码
  1. //创建用户和数据库并授权
  2. create user test_user with password '123456'; // 创建用户
  3. create database test_db owner test_user; // 创建数据库
  4. grant all privileges on database test_db to test_user; // 授权
复制代码
  1. // 退出psql(输入 \q 再按回车键即可
复制代码
  1. ./bin/psql -h 127.0.0.1 -d test_db -U test_user -p 5432
复制代码
  1. // 开启远程访问
  2. // 修改postgresql.conf文件,取消 listen_addresses 的注释,将参数值改为“*”
  3. // 修改pg_hba.conf文件,增加下图红框部分内容
  4. host    all             all             0.0.0.0/0            md5
复制代码
3.yum安装PostgreSQL

安装过程官网参考
https://www.postgresql.org/download/linux/redhat/
3.1 安装

  1. // Install the repository RPM:
  2. sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
  3. // Install PostgreSQL:
  4. sudo yum install -y postgresql13-server
复制代码
3.2 指定命据目次

默认postgreql 安装在/usr/pgsql-13,数据存储目次:/var/lib/pgsql/13/data,在现实生产中/var可能存在硬盘空间不敷的问题,我们一样平常将数据存储目次放在挂载的硬盘如/data
  1. chown postgres:postgres /data/pgdata
  2. chmod 750 /data/pgdataa
复制代码
3.3 修改启动参数

  1. $vi /usr/lib/systemd/system/postgresql-13.service
  2. // 修改PGDATA参数,该参数会在 postgresql-13-setup initdb 中使用
  3. Environment=PGDATA=/data/pgdata
  4. // 重新加载服务配置文件
  5. systemctl daemon-reload
复制代码
3.4 初始化数据库

  1. // 切换用户
  2. su - postgres
  3. // 初始化数据库
  4. sudo /usr/pgsql-13/bin/postgresql-13-setup initdb
  5. // 设置开机自动启动
  6. sudo systemctl enable postgresql-13
复制代码
实行时报用户不在sudoers中,在使用Linux系统过程中,通常情况下,我们都会使用平常用户举行一样平常操作,而root用户只有在权限分配及系统设置时才会使用,而root用户的密码也不可能公开。平常用户实行到系统步伐时,需要暂时提升权限,sudo就是我们常用的命令,仅需要输入当前用户密码,便可以完成权限的暂时提升。在使用sudo命令的过程中,我们经常会碰到当前用户不在sudoers文件中的提示信息,如果办理该问题呢?通过下面几个步调,可以很简朴的办理此问题。
  1. // 查看/etc/sudoers文件权限,如果只读权限,修改为可写权限
  2. [root@Compile user]# ls -l /etc/sudoers
  3. -r--r-----. 1 root root 4030 9月 25 00:57 /etc/sudoers
  4. [root@Compile user]# chmod 777 /etc/sudoers
  5. [root@Compile user]# ls -l /etc/sudoers
  6. -rwxrwxrwx. 1 root root 4030 9月 25 00:57 /etc/sudoers
  7. [root@Compile user]#
  8. // 执行vi命令,编辑/etc/sudoers文件,添加要提升权限的用户;在文件中找到root ALL=(ALL) ALL,在该行下添加提升权限的用户信息,如:
  9. root ALL=(ALL) ALL
  10. user ALL=(ALL) ALL
  11. // 说明:格式为(用户名 网络中的主机=(执行命令的目标用户) 执行的命令范围)
  12. // 保存退出,并恢复/etc/sudoers的访问权限为440
  13. [root@Compile user]# chmod 440 /etc/sudoers
  14. [root@Compile user]# ls -l /etc/sudoers
  15. -r--r-----. 1 root root 4030 9月 25 00:57 /etc/sudoers
  16. [root@Compile user]#
  17. // 切换到普通用户,测试用户权限提升功能
复制代码
3.5 修改配置文件

  1. // 配置 postgresql.conf
  2. vi /data/pgdata/postgresql.conf
  3. // 注解掉
  4. # listen_address="*"
  5. // 配置 pg_hba.conf
  6. vi /data/pgdata/pg_hba.conf
  7. // 增加一行
  8. host all all 0.0.0.0/0 password
  9. // 防火墙打开5432端口
  10. firewall-cmd --zone=public --add-port=5432/tcp --permanent
  11. // 重启防火墙
  12. firewall-cmd --reload
复制代码
3.6 启动数据库

  1. // 停止数据库
  2. sudo systemctl stop postgresql-13
  3. // 设置开机自启动
  4. sudo systemctl enable postgresql-13
  5. // 启动数据库
  6. sudo systemctl start postgresql-13
  7. // 检查数据库状态
  8. sudo systemctl status postgresql-13
复制代码
3.7 修改数据库用户postgres密码

  1. // 切换用户
  2. su - postgres
  3. // 连接PG
  4. psql -U postgres
  5. // 执行修改密码
  6. ALTER USER postgres with encrypted password 'PASSWORD'
复制代码
4.源码方式安装PostgreSQL

4.1 下载源码

从官网下载,地址:
https://www.postgresql.org/download/
  1. //下载地址和选定的源码包
  2. https://www.postgresql.org/download/
  3. postgresql-14.0.tar.gz
  4. // 安装GCC编译器,需要GNU make 3.80 或更新版本
  5. yum -y install gcc
  6. make --version
复制代码
4.2 创建postgres用户

  1. //创建用户
  2. useradd postgres
  3. //设置密码
  4. passwd postgres
复制代码
4.3 举行源码安装

  1. //1.解压
  2. tar -xvf postgresql-14.5.tar.gz -C /opt/
  3. //2.yum依赖
  4. yum install -y gcc gcc-c++
  5. yum install -y readline-devel
  6. yum install -y zlib-devel
  7. //3.编绎,并安装到/opt/postgresql目录
  8. mkdir /opt/postgresql
  9. cd /opt/postgresql-14.5
  10. ./configure --prefix=/opt/postgresql
  11. make
  12. make install
  13. //4.准备数据目录
  14. mkdir -p /opt/postgresql/pgsqldata
  15. chown -R postgres:postgres /opt/postgresql/pgsqldata
  16. //5.切换到postgres用户
  17. su postgres
  18. /opt/postgresql/bin/initdb -D /opt/postgresql/pgsqldata #初始化数据库
  19. mkdir /opt/postgresql/pgsqldata/logs
  20. /opt/postgresql/bin/pg_ctl -D /opt/postgresql/pgsqldata -l /opt/postgresql/pgsqldata/logs/pgsql.log start #启动
  21. /opt/postgresql/bin/createdb test #创建测试库
  22. /opt/postgresql/bin/psql test #进入数据库
  23. //6.修改管理员密码
  24. ALTER USER postgres WITH PASSWORD '123456';
复制代码
4.4 举行源码安装

  1. // vi /opt/postgresql/pgsqldata/pg_hba.conf
  2. host    all             all             0.0.0.0/0            md5
  3. // vi //opt/postgresql/pgsqldata/postgresql.conf
  4. listen_addresses = '*'
  5. // /opt/postgresql/bin/pg_ctl -D /opt/postgresql/pgsqlData reload
  6. // 配置防火墙端口
  7. firewall-cmd --add-port=5432/tcp --permanent
  8. firewall-cmd --reload
复制代码
4.5 设置postgresql 服务自启动

  1. // postgresql 服务
  2. cat > /usr/lib/systemd/system/postgresql.service << EOF
  3. [Unit]
  4. Description=postgreSQL Server
  5. After=network.target
  6. [Service]
  7. User=postgres
  8. Group=postgres
  9. Type=forking
  10. TimeoutSec=0
  11. PermissionsStartOnly=true
  12. PIDFile=/opt/postgresql/pgsqldata/postmaster.pid
  13. ExecStart=/opt/postgresql/bin/pg_ctl -D /opt/postgresql/pgsqldata -l /opt/postgresql/pgsqldata/logs/pgsql.log start
  14. ExecReload=/opt/postgresql/bin/pg_ctl -D /opt/postgresql/pgsqldata reload
  15. ExecStop=/opt/postgresql/bin/pg_ctl -D /opt/postgresql/pgsqldata stop
  16. PrivateTmp=true
  17. LimitNOFILE = 65535
  18. Restart=on-failure
  19. RestartSec=3
  20. RestartPreventExitStatus=1
  21. PrivateTmp=false
  22. [Install]
  23. WantedBy=multi-user.target
  24. EOF
  25. // 服务启动停止
  26. systemctl daemon-reload
  27. systemctl stop postgresql
  28. systemctl start postgresql
  29. systemctl enable postgresql
复制代码
5.根本操作

  1. // 查看当前的数据库列表
  2. \l
  3. // 建表
  4. create table test(
  5.    id bigint ,
  6.    name varchar(50),
  7.    password varchar(30)
  8. );
  9. // 插入
  10. insert into test values(1,'test','123');
  11. // 查询
  12. select * from test;
  13. //  查看pgsql版本
  14. SELECT version();
  15. // 查看用户名和密码
  16. SELECT * FROM pg_authid;
  17. //获取服务器上所有数据库信息
  18. SELECT * FROM pg_database ORDER BY datname;
  19. //获取所有库表信息
  20. select * from pg_tables ORDER BY schemaname;
  21. //获取当前
  22. \d 库名 获取库中数据表名列表
  23. \d 表名 获取表结构字段描述
  24. //备份与还原
  25. /opt/postgresql/bin/pg_dump -h localhost -U postgres -p 5432 -d test -s -f /root/data.sql
  26. /opt/postgresql/bin/psql -h localhost -p 5432 -U postgres -W -d test < /root/data.sql
复制代码








免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

慢吞云雾缓吐愁

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表