Linux安装PostGresql
R_XYing 2024-06-24 10:07:13 阅读 92
文章目录
一、PostGresql是什么?二、Linux 上安装 PostgreSQL1.环境准备2.二进制已编绎安装包2.1 下载二进制包2.2 创建postgres用户2.3 解压安装包2.4 创建data目录2.4 启动登陆postgresql 3.yum安装PostgreSQL3.1 安装3.2 指定数据目录3.3 修改启动参数3.4 初始化数据库3.5 修改配置文件3.6 启动数据库3.7 修改数据库用户postgres密码 4.源码方式安装PostgreSQL4.1 下载源码4.2 创建postgres用户4.3 进行源码安装4.4 进行源码安装4.5 设置postgresql 服务自启动 5.基本操作
提示:以下是本篇文章正文内容,下面案例可供参考
一、PostGresql是什么?
PostgreSQL数据库是目前功能强大的开源数据库,支持丰富的数据类型(如JSON和JSONB类型、数组类型)和自定义类型。而且他提供了丰富的接口,可以很容易的扩展它的功能,如可以再GiST框架下实现自己的索引类型等。PostgreSQL是完全的事务安全性数据库,完整地支持外键、联合、视图、触发器和存储过程(并支持多种语言开发存储过程)。它支持了大多数的SQL:2008标准的数据类型,包括整型、数值值、布尔型、字节型、字符型、日期型、时间间隔型和时间型,它也支持存储二进制的大对像,包括图片、声音和视频。PostgreSQL对很多高级开发语言有原生的编程接口,如C/C++、Java、.Net、Perl、Python、Ruby、Tcl 和ODBC以及其他语言等
二、Linux 上安装 PostgreSQL
linux下安装PostgreSQL可采用三种方式,二进制已编绎安装包、yum安装、源码安装三种方式进行安装
1.环境准备
// 检查PostgreSQL 是否已经安装rpm -qa | grep postgres // 检查PostgreSQL 安装位置rpm -qal | grep postgres// 卸载已安装PostgreSQLrpm –e PostgreSQL版本// 查看卸载是否已完成rpm -qa | grep postgres
2.二进制已编绎安装包
2.1 下载二进制包
// 官网下载地址https://www.enterprisedb.com/download-postgresql-binaries
// 下载地址https://get.enterprisedb.com/postgresql/postgresql-10.23-1-linux-x64-binaries.tar.gz
2.2 创建postgres用户
// 创建用户useradd postgres// 设置密码passwd postgres
2.3 解压安装包
安装包放到 /home/postgres 下
// 创建目录mkdir -p /home/postgres// 解压安装包tar -xvf postgresql-10.23-1-linux-x64-binaries.tar.gz -C /home/postgres/// yum依赖yum install -y gcc gcc-c++yum install -y readline-develyum install -y zlib-devel
2.4 创建data目录
mkdir -p /home/postgres/pgsqlmkdir -p /home/postgres/pgsql/data mkdir -p /home/postgres/pgsql/logs
2.4 启动登陆postgresql
//初始化./bin/initdb -E utf8 -D /home/postgres/pgsql/data
//初始化结果返回[postgres@localhost pgsql]$ ./bin/initdb -E utf8 -D /home/postgres/pgsql/dataThe 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 "en_US.UTF-8".The default text search configuration will be set to "english".Data page checksums are disabled.fixing permissions on existing directory /home/postgres/pgsql/data ... okcreating subdirectories ... okselecting default max_connections ... 100selecting default shared_buffers ... 128MBselecting default timezone ... PRCselecting dynamic shared memory implementation ... posixcreating configuration files ... okrunning bootstrap script ... okperforming post-bootstrap initialization ... oksyncing data to disk ... okWARNING: enabling "trust" authentication for local connectionsYou can change this by editing pg_hba.conf or using the option -A, or--auth-local and --auth-host, the next time you run initdb.Success. You can now start the database server using: ./bin/pg_ctl -D /home/postgres/pgsql/data -l logfile start
//启动./bin/pg_ctl -D /home/postgres/pgsql/data -l /home/postgres/pgsql/logs/pgsql.log start
//关闭./bin/pg_ctl -D /home/postgres/pgsql/data stop
//登录postgresql数据库./bin/pg_ctl -D /home/postgres/pgsql/data stop
//创建用户和数据库并授权create user test_user with password '123456'; // 创建用户create database test_db owner test_user; // 创建数据库grant all privileges on database test_db to test_user; // 授权
// 退出psql(输入 \q 再按回车键即可
./bin/psql -h 127.0.0.1 -d test_db -U test_user -p 5432
// 开启远程访问// 修改postgresql.conf文件,取消 listen_addresses 的注释,将参数值改为“*”// 修改pg_hba.conf文件,增加下图红框部分内容host all all 0.0.0.0/0 md5
3.yum安装PostgreSQL
安装过程官网参考
https://www.postgresql.org/download/linux/redhat/
3.1 安装
// Install the repository RPM:sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm// Install PostgreSQL:sudo yum install -y postgresql13-server
3.2 指定数据目录
默认postgreql 安装在/usr/pgsql-13,数据存储目录:/var/lib/pgsql/13/data,在实际生产中/var可能存在硬盘空间不足的问题,我们一般将数据存储目录放在挂载的硬盘如/data
chown postgres:postgres /data/pgdatachmod 750 /data/pgdataa
3.3 修改启动参数
$vi /usr/lib/systemd/system/postgresql-13.service// 修改PGDATA参数,该参数会在 postgresql-13-setup initdb 中使用Environment=PGDATA=/data/pgdata// 重新加载服务配置文件systemctl daemon-reload
3.4 初始化数据库
// 切换用户su - postgres// 初始化数据库sudo /usr/pgsql-13/bin/postgresql-13-setup initdb// 设置开机自动启动sudo systemctl enable postgresql-13
执行时报用户不在sudoers中,在使用Linux系统过程中,通常情况下,我们都会使用普通用户进行日常操作,而root用户只有在权限分配及系统设置时才会使用,而root用户的密码也不可能公开。普通用户执行到系统程序时,需要临时提升权限,sudo就是我们常用的命令,仅需要输入当前用户密码,便可以完成权限的临时提升。在使用sudo命令的过程中,我们经常会遇到当前用户不在sudoers文件中的提示信息,如果解决该问题呢?通过下面几个步骤,可以很简单的解决此问题。
// 查看/etc/sudoers文件权限,如果只读权限,修改为可写权限[root@Compile user]# ls -l /etc/sudoers-r--r-----. 1 root root 4030 9月 25 00:57 /etc/sudoers[root@Compile user]# chmod 777 /etc/sudoers[root@Compile user]# ls -l /etc/sudoers-rwxrwxrwx. 1 root root 4030 9月 25 00:57 /etc/sudoers[root@Compile user]#// 执行vi命令,编辑/etc/sudoers文件,添加要提升权限的用户;在文件中找到root ALL=(ALL) ALL,在该行下添加提升权限的用户信息,如:root ALL=(ALL) ALLuser ALL=(ALL) ALL// 说明:格式为(用户名 网络中的主机=(执行命令的目标用户) 执行的命令范围)// 保存退出,并恢复/etc/sudoers的访问权限为440[root@Compile user]# chmod 440 /etc/sudoers[root@Compile user]# ls -l /etc/sudoers-r--r-----. 1 root root 4030 9月 25 00:57 /etc/sudoers[root@Compile user]#// 切换到普通用户,测试用户权限提升功能
3.5 修改配置文件
// 配置 postgresql.confvi /data/pgdata/postgresql.conf// 注解掉# listen_address="*"// 配置 pg_hba.confvi /data/pgdata/pg_hba.conf// 增加一行host all all 0.0.0.0/0 password// 防火墙打开5432端口firewall-cmd --zone=public --add-port=5432/tcp --permanent// 重启防火墙firewall-cmd --reload
3.6 启动数据库
// 停止数据库sudo systemctl stop postgresql-13// 设置开机自启动sudo systemctl enable postgresql-13// 启动数据库sudo systemctl start postgresql-13// 检查数据库状态sudo systemctl status postgresql-13
3.7 修改数据库用户postgres密码
// 切换用户su - postgres// 连接PGpsql -U postgres// 执行修改密码ALTER USER postgres with encrypted password 'PASSWORD'
4.源码方式安装PostgreSQL
4.1 下载源码
从官网下载,地址:
https://www.postgresql.org/download/
//下载地址和选定的源码包https://www.postgresql.org/download/postgresql-14.0.tar.gz// 安装GCC编译器,需要GNU make 3.80 或更新版本yum -y install gccmake --version
4.2 创建postgres用户
//创建用户useradd postgres//设置密码passwd postgres
4.3 进行源码安装
//1.解压tar -xvf postgresql-14.5.tar.gz -C /opt///2.yum依赖yum install -y gcc gcc-c++yum install -y readline-develyum install -y zlib-devel//3.编绎,并安装到/opt/postgresql目录mkdir /opt/postgresqlcd /opt/postgresql-14.5./configure --prefix=/opt/postgresqlmakemake install//4.准备数据目录mkdir -p /opt/postgresql/pgsqldatachown -R postgres:postgres /opt/postgresql/pgsqldata//5.切换到postgres用户su postgres/opt/postgresql/bin/initdb -D /opt/postgresql/pgsqldata #初始化数据库mkdir /opt/postgresql/pgsqldata/logs/opt/postgresql/bin/pg_ctl -D /opt/postgresql/pgsqldata -l /opt/postgresql/pgsqldata/logs/pgsql.log start #启动/opt/postgresql/bin/createdb test #创建测试库/opt/postgresql/bin/psql test #进入数据库//6.修改管理员密码ALTER USER postgres WITH PASSWORD '123456';
4.4 进行源码安装
// vi /opt/postgresql/pgsqldata/pg_hba.confhost all all 0.0.0.0/0 md5// vi //opt/postgresql/pgsqldata/postgresql.conflisten_addresses = '*'// /opt/postgresql/bin/pg_ctl -D /opt/postgresql/pgsqlData reload// 配置防火墙端口firewall-cmd --add-port=5432/tcp --permanentfirewall-cmd --reload
4.5 设置postgresql 服务自启动
// postgresql 服务cat > /usr/lib/systemd/system/postgresql.service << EOF[Unit]Description=postgreSQL ServerAfter=network.target[Service]User=postgresGroup=postgresType=forkingTimeoutSec=0PermissionsStartOnly=truePIDFile=/opt/postgresql/pgsqldata/postmaster.pidExecStart=/opt/postgresql/bin/pg_ctl -D /opt/postgresql/pgsqldata -l /opt/postgresql/pgsqldata/logs/pgsql.log startExecReload=/opt/postgresql/bin/pg_ctl -D /opt/postgresql/pgsqldata reloadExecStop=/opt/postgresql/bin/pg_ctl -D /opt/postgresql/pgsqldata stopPrivateTmp=trueLimitNOFILE = 65535Restart=on-failureRestartSec=3RestartPreventExitStatus=1PrivateTmp=false[Install]WantedBy=multi-user.targetEOF// 服务启动停止systemctl daemon-reloadsystemctl stop postgresqlsystemctl start postgresqlsystemctl enable postgresql
5.基本操作
// 查看当前的数据库列表\l // 建表create table test( id bigint , name varchar(50), password varchar(30) );// 插入insert into test values(1,'test','123');// 查询select * from test;// 查看pgsql版本SELECT version();// 查看用户名和密码SELECT * FROM pg_authid;//获取服务器上所有数据库信息SELECT * FROM pg_database ORDER BY datname;//获取所有库表信息select * from pg_tables ORDER BY schemaname;//获取当前\d 库名 获取库中数据表名列表\d 表名 获取表结构字段描述//备份与还原/opt/postgresql/bin/pg_dump -h localhost -U postgres -p 5432 -d test -s -f /root/data.sql/opt/postgresql/bin/psql -h localhost -p 5432 -U postgres -W -d test < /root/data.sql
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。