Ubuntu下Postgresql-8.4安装及配置

http://www.oschina.net/question/12_9443


第一步:在Ubuntu下安装Postgresql

sudo apt-get install postgresql-8.4 postgresql-client-8.4 postgresql-contrib-8.4
以上指令安装服务端和命令行客户端psql。

/usr/lib/postgresql/8.4/              存放postgresql相关的二进制文件
/usr/lib/postgresql/8.4/bin/        可执行文件
/usr/lib/postgresql/8.4/lib/         共享库文件
/etc/postgres/8.4/main/              存放postgresql配置文文件
/var/lib/postgresql/                    postgres用户的主文件夹

第二步:修改PostgreSQL数据库的默认用户postgres的密码
PostgreSQL 数据默认会创建一个postgres的帐号用户作为数据库的管理员,密码是随机的,所以:
首先,我们需要重置“postgres”用户的密码

命令行如下:
sudo -u postgres psql(或者sudo su postgres -c psql)—>运行psql,psql是一个标准的postgressql客户端
postgres=# ALTER USER postgres WITH PASSWORD ‘postgres’;—>修改postgres的密码为postgres,不要忘记添加分号(回车后分号之前的sql语句才会立即执行)
postgres=# \q—>退出

修改了数据库中的密码之后,我们还需要修改linux下的用户 “postgres”的密码:设定成与数据库中postgres帐号相同的密码,即postgres。
sudo passwd -d postgres———>删除密码
sudo -u postgres passwd(或者 sudo su postgres -c passwd)—–>创建密码
然后输入跟之前一样的密码。

现在,我们就可以在数据库服务器上用 postgres帐号通过psql或者pgAdmin等等客户端操作数据库了(暂时还不能远程访问)。

第三步:修改PostgresSQL数据库配置实现远程访问
首先,我们需要编辑postgresql.conf
sudo gedit /etc/postgresql/8.4/main/postgresql.conf
现在,我们需要修改“连接和权 限”两行。
改变行:#listen_addresses = ‘localhost’ 修改为:listen_addresses = ‘*’
改变行:#password_encryption = on 修改为:password_encryption = on
保存并关闭gedit。

最后一步,我们必须设置谁才可以操作数据服务器,这一 切都是在pg_hba.conf中完成的。
sudo gedit /etc/postgresql/8.4/main/pg_hba.conf
把以下内容添加到 pg_hba.conf底部:
# to allow your client visiting postgresql server
host all all 0.0.0.0 0.0.0.0 md5

解释一下最后一行:
host表示允许的类型是主机;
第一个all是允许的数据库名字;
第二个all是允许的用户;
第一个0.0.0.0是允许访问的ip address;
第二个0.0.0.0是允许访问的subnet mask;
最后的md5表示密码的加密方式,如果将md5改成trust则可以让指定范围的主机数据库的时候不需要提供密码。
关于ip address和subnet mask,你也可以修改为你的机器IP地址(如10.13.19.53)和子网掩码(如 255.255.255.255),这样就只有你自己的主机可以远程访问数据库了。 如果要使用一个IP地址范围,只需要把子网掩码设置成合适的值,如果子网掩码设置成0.0.0.0,则所有主机均可以访问数据库(IP可以任意设定),如 果将md5改成trust则可以让指定范围的主机访问指定的数据库的时候不需要提供密码。

重启服务器,以上的配置就生效了:sudo /etc/init.d/postgresql-8.4 restart

第四步:创建用户和数据库
使用命令行创建用户和数据库
sudo -u postgres createuser -D -P mynewuser—->-D该用户没有创建数据库的权利,-P提示输入密码,后面的选项都可以省略,命令执行的时候会提示用户选择yes或者no
sudo -u postgres createdb -O mynewuser mydatabase—>-O设定所有者为mynewuser
或者使用psql创建用户和数据库
首先利用psql登录postgresql服务器:sudo -u postgres psql[ -U postgres -h 127.0.0.1]—->运行psql,后面[]中的内容可选,用于登录服务器,默认会登录本机;
然后在psql程序中创建用户和数据库:用户名和数据库名称加上引号后才区分大小写,否则会自动转换成小写:
create user “mynewuser” with password ‘mynewuser nocreatedb;
create database “mydatabase” with owner=mynewuser;

第五步:如何安 装和使用pgAdmin3客户端操作 postgresql数据库

首先安装图形客户端pgAdmin3,安装命令行:sudo apt-get install pgadmin3
然后运行客户端并连接数据库,直接上图:


=============================问題============================

http://farlee.info/archives/install-postgresql-python-psycopg2-on-ubuntu.html

FATAL: Ident authentication failed for user 问题

当新建一个python project 并在settings.py 中输入以下数据库信息之后:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': 'mydb',                      # Or path to database file if using sqlite3.
        'USER': 'dbuser',                      # Not used with sqlite3.
        'PASSWORD': 'mypassw',                  # Not used with sqlite3.
        'HOST': '',                      # Set to empty string for localhost. Not used with sqlite3.
        'PORT': '',                      # Set to empty string for default. Not used with sqlite3.
    }
}

测试PostgreSQL连接:

$ python manage.py shell
>>> from django.db import connection
>>> cursor = connection.cursor()

出现错误:

Traceback (most recent call last):
File “”, line 1, in
File “/usr/local/lib/python2.7/dist-packages/Django-1.3.1-py2.7.egg/django/db/backends/__init__.py”, line 250, in cursor
cursor = self.make_debug_cursor(self._cursor())
File “/usr/local/lib/python2.7/dist-packages/Django-1.3.1-py2.7.egg/django/db/backends/postgresql_psycopg2/base.py”, line 140, in _cursor
self.connection = Database.connect(**conn_params)
OperationalError: FATAL: Ident authentication failed for user “dbuser”

出现这个错误的原因还是在于上面pg_hba.conf 文件的设置,Debian系(包括ubuntu)默认的pg_hba.conf 文件对于localhost本地机器的数据库访问方式是ident,它指的是只有Linux shell用户通过同名的postgreSQL 用户才能访问,也就是pg超级用户postgres 只能由linux 用户postgres 登录后操作。要解决类似OperationalError: FATAL: Ident authentication failed for user “postgres”的问题,有两种解决方法:

1. 在执行$ python manage.py shell之前先$su postgres 切换为postgres 用户

2. 修改pg_hba.conf 的客户端访问设置,将laocal 的访问由ident 改为trust,如:

# TYPE DATABASE USER CIDR-ADDRESS METHOD
local all all trust

修改完pg_hba.conf设置记得重启pg。安装了pg_ctl 也可以用pg_ctl reload



========================我遇到的问题============================

我的fedora17 安装 postgresql出现问题。

# systemctl status postgresql.service                                                                                                           
postgresql.service - PostgreSQL database server
          Loaded: loaded (/usr/lib/systemd/system/postgresql.service; disabled)
          Active: failed (Result: exit-code) since Fri, 20 Jul 2012 11:17:35 -0430; 8s ago
         Process: 6360 ExecStartPre=/usr/bin/postgresql-check-db-dir ${PGDATA} (code=exited, status=1/FAILURE)
          CGroup: name=systemd:/system/postgresql.service

解决办法:

#service postgresql initdb

OK!

参考: http://gomix.fedora-ve.org/projects/fedobetatest/wiki/PosgresSQL_F17

另外: postgreSQL 9.1 的配置见这里: http://www.doc88.com/p-581425207328.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值