intall postgresql 9.1 on CentOS

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

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

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
相关文章
相关标签/搜索