intall postgresql 9.1 on CentOS

前端之家收集整理的这篇文章主要介绍了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,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

猜你在找的Postgre SQL相关文章