PostgreSQL on Linux安装部署及基本使用
◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
◆◆◆◆◆◆◆◆PostgreSQL安装部署◆◆◆◆◆◆◆◆
◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
前言:项目中使用到了PostgreSQL,目前只涉及安装部署,及基本使用,通过几天的学习,对PG有个初步了解,做此整理。
环境:PostgreSQL 9.6+Redhat 6.3
一、安装数据库
1、删除系统中旧版本PostgreSQL
(1)查看现有版本:
rpm -qa | grep postgres
(2)检查pg服务,停服务
查看服务:service postgresql-9.4 status
停:service postgresql-9.4 stop
查看进程:ps -ef | grep postgres
停:kill -9 12345
(3)删除现有版本
rpm --nodeps -e postgresql94-libs-9.4.10-1PGDG.rhel6.x86_64
rpm --nodeps -e postgresql94-server-9.4.10-1PGDG.rhel6.x86_64
rpm --nodeps -e postgresql94-contrib-9.4.10-1PGDG.rhel6.x86_64
rpm --nodeps -e postgresql94-9.4.10-1PGDG.rhel6.x86_64
2、下载新版本
https://yum.postgresql.org/9.6/redhat/ 本地址为redhat平台9.6版本下载链接,如需下载其他版本,将9.6改为其它版本即可。如9.3:https://yum.postgresql.org/9.3 然后选择平台
(1)基础安装,需要下载四个介质:
postgresql96-libs-9.6.2-2PGDG.rhel6.x86_64.rpm
postgresql96-server-9.6.2-2PGDG.rhel6.x86_64.rpm
postgresql96-9.6.2-2PGDG.rhel6.x86_64.rpm
(2)扩展安装,两个介质:
postgresql96-contrib-9.6.2-2PGDG.rhel6.x86_64.rpm
postgresql96-devel-9.6.2-2PGDG.rhel6.x86_64.rpm
3、安装PostgreSQL
(1)基础包按照如下顺序安装:
rpm -ivh postgresql96-libs-9.6.2-2PGDG.rhel6.x86_64.rpm
rpm -ivh postgresql96-9.6.2-2PGDG.rhel6.x86_64.rpm
rpm -ivh postgresql96-server-9.6.2-2PGDG.rhel6.x86_64.rpm
(2)扩展:
rpm -ivh postgresql96-contrib-9.6.2-2PGDG.rhel6.x86_64.rpm
rpm -ivh postgresql96-devel-9.6.2-2PGDG.rhel6.x86_64.rpm
注:安装server可能缺少系统依赖包openssl,或需要升级如本次安装server时报错:libcrypto.so.10(OPENSSL_1.0.1_EC)(64bit) is needed by postgresql96-server-9.6.2-2PGDG.rhel6.x86_64
删除旧版本openssl:
rpm -qa opensssl
rpm --nodeps -e openssl
下载openssl-1.0.1e-48.el6.x86_64.rpm安装后,即可继续安装server。
根据提示的具体版本下载安装即可。
4、将初始化数据指定到自定义路径
PostgreSQL默认将数据文件等配置文件初始化到/var/lib/pgsql/9.6/data,实际应用中,我们希望将其放置到自定义的路径下(单独挂载的文件系统),这就需要初始化数据前,将路径指定到自定义路径
修改postgres用户.bash_profile中$PGDATA变量到自定义路径。
注意:这个自定义路径要有postgres:postgres权限,注意赋权。
5、初始化数据库(初始化过程会建Postgres主库,无主库则PostgreSQL无法启动)
service postgresql-9.6 initdb
6、启动数据库
service postgresql-9.6 start
二、使用数据库
0、简介postgreSQL数据库结构,以便有清晰的管理思路。
(1)postgreSQL对象层次:
服务器、数据库、模式、表或其他类型对象。而用户与schema清晰分离开了。创建user与创建schema完全不相关。创建user后,赋予其指定数据库/schema的权限,即可访问对应db和shema。
而创建schma是在某个db下进行,创建后,可在schema下创建表等对象,用户对其有对应权限才可以对其做对应操作。
安装postgresql后,启动PostgreSQL服务,进入默认的postgres用户。
1、使用postgres用户(超级用户,类似oracle的sysdba)登录数据库:
#su - postgres ####postgres系统用户即为默认的postgreSQL操作用户,类似oracle的oracle用户。
$psql ####进入postgres用户后执行psql即可登录到pg中,这样默认是登录到:postgres用户 postgres库;类似oracle的sqlplus / as sysdba
注意:安装后,psql可执行程序在/usr/pgsql-9.6/bin/psql,如果postgres用户下不能执行psql,进行如下配置:
(1)查看postgres用户的psql对应环境变量:
whereis psql
返回:psql: /usr/sbin/psql /usr/share/man/man1/psql.1
(2)将该路径软链接到刚安装的psql实际存在的路径/usr/pgsql-9.6/bin/psql
ln -s /usr/pgsql-9.6/bin/psql /usr/sbin/psql
2、创建db,user,并将所建db指定给指定user管理,赋权
CREATE USER postgr WITH PASSWORD 'postgr';
CREATE DATABASE dsgdb OWNER postgr;
GRANT ALL PRIVILEGES ON DATABASE dsgdb to postgr;
3、基本操作
对数据库结构、表结构等的操作可以登陆数据库后使用\?命令列出。下边列出最基本的常用命令:
\l #列出当前PostgreSQL中有哪些数据库,拥有者、字符集、权限等;
\dn #列出当前库中所有schema;
\d #列出当前数据库中的表、视图、序列;
\d tablename #查看指定表的表结构;
select current_database(); #查看当前登陆的数据库;
select * from current_user; #查看当前登陆的用户;
\c dbname username #切换登陆的数据库、用户;
3、使用指定用户登录指定库:
#su - postgres
$psql -d dsgdb -U postgr #psql后边-d参数指定db,-U参数指定登陆用户,其他参数可psql --help查看
set search_path to dsg_test; #设置模式搜索路径为某个schema;默认是public;
set search_path to public; #模式搜索路径切换回默认的public;