intall postgresql 9.1 on CentOS

http://people.planetpostgresql.org/devrim/index.php?/archives/48-What-is-new-in-PostgreSQL-9.0-RPMs.html

# rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-5.noarch.rpm

Important note:
In order to use PGDG repository properly, you may need to exclude postgresql packages from the repository of the distro.
Here are the steps:
    As root, cd /etc/yum.repos.d
    Edit distro's .repo file:
        On Fedora, edit fedora.repo and fedora-updates.repo, [fedora] sections
        On CentOS, edit CentOS-Base.repo, [base] and [updates] sections.
        On Red Hat, edit edit /etc/yum/pluginconf.d/rhnplugin.conf [main] section.
    Add
    exclude=postgresql*
    to the bottom of the section.


That is enough for excluding distro packages.

CentOS6:
X64
rpm -ivh http://yum.pgrpms.org/9.1/redhat/rhel-6-x86_64/pgdg-centos91-9.1-4.noarch.rpm
i386
rpm -ivh http://yum.pgrpms.org/9.1/redhat/rhel-6-i386/pgdg-centos91-9.1-4.noarch.rpm

CentOS5
rpm -ivh http://yum.pgrpms.org/9.1/redhat/rhel-5.0-i386/pgdg-centos91-9.1-4.noarch.rpm

yum install postgresql91 postgresql91-libs postgresql91-contrib postgresql91-devel postgresql91-test
yum update libevent compat-libevent14



如果是通过EPEL安装的pg9.1可把路径添加到环境变量中修改 ~/.bash_profile:
PATH=$PATH:$HOME/bin:/usr/pgsql-9.1/bin

初始化pgsql:
# sudo -u postgres /usr/pgsql-9.1/bin/initdb -E utf8 --locale=zh_CN.UTF8 /data1/pgsql91/data
或者
# su postgres
# initdb -E utf8 --locale=C -D /usr/local/pgsql/data
# /usr/pgsql-9.1/bin/initdb -E utf8 --locale=zh_CN.UTF8 -D /var/lib/pgsql/9.1/data    #或者



2. 启动数据库 i参数允许远程连接,或者修改 /pgsql/data/postgresql.conf 修改listen
#service postgresql start
$pg_ctl -o "-i" -D /usr/local/pgsql/data -l logfile start

$postgres -D /usr/local/pgsql/data -i &
#pg_ctl -o "-i" -D /usr/local/pgsql/data -l logfile start

3. 修改管理员口令
$ sudo -upostgres psql -U postgres
postgres=# ALTER USER postgres WITH PASSWORD 'new-passwd';

3.创建用户
管理员用户
bash> createuser -Ps issence -U postgres
bash> createuser -APRS chery -U postgres

向导添加用户命令格式
createuser 是 SQL 命令 CREATE USER的封装。
命令:createuser [-a] [-A] [-d] [-D] [-e] [-P] [-h 主机名] [-p port] 用户名
参数说明:
shell>sudo -upostgres createuser -P issence
[-a]:允许创建其他用户,相当于创建一个超级用户;
[-A]:不允许此用户创建其他用户;
[-d]:允许此用户创建数据库;
[-D]:不允许此用户创建数据库;
[-e]:将执行过程显示到Shell上;
[-P]:创建用户时,同时设置密码;
[-h 主机名]:为某个主机上的Postgres创建用户;
[-p port]:与-h参数一同使用,指定主机的端口。
-r, --createrole          role can create new roles
-R, --no-createrole       role cannot create roles
-s, --superuser           role will be superuser
-S, --no-superuser        role will not be superuser



 PostgreSQL 创建帐号,数据库,权限
创建用户 issence,密码 pass,创建数据库 db_name,赋予 issence 在 数据库db_name 上的所有权限(只有这3个create,tmp, connect)。
# su postgres
$ psql
postgres# CREATE USER issence WITH PASSWORD 'pass';
postgres# CREATE DATABASE db_name;
postgres# GRANT ALL ON DATABASE db_name TO issence;
postgres# GRANT SELECT,UPDATE ON tb_table TO mark;        # 授予表权限(select,update,insert,drop...)给某用户,一次只能一个表
postgres# REVOKE SELECT ON tb_table FROM mark;    # 取消用户的表权限(select,update,insert,drop...)
postgres# GRANT CONNECT ON DATABASE db_name TO PUBLIC;



更改数据库用户口令:
postgres=# ALTER USER hm WITH PASSWORD 'xx';

创建数据库:
createdb and createuser 在后面都必须加上用户名,如果不加的话psql会认为你登录系统的名字就是执行这个操作的用户
除非当前是 su postgres, 如果在初始化集群时已经设置默认编码则这儿可以省略:
# createdb db_test -U postgres -O issence
shell> createdb db_test -O issence
或者pg命令行
postgres=# CREATE DATABASE mychery OWNER = issence;

# createdb db_test -U postgres -E UTF8 --locale=zh_CN.UTF8
shell> createdb db_macro -E utf8 --locale=zh_CN.UTF8  --owner=issence -Upostgres

管上述哪种方法都只能得到部分恢复了的数据库。另外,你可以将整个恢复过程当成一个单独的事务,这样就能够保证要么全部恢复成功,
要么全部回滚。可以通过向 psql 传递 -1 或 --single-transaction 命令行参数达到此目的。
使用这个模式的时候即使一个很微小的错误也将导致已经运行了好几个小时的恢复过程回滚。尽管如此,这种模式也比手动清除哪些不完整的恢复数据强。
psql -Uissence dbname < infile

恢复:
# gzip -cd db.sql.gz | psql -1 -Upostgres -d newdb -f -
# gzip -dc mychery-20111213.sql.gz | psql -Upostgres -d uc -


5. 创建数据库
在PostgreSQL服务启动后,使用postgres用户便可以成功的运行psql命令连接数据库了。
但是这时候使用其他Linux用户仍然不能够使用psql进入PostgreSQL数据库,会出现如下错误:
psql: FATAL: Ident authentication failed for user "postgres"
这是因为PostgreSQL数据库安装的时候只创建了一个数据库用户postgres,默认密码为空。(注意这里的postgres是数据库用户,跟Linux系统用户是两个概念)
而且默认的鉴权策略是"ident"鉴权,即默认配置下只有使用postgres系统用户才可以使用postgres数据库用户来登陆。
我们需要把鉴权方式改为密码鉴权。
首先编辑 /usr/local/pgsql/data/pg_hba.conf,做如下修改:
把其中所有的"ident sameuser"更改为md5(即使用md5密码加密鉴权)并且远程连接时只允许数据库hm用户
host    all         hm         0.0.0.0/0           md5



重启服务:
#service postgresql restart
#/etc/init.d/postgresql-9.1 restart
$pg_ctl  -D /usr/local/pgsql/data reload
$pg_ctl  -D /usr/local/pgsql/data restart


使用pg_restore -j参数并行恢复,pg_dump备份必须使用参数Fc. -j不能和-1参数同时使用
pg_dump mychery -Ft > mychery.dump
pg_restore -d mychery -j5 mychery.dump





你可能感兴趣的:(intall postgresql 9.1 on CentOS)