Linux下安装postgresql,创建用户远程访问及一些简单操作

来源:互联网 发布:java 数据结构面试题 编辑:程序博客网 时间:2024/06/07 11:09

今天下午花了好长时间才使得postgresql正常运行到了Linux环境下,感谢网络分享者,现在整理下以备再次使用:

一、postgresql yum安装

1.安装postgresql9.0 yum 仓库:rpm -i http://yum.postgresql.org/9.2/redhat/rhel-6-x86_64/pgdg-redhat92-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 startrestart或者stop来控制它了。

 

5.把postgresql加入自启动列表

cd /etc/init.d

chkconfig --add postgresql-9.2

 

6.查看一下自启动列表:chkconfig --list。

 

7.PostgreSQL 数据库默认会创建一个postgres的数据库用户作为数据库的管理员,默认密码为空,我们需要修改为指定的密码,这里设定为’postgres’

 

 在控制台输入以下命令:

# su - postgres

$ psql

# ALTERUSERpostgresWITH PASSWORD'postgres';

# select*from pg_shadow ;

# create database 数据库名;

# \c数据库名

david=# 写SQL语句

 

8、安装成功。

 

二、查看并删除postgresql

1、先把原来的postgresql安装包找出来

[root@ postgresql]# rpm -qa|grep postpostgresql-docs-8.0.3-1.1AXpostgresql-libs-8.0.3-1.1AXfreeradius-postgresql-1.0.1-3.RHEL4.1AX......


注:查询命令格式:  
rpm -q ( or --query) options  
参数:  
pkg1 ... pkgN
:查询已安装的软件包  
详细选项
-a                 
查询所有安装的软件包  
grep post则是查找所有列表中包含"post"字符串的项

2、删除旧版本

rpm -ev postgresql-docs-8.0.3-1.1AXrpm -ev --nodeps postgresql-libs-8.0.3-1.1AXrpm -ev freeradius-postgresql-1.0.1-3.RHEL4.1AX……

注:删除命令格式: 
rpm -e ( or --erase) options pkg1 ... pkgN  
参数  
pkg1 ... pkgN
:要删除的软件包  
详细选项  
--nodeps   
不检查依赖性  
通用选项  
-v 
显示附加信息  
-vv          
显示调试信息

3. 列出新的postgresql列表,逐个安装

rpm -ivh --nodeps postgresql-8.2.3-1PGDG.i386.rpmrpm -ivh --nodeps postgresql-contrib-8.2.3-1PGDG.i386.rpmrpm -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 
显示附加信息

4. 初始化数据库

 #su postgres bash-3.00$ PGDATA=/var/lib/pgsql/data bash-3.00$ export PGDATA bash-3.00$ initdb --encoding=utf-8

5. 启动与使用

 bash-3.00$ postmaster -i -D ~/data & bash-3.00$ createdb mydb  bash-3.00$ psql mydb

6. OK.

三、Postgresql控制台命令

§\q:命令退出控制台

§\password:为XXX用户设置一个密码。

§\h:查看SQL命令的解释,比如\h select。

§\?:查看psql命令列表。

§\l:列出所有数据库。

§\c [database_name]:连接其他数据库。

§\d:列出当前数据库的所有表格。

§\d [table_name]:列出某一张表格的结构。

§\du:列出所有用户。

§\e:打开文本编辑器。

§\conninfo:列出当前数据库和连接的信息。

四、PostgresSQL 数据库配置实现远程访问

      安装PostgreSQL数据库之后,默认是只接受本地访问连接。如果想在其他主机上访问PostgreSQL数据库服务器,就需要进行相应的配置。只需要修改/var/lib/pgsql/9.2/data/目录下的pg_hba.confpostgresql.conf

pg_hba.conf配置对数据库的访问权限,

postgresql.conf配置PostgreSQL数据库服务器的相应的参数。

1、修改pg_hba.conf

这个文件最后有一个列表,它决定了分派了每一个用户的权限,以及认证方式。格式是“Type Database User Address Method”,要注意的是method最好写md5

# TYPE  DATABASE        USER            ADDRESS                 METHOD# "local" is for Unix domain socket connections onlylocal   all             all                                     peer# IPv4 local connections:host    all             all             127.0.0.1/32            identhost    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

1 0
原创粉丝点击