Ubuntu12.04 安装 PostgreSQL 和 PgAdmin3
1.安装
安装:sudo apt-get install postgresql postgresql-client postgresql-server-dev-all
或者指定版本号:
sudo apt-get install -y postgresql-9.1 postgresql-client-9.1 postgresql-contrib-9.1 \
postgresql-server-dev-9.1
启动:sudo /etc/init.d/postgresql start
停止:sudo /etc/init.d/postgresql stop
重启:sudo /etc/init.d/postgresql restart
察看状态:sudo /etc/init.d/postgresql status
另外,也可以使用命令:sudo service postgresql [start/stop/restart/status]
以上命令将把PostgreSQL安装到以下目录:
/usr/lib/postgresql/9.1/ 存放postgresql相关的二进制文件
/usr/lib/postgresql/9.1/bin/ 可执行文件
/usr/lib/postgresql/9.1/lib/ 共享库文件
/etc/postgres/9.1/main/ 存放postgresql配置文文件
/var/lib/postgresql/ postgres用户的主文件夹
2.配置管理员“postgres”,使用psql
PostgreSQL数据默认会创建一个linux用户postgres,需要修改操作系统“postgres”用户的密码为“postgres”:
删除密码:
sudo passwd -d postgres //passwd -d 是清空指定用户密码的意思设置密码:
sudo -u postgres passwd //或者 sudo su postgres -c passwd
用sudo权限以用户postgres身份登陆PostgreSQL:
sudo -u postgres psql [ -U postgres -h 127.0.0.1]
// 运行psql,后面[]中的内容可选,用于登录服务器,默认会登录本机;
或者:
sudo su postgres -c psql template1(PostgreSQL的默认数据库是template1)
运行 PostgreSQL 交互的终端程序, 叫 psql,它允许你交互地输入,编辑,和执行 SQL 命令。
启动 psql:psql mydb(以用户postgres登陆psql:sudo su postgres -c psql)
在 psql 里输入help命令,你会看到下面的提示信息:
You are using psql, the command-line interface to PostgreSQL.
Type: \copyright for distribution terms
\h for help with SQL commands
\? for help with psql commands
\g or terminate with semicolon to execute query
\q to quit
修改PostgreSQL的管理员用户postgres的密码为“postgres”(同操作系统用户postgres的密码一样):
postgres=# ALTER USER postgres WITH PASSWORD 'postgres';
查询当前使用的postgresql版本:SELECT version();
查询大概年前日期: SELECT current_date;
现在,我们就可以在数据库服务器上用 postgres帐号通过psql或者pgAdmin等等客户端操作数据库了 (暂时还不能远程访问)。
3.管理PostgreSQL用户
1 创建新用户pgsql,但不给建数据库的权限,有两中创建方式:
一种是在外部命令行直接创建:
命令:createuser [-a] [-A] [-d] [-D] [-e] [-P] [-h 主机名] [-p port] 用户名
参数说明:
[-a]:允许创建其他用户,相当于创建一个超级用户;
[-A]:不允许此用户创建其他用户;
[-d]:允许此用户创建数据库;
[-D]:不允许此用户创建数据库;
[-e]:将执行过程显示到Shell上;
[-P]:创建用户时,同时设置密码;
[-h 主机名]:为某个主机上的Postgres创建用户;
[-p port]:与-h参数一同使用,指定主机的端口。
例如:
ivan@ubuntu:~$ sudo -u postgres createuser -D -P pgsql
执行以后会看到如下提示:
Enter password for new role:
Enter it again:
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create more new roles? (y/n) n
另一种方式是登陆psql,通过SQL语句创建:
首先登陆:
ivan@ubuntu:~$ psql -U postgres -h 127.0.0.1
然后创建:
postgres=# create user “pgsql” with password ‘123456’ nocreatedb;
//用户名和数据库名称加上引号后才区分大小写,否则会自动转换成小写
2 删除用户:
外部:sudo -u postgres dropuser pgsql
内部:“
4.创建和删除数据库
同样有外部命令行和psql的SQL语句这两种创建方式。
创建数据库 mydb, 其拥有者是pgsql用户:
1 通过命令行创建(shell命令):
创建数据库:sudo -u postgres createdb mydb -O pgsql // -O 设定所有者pgsql;
删除数据库:sudo -u postgres dropdb mydb
2 通过psql来创建(sql命令):
首先利用psql登录PostgreSQL服务器:
sudo -u postgres psql [ -U postgres -h 127.0.0.1]
//运行psql,后面[]中的内容可选,用于登录服务器,默认会登录本机;`
然后在psql程序中创建数据库(需要先创建好pgsql用户):
create database “mydatabase” with owner=pgsql;
5.数据库导入导出
导出:取得服务器 192.168.1.1 上 PostgreSQL中pgsql用户的mydb数据库,导出到当前目录下的 mydb.dump 文件:
pg_dump -h 192.168.1.1 -U pgsql -Fc mydb > mydb.dump
导入:将导出的文件 mydb.dump 导入到本地PostgreSQL数据库中pgsql用户下(需要提前创建pgsql用户),要求导入后的数据库名称为“mydb”
pg_restore ./mydb.dump | psql -Upgsql -d mydb
6.修改PostgresSQL数据库配置实现远程访问
ivan@ubuntu:~$ sudo vim /etc/postgresql/9.1/main/postgresql.conf
1.监听任何地址访问,修改连接权限
#listen_addresses = ‘localhost’ 改为 listen_addresses = ‘*’
2.启用密码验证
#password_encryption = on 改为 password_encryption = on
3.可访问的用户ip段
ivan@ubuntu:~$ sudo vim /etc/postgresql/9.1/main/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则可以让指定范围的主机访问指定的数据库的时候不需要提供密码。
4.重启PostgreSQL数据库
ivan@ubuntu:~$ sudo /etc/init.d/postgresql restart
7.安装postgresql数据库pgAdmin3客户端管理程序
ivan@ubuntu:~$ sudo apt-get install -y pgadmin3
遇到问题:
1 安装过程中总是下载不了要安装的文件,更新源添加163源都无法解决,最后通过vpn翻墙以后可以正常安装。
2 安装以后pgAdmin3固定到启动器后不显示图标,解决方法,修改/usr/share/applications目录下的 pgAdmin III.desktop文件,将其中的 Icon值改为“/usr/share/pixmaps/pgadmin3.svg”,搞定。