今天下午花了好长时间才使得postgresql正常运行到了Linux环境下,感谢网络分享者,现在整理下以备再次使用:
1.CentOS6安装postgresql9.0 yum 仓库:直接网盘下载:https://pan.baidu.com/s/1o7PF5ua 执行:rpm -i pgdg-centos92-9.2-7.noarch.rpm
2.安装新版本的Postgresql:yum install postgresql92-server postgresql92-contrib
在centos用yum安装postgresql的路径为:/var/lib/pgsql/。
注:如果已安装postgresql或有旧版本可以卸载删除,下边有详细介绍旧版本卸载(由于我安装了一个8.0版本postgresql,安装时出了点问题,所以卸载了重装装了个9.2版本的postgresql)
3.初始化数据库:/etc/init.d/postgresql-9.2 initdb
4.启动数据库:/etc/init.d/postgresql-9.2 start
注意:postgresql启动后就可以利用servicepostgresql-9.2 start、restart或者stop来控制它了。
5.把postgresql加入自启动列表
cd /etc/init.d
chkconfig --add postgresql-9.2
6.查看一下自启动列表:chkconfig --list。
7.PostgreSQL 数据库默认会创建一个postgres的数据库用户作为数据库的管理员,默认密码为空,我们需要修改为指定的密码,这里设定为’postgres’
在控制台输入以下命令:
# su - postgres
$ psql
# ALTER USER postgres WITH PASSWORD 'postgres';
# select * from pg_shadow ;
# create database 数据库名;
# \c数据库名
david=# 写SQL语句
8、安装成功。
[root@ postgresql]# rpm -qa|grep post
postgresql-docs-8.0.3-1.1AX
postgresql-libs-8.0.3-1.1AX
freeradius-postgresql-1.0.1-3.RHEL4.1AX
......
注:查询命令格式:
rpm -q ( or --query) options
参数:
pkg1 ... pkgN :查询已安装的软件包
详细选项
-a 查询所有安装的软件包
而grep post则是查找所有列表中包含"post"字符串的项
rpm -ev postgresql-docs-8.0.3-1.1AX
rpm -ev --nodeps postgresql-libs-8.0.3-1.1AX
rpm -ev freeradius-postgresql-1.0.1-3.RHEL4.1AX
……
注:删除命令格式:
rpm -e ( or --erase) options pkg1 ... pkgN
参数
pkg1 ... pkgN :要删除的软件包
详细选项
--nodeps 不检查依赖性
通用选项
-v 显示附加信息
-vv 显示调试信息
rpm -ivh --nodeps postgresql-8.2.3-1PGDG.i386.rpm
rpm -ivh --nodeps postgresql-contrib-8.2.3-1PGDG.i386.rpm
rpm -ivh --nodeps postgresql-debuginfo-8.2.3-1PGDG.i386.rpm
……
注:安装命令格式
rpm -i ( or --install) options file1.rpm ... fileN.rpm
参数:
file1.rpm ... fileN.rpm 将要安装的RPM包的文件名
详细选项
--nodeps 不检查依赖性关系
-v 显示附加信息
#su postgres
bash-3.00$ PGDATA=/var/lib/pgsql/data
bash-3.00$ export PGDATA
bash-3.00$ initdb --encoding=utf-8
bash-3.00$ postmaster -i -D ~/data &
bash-3.00$ createdb mydb
bash-3.00$ psql mydb
§\q:命令退出控制台
§\password:为XXX用户设置一个密码。
§\h:查看SQL命令的解释,比如\h select。
§\?:查看psql命令列表。
§\l:列出所有数据库。
§\c [database_name]:连接其他数据库。
§\d:列出当前数据库的所有表格。
§\d [table_name]:列出某一张表格的结构。
§\du:列出所有用户。
§\e:打开文本编辑器。
§\conninfo:列出当前数据库和连接的信息。
安装PostgreSQL数据库之后,默认是只接受本地访问连接。如果想在其他主机上访问PostgreSQL数据库服务器,就需要进行相应的配置。只需要修改/var/lib/pgsql/9.2/data/目录下的pg_hba.conf和postgresql.conf。
pg_hba.conf:配置对数据库的访问权限,
postgresql.conf:配置PostgreSQL数据库服务器的相应的参数。
这个文件最后有一个列表,它决定了分派了每一个用户的权限,以及认证方式。格式是“Type Database User Address Method”,要注意的是method最好写md5
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
host all all 127.0.0.1/32 ident
host all all 0.0.0.0/0 md5
# IPv6 local connections:
host all all ::1/128 ident
2.修改postgresql.conf文件,将数据库服务器的监听模式修改为监听所有主机发出的连接请求。
将listen_addresses前的#去掉,并将listen_addresses ='localhost'改成listen_addresses = '*'
查看:[xxx@xxx ~]# ps -ef|grep post
#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------
# - Connection Settings -
listen_addresses = '*' # what IP address(es) to listen on;
# comma-separated list of addresses;
# defaults to 'localhost'; use '*' for all
# (change requires restart)
#port = 5432 # (change requires restart)
3、重启服务以使设置生效
# service postgresql-9.2 restart
五、数据库操作
基本的数据库操作,就是使用一般的SQL语言。
# 创建新表
CREATE TABLEuser_tbl(name VARCHAR(20), signup_date DATE);
# 插入数据
INSERT INTOuser_tbl(name, signup_date) VALUES('张三', '2013-12-22');
# 选择记录
SELECT * FROM user_tbl;
# 更新数据
UPDATE user_tbl setname = '李四' WHERE name = '张三';
# 删除记录
DELETE FROM user_tblWHERE name = '李四' ;
# 添加栏位
ALTER TABLE user_tblADD email VARCHAR(40);
# 更新结构
ALTER TABLE user_tblALTER COLUMN signup_date SET NOT NULL;
# 更名栏位
ALTER TABLE user_tblRENAME COLUMN signup_date TO signup;
# 删除栏位
ALTER TABLE user_tblDROP COLUMN email;
# 表格更名
ALTER TABLE user_tblRENAME TO backup_tbl;
# 删除表格
DROP TABLE IF EXISTSbackup_tbl;
六、登录数据库(转自http://www.ruanyifeng.com/blog/2013/12/getting_started_with_postgresql.html)
添加新用户和新数据库以后,就要以新用户的名义登录数据库,这时使用的是psql命令。
psql -U dbuser -d exampledb -h 127.0.0.1 -p5432
上面命令的参数含义如下:-U指定用户,-d指定数据库,-h指定服务器,-p指定端口。
输入上面命令以后,系统会提示输入dbuser用户的密码。输入正确,就可以登录控制台了。
psql命令存在简写形式。如果当前Linux系统用户,同时也是PostgreSQL用户,则可以省略用户名(-U参数的部分)。举例来说,我的Linux系统用户名为ruanyf,且PostgreSQL数据库存在同名用户,则我以ruanyf身份登录Linux系统后,可以直接使用下面的命令登录数据库,且不需要密码。
psql exampledb
此时,如果PostgreSQL内部还存在与当前系统用户同名的数据库,则连数据库名都可以省略。比如,假定存在一个叫做ruanyf的数据库,则直接键入psql就可以登录该数据库。
psql
另外,如果要恢复外部数据,可以使用下面的命令。
psql exampledb < exampledb.sql
借鉴网站:http://wandejun1012.iteye.com/blog/2015777
http://www.educity.cn/linux/1581284.html
http://www.tuicool.com/articles/qei2Ij
http://www.cnblogs.com/mchina/archive/2012/06/06/2539003.html
http://www.ruanyifeng.com/blog/2013/12/getting_started_with_postgresql.html