当前位置:  首页  >  数据库  >  postgresql

CentOS5中的postgresql安装

注意:系统的时间需要调至到当前时间,否则在make的时候会出现死循环

在安装CentOS后,没有gcc文件,需要先安装。
将光光盘中的gcc开头的文件拷到root下,然后 rpm -ivh *.rpm
如果rpm -ivh *.rpm不管用,请操作下面的步骤
CentOS5.2系统安装在虚拟机上,编译gcc.
挂载CentOS的DVD系统光盘,然后进入CentOS目录内,安装顺序如下:
rpm -ihv kernel-headers-2.6.18-92.el5.i386.rpm
rpm -ivh glibc-headers-2.5-24.i386.rpm
rpm -ivh glibc-devel-2.5-24.i386.rpm
rpm -ivh libgomp-4.1.2-42.el5.i386.rpm
rpm -ivh gcc-4.1.2-42.el5.i386.rpm
rpm -ivh zlib-devel-1.2.3-3.i386.rpm

注意:必须先安装: kernel-headers-2.6.18-92.el5.i386.rpm 这个包,否则报错.
-------------------------------------------------------------------------------------
其中会提示少很多文件的错误,相关的文件全部在光盘里,找到后,再拷贝进去,再执行一样的命令,知道全部OK通过。同时make的时候,会提示缺少readline。。。。的错误,一样将光盘里的readline---的文件拷贝进来,然后安装。 这样make,install就可以使用了。

1、下载postgresql最新版:http://www.postgresql.org/ftp/source/
2、解压文件:
tar zxvf postgresql-8.3.7.tar.gz
cd postgresql-8.3.7
1 添加用户 创建目录
  useradd postgres -d /usr/local/pgsql
  passwd postgres
  mkdir /usr/local/pgsql/
  mkdir /usr/local/pgsql/data
  chown -R postgres /usr/local/pgsql
  chown postgres /usr/local/pgsql/data
 
2 设置环境变量
  vi /etc/profile
  export LD_LIBRARY_PATH=/usr/local/pgsql/lib:$LD_LIBRARY_PATH
  export PATH=/usr/local/pgsql/bin:$PATH
  export PGDATA=/usr/local/pgsql/data
  export MANPATH=$MANPATH:/usr/local/pgsql/man
3 安装
   ./configure --prefix=/usr/local/pgsql ;make;make install
4 初始化数据库
  su postgres
  /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data 9、配置监听地址和端口:
vi /usr/local/pgsql/data/postgresql.conf
取消以下两行的注释
   listen_addresses = '*'
   port = 5432
启动数据库
   /usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data
然后再重新启动一个linux的窗口。在这个新窗口里进行如下操作。
任何目录下(需要用postgres用户登录)
createdb edm(创建数据库)
psql edm(进入数据库操作)
。。。。。。

10、允许远程连接:
vi /usr/local/pgsql/data/pg_hba.conf
添加
   host all all 192.168.1.0/24 trust 
   每项的具体意思在配置文件中有详细说明
配置iptables让远程主机能访问:
   vi /etc/sysconfig
   添加
      -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 5432 -j ACCEPT
   service iptables restart
11、让postgresql数据库随系统启动而启动:
将启动脚本拷贝到/etc/init.d/目录下,具体执行如下命令:
cd /etc/rc.d/init.d
cp (第一步解压的安装文件目录)/postgresql-8.3.7/contrib/start-scripts/linux postgresql
chmod +x postgresql
vi postgresql
   prefix=/usr/local/pgsql
   PGDATA="/usr/local/pgsql/data"
   PGUSER=postgres
   PGLOG="/var/log/pgsql.log"
   chkconfig --add postgresql
启动数据库:
   service postgresql start  ????

12,创建数据库其它用户
要在postgres下登录
创建超级用户;
xiaop@localhost~$ createuser -P -d -a -e testuser
Enter password for new user: testuser
Enter it again: testuser 删除用户:
命令:dropuser [-i] [-h] [-p] [-e] 用户名 参数说明:
[ -i]:删除用户前,要求确认;
[-h 主机名]:删除某个主机上的Postgres用户;
[-p port]:与-h参数一同使用,指定主机的端口;
[-e]:将执行过程显示到Shell上。
3.2.1 删除本地的Postgres用户;
xiaop@localhost~$ dropuser testuser
13,创建一个属于其它用于的数据库
createdb lotus -O trancecore
不会的时候,记得看看--help
默认的情况下 postgres没有启动,所以只要使用,就要先启动哦

配置完毕 。
1、安装和启动
#rpm -qa | grep postgresql
其中可执行文件放在/usr/bin目录中,文档则放在/usr/share/doc/postgresql目录中,自动创建postgres帐号(管理帐号),其home目录为/var/lib/qpsql
2、设置postgresql
#passwd postgres     设置postgres密码
#cp .bashrc /var/lib/pqsql
#cp .bash_profile /var/lib/pgsql
#chown -R postgres:gostgres /var/lib/pgsql  设置文件属性
#su -postgres
$vi /var/lib/pgsql/.bash_profile   设置postgres数据库管理员环境变量
其中更改
USERNAME='postgres'   将root更改为postgres
PGLIB=/usr/lib/pgsql      设置环境变量PGLIB
PGDATA=/var/lib/pgsql    数据库文件的存放位置
$Export USERNAME ENV PATH PGLIB PGDATA    导出环境变量
$source ~/.Bash_profile 使环境立即生效
$initdb
系统会生成一个名为template1的数据库,包含了存储整个数据库信息的系统表,生成其他数据库时的模板。
$postmaster &
$psql template1  测试数据库连接
template1=#       表明数据库连接正常
template1=# CREATE DATABASE ds; 建立测试数据库ds
CREATE DATABASE
template1=# c ds    连接测试数据库ds
You are now connected to database "ds".
ds=# CREATE TABLE bar(i int4,c char(16));  在ds数据库中建立测试表
CREATE TABLE
ds=# q    退出
3、数据库状态管理
#/etc/rc.d/init.d/postgresql stop  停止
#/etc/rc.d/init.d/postgresql restart   重新启动
4、用户管理
$createuser
-d 允许新增的用户创建数据库  -D禁止新增的用户创建数据库    -h host 指定主机名    -I userid 设置用户编号,可以直接设置成系统用户的UID  -p port 指定连接的网络端口号 
-a 允许新增的用户创建用户   -A 禁止新增的用户创建用户 username 指定用户名称
$createuser -i 500 -d -A aaa 将该用户的帐号设置为aaa,编号为500,可以新建数据库(-d),但不能新增用户(-A)
交互式创建用户
$createuser 直接输入命令createuser根据提示创建用户
$dropuser
-h 与-p的含义与createuser中的相同,参数-I表示删除前要求确认
$ dropuser aaa 删除用户aaa
5、数据库的管理与维护
createdb命令可以用来新增数据库,只有创建它的用户与数据库管理员(postgres)才有权将其删除
$createdb ds    创建数据库ds
$psql -l   显示系统中有几个数据库
$dropdb ds    删除数据库
PostgreSq充许将数据库保存保存在不同的目录内,使用initlocation命令可以创建新的数据库目录,但必须确保postgres帐号具有访问访目录的权限
$export PGDATA2=/var/lib/pgsql/db2
$initlocation $PGDATA2
注意:设置完后请重启postmaster,createdb后面参数-D所使用的环境变量不必加"$"符号
6、PostgreSQL数据库的安全性控制
1)、数据库文件保护,所有在数据库里存储的文件都受到保护,除了postgres超级用户外其他用户不能读取
2)、默认客户端只能通过本地的一个Linux Socket连接到数据库服务器,而不是通过TCP/IP Socket,而且后端必须带-I选项启动才能让本地客户端连接上来
3)、可以通过在PG_DATA里的pg_hba.conf文件来限制可连接的客户端IP地址或用户名。
4)、客户端连接可以通过被外部软件包来认证
5)、Postgres里的每个用户都被赋予一个用户名和(可选 )口令,默认情况下,用户对不是自己创建的数据库没有写权限
6)、用户可以隶属于组,而且表的访问权限以组权限为基本设置
1、用户认证
认证是后端服务器和postmaster验证请求访问数据的用户的过程,所有激活postgres的用户都应对照pg_user表的内容进行检查以确认他们的权限,对用户身份的核对可以通过多种方式进行
一、从用户Shell登陆的用户
从用户shell启动的后端数据库服务器通过setuid调用把用户标识转为用户postgres之前要检查用户标识,不需要进行其它的认证。
二、从网络登陆的用户
用于Linux和TCP/IP SOCKET的认证方法
方法                                             功能
trust                                     无条件连接
reject                                    无条件拒绝连接
crypt                                     客户端向用户请求一个口令,该口令被加密后(使用crypt(3)发送,国情 pg_shadow表口令进行比较)
password                              以名文发送口令,然后与pg_shadow进行比较,也可以在password后面声明一个可选的文件进行对比,而不用pg_shadow
认证方式只能用于TCP/IP Socket
krb4                  基于Kerberos V4认证用户
krb5                 
吐了个 "CAO" !
扫码关注 PHP1 官方微信号
PHP1.CN | 中国最专业的PHP中文社区 | PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | PHP问答
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved PHP1.CN 第一PHP社区 版权所有