专注于快乐的事情

PostgreSQL 9.2在CentOS 6.3下的安装和windos下的测试

本文于2147天之前发表,文中内容可能已经过时。

开始

在服务器端,我们常常将PostgreSQL安装在linux端,而在本机测试时,本程序猿还是喜欢安装在window端。

Linux安装步骤

安装编译源码所需的工具和库

yum -y install wget gcc readline-devel zlib-devel make

下载源码压缩和解压

进入源码压缩包下载目录

cd /usr/src

下载

wget http://ftp.postgresql.org/pub/source/v9.2.4/postgresql-9.2.4.tar.bz2

解压

tar jxvf ./postgresql-9.2.4.tar.bz2

执行源码编译配置脚本

进入解压缩源码目录

cd ./postgresql-9.2.4

依次执行以下脚本,进行源码编译安装

./configure
make
make install

新增用户和用户组,初始化数据库数据文件目录

新增用户组

groupadd postgres

新增用户

useradd postgres -M -g postgres

新建数据库执行文件目录

mkdir -p /usr/local/pgsql

新建数据库数据文件目录

mkdir -p /data/pgsql/data

修改目录拥有者

chown -R postgres /usr/local/pgsql/.
chown -R postgres /data/pgsql/data
chown -R postgres /data/pgsql/data/.

编辑PATH搜索路径
vi /etc/profile
在文件的最后

PATH=/usr/local/pgsql/bin:$PATH
export PATH

生效PATH搜索路径

source /etc/profile

执行数据库初始化脚本

变更登录用户

su postgres

执行数据库初始化脚本

/usr/local/pgsql/bin/initdb --encoding=utf8 -D /data/pgsql/data

退出变更登录,回到root权限

exit

复制PostgreSQL执行脚本

cp /usr/src/postgresql-9.2.4/contrib/start-scripts/linux /etc/init.d/postgresql

增加执行权限

chmod +x /etc/init.d/postgresql

编辑PostgreSQL执行脚本,指定数据库文件目录

vi /etc/init.d/postgresql

修改其中的PGDATA="/data/pgsql/data"

编辑配置文件,配置可访问数据库的网络地址

vi /data/pgsql/data/postgresql.conf

listen_addresses = ‘*’

启动PostgreSQL服务

启动PostgreSQL

service postgresql start

重启数据库服务

service postgresql restart

设置开机自动启动服务

chkconfig postgresql on

编辑配置文件,设置密码md5验证

vi /data/pgsql/data/pg_hba.conf

修改器内容如下

# "local" is for Unix domain socket connections only
local all all md5
# IPv4 local connections:
#host all all 127.0.0.1/32 trust
host all all all md5

trust为明文,这样是危险的,一般改成md5。

用户和数据库的创建

创建用户

需要先启动数据库后,才能执行以下命令

createuser -W -h 127.0.0.1 testUser

创建用户testUser,-W表示需要输入密码。

创建数据库

createdb -U testUser mydb

-U表示用户,mydb为数据库名。

防火墙设置

有时客户端访问不了数据库,可能是防火墙的问题,,postgresql默认的访问端口为5432,操作如下:

/sbin/iptables -I INPUT -p tcp --dport 5432 -j ACCEPT
/etc/rc.d/init.d/iptables save #保存配置 
/etc/rc.d/init.d/iptables restart #重启服务

其他相关命令如下:

service iptables stop #关掉防火墙

chkconfig iptables off #永久关闭防火墙

windows安装步骤

下载

http://www.enterprisedb.com/products-services-training/pgbindownload
下载一个免安装版本,解压缩到D:\pgsql。

设置环境变量

设置环境变量,写一个批处理,setEnv.cmd,内容如下

set PGHOME=d:\pgsql
set PATH=%PGHOME%\bin;%path% 
set PGHOST=localhost 
set PGLIB=%PGHOME%\lib 
set PGDATA=%PGHOME%\data
start

初始化数据库

initdb -D "D:\pgsql\data-new" --encoding=utf8 --locale=C

若不使用-U pgsqlUser,则数据库里自动添加当前windows用户为数据库帐号
pgsqlUser可以通过net user pgsqlUser 123456 /add,但有的系统可能不支持。就不要搞复杂了。

启动数据库

D:\pgsql>pg_ctl start

上面命令在setEnv.cmd执行后执行

如果没有,需要指定PGDATA,
进行D:\pgsql\bin,执行

pg_ctl -D "D:\pgsql\data-new" -l logfile start

停止数据库

pg_ctl -D "D:\pgsql\data" stop

创建数据库和用户

和linux类似,需要先启动数据库

createuser -s -W -h 127.0.0.1 test

s表示为超级用户,-W提示输入密码

删除,执行dropuser -h 127.0.0.1 test

创建数据库

createdb -h 127.0.0.1 -U test mydb

命令行访问数据库

psql -h 127.0.0.1 -U test -d  mydb

在psql中进行密码修改

ALTER USER test PASSWORD 'goodluck';

psql的其他基本用法

显示当前日期 select current_date;

计算md5 加密 select md5(‘123456’);

执行sql语句

PostgreSQL数据库备份与恢复

备份

备份整个库

pg_dump -h 127.0.0.1 -C -U test mydb > mydb.bak

备份整个库表结构

pg_dump -h 127.0.0.1 -C -s -U test mydb > mydb.sql

备份单个表结构

pg_dump -h 127.0.0.1 -C -t my_calendar_event -t outsourcing_project -s -U test mydb > mydb.sql

上面是备份两个表的结构,-t指定。

恢复

psql -h 127.0.0.1 -U test -d  mydb < testdb.bak

学习网站

http://www.postgres.org.cn/

http://bbs.pgsqldb.com

评论系统未开启,无法评论!