Linux下安装PostgreSQL
- 一、PostgreSQL简介
- 二、Linux 上安装 PostgreSQL
- 1.二进制已编绎安装包方式安装
- (1)下载二进制包
- (2)创建postgres用户
- (3)解压
- (4)创建data目录
- (5)初始化
- (6)启动
- (7)关闭
- (8)登录postgresql数据库
- (9)创建用户和数据库并授权
- (10)退出psql(输入 \q 再按回车键即可)
- (11)连接数据库
- (12)开启远程访问
- 2.yum安装PostgreSQL
- (1)安装过程官网参考
- (2)安装过程步骤
- 3.源码方式安装PostgreSQL
- (1)下载源码
- (2)创建postgres用户
- (3)进行源码安装
- (4)设置postgresql 服务自启动
- 三、基本操作
- 1.`查看当前的数据库列表`
- 2.`建表`
- 3.`插入与查询`
- 4.`查看pgsql版本`
- 5.`查看用户名和密码`
- 6.`获取服务器上所有数据库信息`
- 7.`得到db中所有表的信息`
- 8.`备份与还原`
- 9.`更多参考PostgreSQL 教程`
- 其他
- psql: FATAL: Ident authentication failed for user
一、PostgreSQL简介
PostgreSQL数据库是目前功能强大的开源数据库,支持丰富的数据类型(如JSON和JSONB类型、数组类型)和自定义类型。而且他提供了丰富的接口,可以很容易的扩展它的功能,如可以再GiST框架下实现自己的索引类型等。PostgreSQL是完全的事务安全性数据库,完整地支持外键、联合、视图、触发器和存储过程(并支持多种语言开发存储过程)。它支持了大多数的SQL:2008标准的数据类型,包括整型、数值值、布尔型、字节型、字符型、日期型、时间间隔型和时间型,它也支持存储二进制的大对像,包括图片、声音和视频。PostgreSQL对很多高级开发语言有原生的编程接口,如C/C++、Java、.Net、Perl、Python、Ruby、Tcl 和ODBC以及其他语言等,也包含各种文档。
从技术角度来讲,PostgreSQL 采用的是比较经典的C/S(client/server)结构,也就是一个客户端对应一个服务器端守护进程的模式,这个守护进程分析客户端来的查询请求,生成规划树,进行数据检索并最终把结果格式化输出后返回给客户端。为了便于客户端的程序的编写,由数据库服务器提供了统一的客户端 C 接口。而不同的客户端接口都是源自这个 C 接口,比如ODBC,JDBC,Python,Perl,Tcl,C/C++,ESQL等, 同时也要指出的是,PostgreSQL 对接口的支持也是非常丰富的,几乎支持所有类型的数据库客户端接口。这一点也可以说是 PostgreSQL 一大优点。
PostgreSQL强壮的一个原因源于它的架构。和商业数据库一样,PostgreSQL可以用于C/S(客户/服务器)环境。这对于用户和开发人员有很多好处。
二、Linux 上安装 PostgreSQL
linux下安装PostgreSQL可采用三种方式,二进制已编绎安装包、yum安装、源码安装三种方式进行安装
1.二进制已编绎安装包方式安装
第一种安装方式:通过二进制已编绎安装包安装
(1)下载二进制包
https://www.enterprisedb.com/download-postgresql-binarieshttps://get.enterprisedb.com/postgresql/postgresql-10.22-1-linux-x64-binaries.tar.gz
(2)创建postgres用户
#创建用户useradd postgres#设置密码passwd postgres
(3)解压
tar -xvf postgresql-10.12-1-linux-x64-binaries.tar.gz -C /home/postgres/
(4)创建data目录
mkdir -p /home/postgres/pgsql/datamkdir -p /home/postgres/pgsql/logs
(5)初始化
./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
(6)启动
./bin/pg_ctl -D /home/postgres/pgsql/data -l /home/postgres/pgsql/logs/pgsql.log start
(7)关闭
./bin/pg_ctl -D /home/postgres/pgsql/data stop
(8)登录postgresql数据库
./psql
(9)创建用户和数据库并授权
create user test_user with password '123456'; // 创建用户create database test_db owner test_user; // 创建数据库grant all privileges on database test_db to test_user; // 授权
(10)退出psql(输入 \q 再按回车键即可)
\q
(11)连接数据库
./bin/psql -h 127.0.0.1 -d test_db -U test_user -p 5432
(12)开启远程访问
####修改postgresql.conf文件,取消 listen_addresses 的注释,将参数值改为“*”####修改pg_hba.conf文件,增加下图红框部分内容hostall all 0.0.0.0/0md5####navicathttps://www.cnblogs.com/zhi-leaf/p/11432054.html
2.yum安装PostgreSQL
第一种安装方式:通过yum安装
(1)安装过程官网参考
https://www.postgresql.org/download/linux/redhat/
(2)安装过程步骤
# 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 postgresql10-server## 采用ln -s方式挂载/var/lib/pgsql/10/data目录用来修改数据目录,以/home/postgresdata为例mkdir /home/postgresdata -pchown -R postgres:postgres /home/postgresdatarm -rf /var/lib/pgsql/10/dataln -s /home/postgresdata /var/lib/pgsql/10/datachown -R postgres:postgres /var/lib/pgsql/10/data# Optionally initialize the database and enable automatic start:sudo /usr/pgsql-10/bin/postgresql-10-setup initdbsudo systemctl enable postgresql-10sudo systemctl start postgresql-10
3.源码方式安装PostgreSQL
第三种安装方式:通过源码安装
部分内容参考了此文https://www.cnblogs.com/wsum/p/15522211.html
(1)下载源码
##下载地址和源码https://www.postgresql.org/download/postgresql-14.5.tar.gz
(2)创建postgres用户
#创建用户useradd postgres#设置密码passwd postgres
(3)进行源码安装
以安装到/opt/postgresql目录下为例
##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)设置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
三、基本操作
1.查看当前的数据库列表
####查看当前的数据库列表\l
2.建表
####建表create table test( id bigint , name varchar(50), age int, password varchar(30) );
3.插入与查询
####插入insert into test values(1,'test',21,'123');####查询select * from test;
4.查看pgsql版本
SELECT version();
5.查看用户名和密码
SELECT * FROM pg_authid;
6.获取服务器上所有数据库信息
SELECT * FROM pg_database ORDER BY datname;
7.得到db中所有表的信息
#获取所有库表信息select * from pg_tables ORDER BY schemaname;#获取当前\d 库名 获取库中数据表名列表\d 表名 获取表结构字段描述
8.备份与还原
/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
9.更多参考PostgreSQL 教程
PostgreSQL 教程:
https://www.runoob.com/postgresql/postgresql-tutorial.html
其他
psql: FATAL: Ident authentication failed for user
#vi /var/lib/pgsql/10/data/pg_hba.conf 将localhost和127.0.0.1的两行的ident修改成trust,然后重启服务