CentOS6.x下安装PostgreSQL9.3笔记
1. 安装
1.1 首先确认我们的操作系统版本:
cat /etc/redhat-release
1.2 然后安装与系统版本匹配的PG源:
yum install http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-redhat93-9.3-1.noarch.rpm
当然我们也可以根据需要在 http://yum.postgresql.org/repopackages.php下寻找与系统匹配的源。
1.3 成功安装PG源以后,我们就可以通过yum直接安装PG相关的服务了
yum install postgresql93-server
yum install postgresql93-contrib #PG的一些扩展支持
/usr/pgsql-9.3/bin/postgresql93-setup initdb #初始化数据库
service postgresql-9.3 start
chkconfig postgresql-9.3 on #开机自动运行
2. 配置
用Yum方式安装的PG,默认路径为:/var/lib/pgsql/9.3/ 下, 一般会设计到如下几个配置文件的修改
2.1 数据库路径
缺省安装的数据库路径为”/var/lib/pgsql/9.3/data”,默认路径是包含了版本号的,这样是为了防止不同版本间数据兼容的问题,避免数据库升级的同时而忘记了数据必要的迁移工作。
一般来说为了管理的方便,我更愿意重新指定一个新的数据库存储路径。
如果需要变更数据库的路径话,可以修改”/var/lib/pgsql/9.3/data/postgresql.conf“中的“data_directory”。
2.2 如何让PG监听全网链接
配置文件: /var/lib/pgsql/9.3/data/postgresql.conf
listen_address = ‘localhost’ 修改为 listen_address = ‘*’
2.3 用户访问权限配置
配置文件: /var/lib/pgsql/9.3/data/pg_hba.conf
打开配置文件,我们可以配置项主要有5项构成:TYPE, DATABASE,USER,ADDRESS,METHOD,从文件的说明和配置样例上不难理解。
TYPE,一般主要常用的两项:
“local” 为本地链接请求(unix套接字方式),”host” TCP/IP链接方式。
另外简要说明一下PG目前支持的几种常用的验证方法(METHOD):
- peer 验证完全依赖当前操作系统,用户名即为当前操作系统的用户名,只适用于本地用户验证。
- ident 和peer类似,信任操作系统的验证,且支持TCP/IP链接,如果是本机用户的本地链接,会自动切换到peer模式
- trust 无条件的允许链接,任何人使用任何用户都可登录任意数据库。一般这种方式常用于对 127.0.0.1 本地的链接,适用于服务器上只有单一用户,或者是可信用户(例如一个开发团队)。
- reject 无条件拒绝链接,一般用于过滤掉指定网段的访问。
- md5 要求用户提供MD5加密的口令进行认证。
- password 要求用户提供一个明文密码进行认证。
按默认的配置文件,在本机上我们一般需要切换到postgres用户(su postgres),才能链接数据库。
su postgres psql
为了本机调试方便,我们可以添加(或修改)配置为 trust 方式:
# TYPE DATABASE USER ADDRESS METHOD # "local" is for Unix domain socket connections only local all all trust
然后就可以通过 psql -U 的方式登录了,例如 psql -Upostgres
修改配置后别忘了重启服务才能生效:service postgresql-9.3 restart
2.4 创建一个用户
虽然trust认证方式很方便,但为了应用访问的方便以及安全考虑,一般我们会为不用的应用创建不同访问权限的用户
CREATE USER dbuser WITH PASSWORD 'password';
CREATE DATABASE exampledb OWNER dbuser; #创建一个数据库并指定用户所有权
GRANT ALL PRIVILEGES ON DATABASE exampledb to dbuser; #将某数据所有操作权限赋予某个用户
同时也需要修改pg_hba.conf
# TYPE DATABASE USER ADDRESS METHOD # "local" is for Unix domain socket connections only local all dbuser password local all all trust
3. 常用命令
3.1 控制台命令
?:帮助,列出所有命令
\q: 退出终端
\h:查看SQL命令的解释,比如\h select
\l:列出所有数据库
\d:列出当前数据库的所有表
\c [database_name]:连接其他数据库
\d [table_name]:查看一张表的结构
\du:列出所有用户
\conninfo:列出当前数据库的连接信息。
3.2 常用SQL命令
创建数据库:CREATE DATABASE db_name;
删除数据库:DROP DATABASE db_name;