提示:以下是本篇文章正文内容,下面案例可供参考
一、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
- // 卸载已安装PostgreSQL
- rpm –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-devel
- yum install -y zlib-devel
复制代码 2.4 创建data目次
- mkdir -p /home/postgres/pgsql
- mkdir -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/data
- 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 "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 ... ok
- creating subdirectories ... ok
- selecting default max_connections ... 100
- selecting default shared_buffers ... 128MB
- selecting default timezone ... PRC
- selecting dynamic shared memory implementation ... posix
- creating configuration files ... ok
- running bootstrap script ... ok
- performing post-bootstrap initialization ... ok
- syncing data to disk ... ok
- WARNING: enabling "trust" authentication for local connections
- You 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; // 授权
复制代码- ./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/pgdata
- chmod 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) ALL
- user 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.conf
- vi /data/pgdata/postgresql.conf
- // 注解掉
- # listen_address="*"
- // 配置 pg_hba.conf
- vi /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
- // 连接PG
- psql -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 gcc
- make --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-devel
- yum install -y zlib-devel
- //3.编绎,并安装到/opt/postgresql目录
- mkdir /opt/postgresql
- cd /opt/postgresql-14.5
- ./configure --prefix=/opt/postgresql
- make
- make install
- //4.准备数据目录
- mkdir -p /opt/postgresql/pgsqldata
- chown -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.conf
- host all all 0.0.0.0/0 md5
- // vi //opt/postgresql/pgsqldata/postgresql.conf
- listen_addresses = '*'
- // /opt/postgresql/bin/pg_ctl -D /opt/postgresql/pgsqlData reload
- // 配置防火墙端口
- firewall-cmd --add-port=5432/tcp --permanent
- firewall-cmd --reload
复制代码 4.5 设置postgresql 服务自启动
- // postgresql 服务
- cat > /usr/lib/systemd/system/postgresql.service << EOF
- [Unit]
- Description=postgreSQL Server
- After=network.target
- [Service]
- User=postgres
- Group=postgres
- Type=forking
- TimeoutSec=0
- PermissionsStartOnly=true
- PIDFile=/opt/postgresql/pgsqldata/postmaster.pid
- ExecStart=/opt/postgresql/bin/pg_ctl -D /opt/postgresql/pgsqldata -l /opt/postgresql/pgsqldata/logs/pgsql.log start
- ExecReload=/opt/postgresql/bin/pg_ctl -D /opt/postgresql/pgsqldata reload
- ExecStop=/opt/postgresql/bin/pg_ctl -D /opt/postgresql/pgsqldata stop
- PrivateTmp=true
- LimitNOFILE = 65535
- Restart=on-failure
- RestartSec=3
- RestartPreventExitStatus=1
- PrivateTmp=false
- [Install]
- WantedBy=multi-user.target
- EOF
- // 服务启动停止
- systemctl daemon-reload
- systemctl stop postgresql
- systemctl start postgresql
- systemctl 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
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |