Debian 平台下 Postgresql 数据库基本操作说明

1  安装postgresql

--使用apt 直接安装:

[email protected]:~/cndba$ sudo apt-get installpostgresql postgresql-client postgresql-server-dev-all -y

--查看数据库状态:

[email protected]:~$ /etc/init.d/postgresql status

Running clusters: 9.1/main

--停止:

[email protected]:~$ /etc/init.d/postgresql stop

[ ok ] Stopping PostgreSQL 9.1 databaseserver: main.

--启动:

[email protected]:~$ /etc/init.d/postgresql start

[ ok ] Starting PostgreSQL 9.1 databaseserver: main.

[email protected]:~$

--查看进程:

[email protected]:~$ ps -ef|grep postgres

root     9502  9184  0 06:34 pts/2    00:00:00 su - postgres

postgres 9510  9502  0 06:34 pts/2    00:00:00 -su

postgres 9869     1  0 06:52 ?        00:00:00/usr/lib/postgresql/9.1/bin/postgres -D /var/lib/postgresql/9.1/main -cconfig_file=/etc/postgresql/9.1/main/postgresql.conf

postgres 9871  9869  0 06:52 ?        00:00:00 postgres: writer process

postgres 9872  9869  0 06:52 ?        00:00:00 postgres: wal writer process

postgres 9873  9869  0 06:52 ?        00:00:00 postgres: autovacuum launcherprocess

postgres 9874  9869  0 06:52 ?        00:00:00 postgres: stats collectorprocess

postgres 9905  9510  0 06:53 pts/2    00:00:00 ps -ef

postgres 9906  9510  0 06:53 pts/2    00:00:00 grep postgres

[email protected]:~$

--设置开机自启动:

[email protected]:~$ sudo update-rc.d postgresql start 88 2 3 4 5 . stop 88 0 1 6 .

update-rc.d: using dependency based bootsequencing

[email protected]:~$

第一次安装后,默认生成一个名为postgres的数据库和一个名为postgres的数据库用户。同时还生成了一个名为postgres的Linux系统用户。

--修改postgres 用户密码:

[email protected]:~$ sudo passwd postgres

Enter new UNIX password:

Retype new UNIX password:

passwd: password updated successfully

[email protected]:~$

2  查看数据库信息

--查看数据库信息:

[email protected]:~$ su - postgres

Password:

[email protected]:~$ psql

psql (9.1.15)

Type "help" for help.

postgres=# help

You are using psql, the command-lineinterface 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

postgres=#

postgres-# \l

List of databases

Name    | Owner   | Encoding |   Collate  |    Ctype    |  Access privileges

-----------+----------+----------+-------------+-------------+-----------------------

postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |

template0 | postgres | UTF8     |en_US.UTF-8 | en_US.UTF-8 | =c/postgres         +

|          |          |             |             | postgres=CTc/postgres

template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |=c/postgres          +

|          |          |            |             |postgres=CTc/postgres

(3 rows)

postgres-#

--连接到某个数据库:

postgres-# \c postgres

You are now connected to database"postgres" as user "postgres".

postgres-# \c template1

You are now connected to database"template1" as user "postgres".

template1-#

postgres=# \c postgres

You are now connected to database"postgres" as user "postgres".

--显示当前的数据库:

postgres=# select current_database();

current_database

------------------

postgres

(1 row)

--该命令显示当前的userid:

postgres=# select current_user; 

current_user

--------------

postgres

(1 row)

--退出操作界面:

template1-# \q

[email protected]:~$

3  创建DB对象

默认的postgres用户是超级管理员,权限太大,所以一般建议创建一个独立的管理用户。

[email protected]:~$ su - postgres

Password:

[email protected]:~$ psql

psql (9.1.15)

Type "help" for help.

--创建数据库用户、数据库,并赋予新用户新数据库的全部权限:

postgres=# create user dave with password‘dave‘;

CREATE ROLE

postgres=# create database cndba;

CREATE DATABASE

postgres=# grant all privileges on databasecndba to dave;

GRANT

postgres=#

postgres=# \l

List of databases

Name    | Owner   | Encoding |   Collate  |    Ctype    |  Access privileges

-----------+----------+----------+-------------+-------------+-----------------------

cndba     | postgres | UTF8     |en_US.UTF-8 | en_US.UTF-8 | =Tc/postgres        +

|          |          |             |             | postgres=CTc/postgres+

|          |          |             |             | dave=CTc/postgres

postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |

template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |=c/postgres          +

|          |          |             |             | postgres=CTc/postgres

template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |=c/postgres          +

|          |          |             |             | postgres=CTc/postgres

(4 rows)

--重置postgres账户密码:

postgres=# alter user postgres withpassword ‘dave‘;

ALTER ROLE

--修改用户认证配置文件pg_hba.conf:

[email protected]:/etc/postgresql/9.1/main$ pwd

/etc/postgresql/9.1/main

[email protected]:/etc/postgresql/9.1/main$ ls

environment pg_ctl.conf  pg_hba.conf  pg_ident.conf postgresql.conf  start.conf

# Database administrative login by Unixdomain socket

local  all             postgres                               trust

# TYPE DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domainsocket connections only

local  all             all                                     md5

--重新加载postgresql:

[email protected]:/etc/postgresql/9.1/main$/etc/init.d/postgresql reload

[email protected]:~$ psql -d cndba -U dave

Password for user dave:

psql (9.1.15)

Type "help" for help.

cndba=> selectcurrent_user;

current_user

--------------

dave

(1 row)

--表的基本操作:

postgres-> \c cndba

You are now connected to database"cndba" as user "dave".

cndba->

cndba=> create table cndba(namevarchar(20),signupdate date);

CREATE TABLE

cndba=> insert into cndba(name, signupdate)values(‘dave‘, ‘2015-02-11‘);

INSERT 0 1

cndba=> select * from cndba;

name| signupdate

------+------------

dave| 2015-02-11

(1 row)

cndba=> update cndba set name =‘tianlesoftware‘ where name = ‘dave‘;

UPDATE 1

cndba=> alter table cndba add emailvarchar(40);

ALTER TABLE

cndba=> alter table cndba alter columnsignupdate set not null;

ALTER TABLE

cndba=> alter table cndba rename columnsignupdate to signup;

ALTER TABLE

cndba=> alter table cndba drop columnemail;

ALTER TABLE

cndba=> alter table cndba rename todave;

ALTER TABLE

cndba=> drop table if exists dave;

DROP TABLE

cndba=>

4  postgresql 查看数据库,表,索引,表空间以及大小

postgres=# select pg_database.datname,pg_database_size(pg_database.datname) AS size from pg_database;

datname  |  size

-----------+---------

template1 | 6030136

template0 | 6030136

postgres | 6030136

cndba    | 6038328

(4 rows)

--以KB,MB,GB的方式来查看数据库大小

postgres=# selectpg_size_pretty(pg_database_size(‘cndba‘));

pg_size_pretty

----------------

5897kB

(1 row)

postgres=# create table cndba(namevarchar(20),signupdate date);

CREATE TABLE

--查看多表:

postgres=# \dt

List of relations

Schema | Name | Type  |  Owner

--------+-------+-------+----------

public | cndba | table | postgres

(1 row)

--查看单表:

postgres=# \d cndba

Table "public.cndba"

Column   |         Type          | Modifiers

------------+-----------------------+-----------

name      | character varying(20) |

signupdate | date                  |

--查看表大小

postgres=# select pg_relation_size(‘cndba‘);

pg_relation_size

------------------

8192

(1 row)

--以KB,MB,GB的方式来查看表大小

postgres=# selectpg_size_pretty(pg_relation_size(‘cndba‘));

pg_size_pretty

----------------

8192bytes

(1 row)

--查看索引信息:

postgres=# create index idx_cndba oncndba(name);

CREATE INDEX

postgres=# \di

List of relations

Schema |  Name    | Type  | Owner   | Table

--------+-----------+-------+----------+-------

public | idx_cndba | index | postgres | cndba

(1 row)

--查看索引大小:

postgres=# select pg_size_pretty(pg_relation_size(‘idx_cndba‘));

pg_size_pretty

----------------

16kB

(1 row)

--看表的总大小,包括索引大小

postgres=# selectpg_size_pretty(pg_total_relation_size(‘cndba‘));

pg_size_pretty

----------------

24kB

(1 row)

--查看所有表空间:

postgres=# select spcname frompg_tablespace;

spcname

------------

pg_default

pg_global

(2 rows)

--查看表空间大小:

postgres=# selectpg_size_pretty(pg_tablespace_size(‘pg_default‘));

pg_size_pretty

----------------

23MB

(1 row)

5  PostgreSQL用户认证

PostgreSQL的配置文件在/etc/postgresql目录下:

[email protected]:/etc/postgresql/9.1/main$ pwd

/etc/postgresql/9.1/main

[email protected]:/etc/postgresql/9.1/main$ ls

environment pg_ctl.conf  pg_hba.conf  pg_ident.conf postgresql.conf  start.conf

postgresql.conf 文件里保存的是数据库的相关的配置。

# - Connection Settings -

listen_addresses = ‘*‘          # what IP address(es) to listen on;

#comma-separated list of addresses;

#defaults to ‘localhost‘, ‘*‘ = all

#(change requires restart)

port = 5432                             # (change requiresrestart)

max_connections = 100                   # (change requires restart)

# Note: Increasing max_connections costs ~400 bytes of shared memory per

# connection slot, plus lock space (seemax_locks_per_transaction).

#superuser_reserved_connections = 3     # (change requires restart)

unix_socket_directory =‘/var/run/postgresql‘           # (changerequires restart)

#unix_socket_group = ‘‘                 # (change requires restart)

#unix_socket_permissions = 0777         # begin with 0 to use octal notation

#(change requires restart)

#bonjour = off                          # advertise servervia Bonjour

#(change requires restart)

#bonjour_name = ‘‘                      # defaults to thecomputer name

#(change requires restart)

注意这里的端口信息,要添加的防火墙的策略里。

pg_hba.conf中保存基于主机的认证规则。每条规则会被逐条应用,直到找到一条符合的,就能通过认证;或者访问被reject方法显式拒绝。

[email protected]:/etc/postgresql/9.1/main$ catpg_hba.conf |grep -v ^# |grep -v ^$

local  all             postgres                               trust

local  all             all                                     md5

host   all             all             127.0.0.1/32            md5

host   all             all             ::1/128                 md5

带注释的如下:

# Database administrative login by Unixdomain socket

local  all             postgres                               trust

# TYPE DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domainsocket connections only

local  all             all                                     md5

# IPv4 local connections:

host   all             all             127.0.0.1/32            md5

Type = host表示远程连接。

Database = all 表示所有数据库。

User = all 表示所有用户。

ADDRESS 由两部分组成,即IP地址/子网掩码。子网掩码规定了IP地址中前面哪些位表示网络编号。这里/0表示IP地址中没有表示网络编号的位,这样的话全部的IP地址都匹配,例如192.168.0.0/24表示匹配前24位,所以它匹配任何192.168.0.x形式的IP地址。

Method = trust 实际上表示无需认证。

--允许在本机上的任何身份连接任何数据库

TYPE DATABASE   USER    IP-ADDRESS    IP-MASK     METHOD

local all       all                                 trust(无条件进行连接)

--允许IP地址为192.168.1.x的任何主机与数据库sales连接

TYPE DATABASE   USER    IP-ADDRESS    IP-MASK     METHOD

host sales      all     192.168.1.0    255.255.255.0 identsameuser

6  远程访问数据库

postgresql默认情况下,远程访问不能成功,如果需要允许远程访问,需要修改两个配置文件,说明如下:

(1)postgresql.conf

将该文件中的listen_addresses项值设定为*。

(2)pg_hba.conf

在该配置文件的host allall 127.0.0.1/32 md5行下添加以下配置,或者直接将这一行修改为以下配置

host   all    all    0.0.0.0/0    md5

表示允许所有IP访问。

修改之后,Reload 或者重启数据库让修改生效:

[email protected]:/etc/postgresql/9.1/main$/etc/init.d/postgresql reload

直接使用Navicat 链接:

--------------------------------------------------------------------------------------------

版权所有,文章禁止转载,否则追究法律责任!

AboutDave:

--------------------------------------------------------------------------------------------

QQ:     251097186

Email:    [email protected]

Blog:    http://blog.csdn.net/tianlesoftware

Weibo:    http://weibo.com/tianlesoftware

Twitter:  http://twitter.com/tianlesoftware

Facebook: http://www.facebook.com/tianlesoftware

Linkedin: http://cn.linkedin.com/in/tianlesoftware

Dave 的QQ群:

--------------------------------------------------------------------------------------------

注意:加群必须注明表空间和数据文件关系 | 不要重复加群

CNDBA_1: 62697850 (空)    CNDBA_2: 62697716 (满)  CNDBA_3: 283816689

CNDBA_4: 391125754   CNDBA_5:104207940    CNDBA_6: 62697977   CNDBA_7: 142216823(满)

时间: 2024-10-13 07:04:08

Debian 平台下 Postgresql 数据库基本操作说明的相关文章

windows平台下的oracle ORA-01031的解决方法

今天下午遇到一个很怪异的问题,在windows平台下sqlplus  / as sysdba登陆数据库,提示权限不足, 当时就纳闷了,sys用户登陆数据库还能权限不足,问题出现了,就开始寻找解决方法呗 首先查看$ORACLE_HOME/network/admin/sqlnet.ora中SQLNET.AUTHENTICATION_SERVICES项的配置信息, 网上的大多数帖子一致结论为: 在windows平台上,SQLNET.AUTHENTICATION_SERVICES必须设置为NTS或者AL

【MongoDB】在windows平台下mongodb的分片集群(五)

本篇接着上面的四篇继续讲述在window平台下mongodb的分片集群搭建.在分片集群中也照样可以创建索引,创建索引的方式与在单独数据库中创建索引的方式一样.因此这不再多说.本篇主要聚焦在分片键的选取问题上. 分片键通俗来说就是分割海量数据的标记符. 如果更高效的划分海量数据往往依赖于分片键的选择. 分片键选得不好,应用程序就无法利用分片集群所提供的诸多优势.在这种情况下,查询和插入得系能都回显著下降. 一.低效的分片键 1.1 分布差 BSON对象ID是每个mongodb文档的默认主键.所有的

postgresql数据库安装及简单操作

自从MySQL被Oracle收购以后,PostgreSQL逐渐成为开源关系型数据库的首选. 本文介绍PostgreSQL的安装和基本用法,供初次使用者上手.以下内容基于Debian操作系统,其他操作系统实在没有精力兼顾,但是大部分内容应该普遍适用. 一.安装 首先,安装PostgreSQL客户端. sudo apt-get install postgresql-client 然后,安装PostgreSQL服务器. sudo apt-get install postgresql 正常情况下,安装完

.Net平台下,分布式文件存储的实现

遇到的问题 对于Web程序,使用一台服务器的时候,客户端上传的文件一般也都是存储在这台服务器上.但在集群环境中就行不通了,如果每个服务器都存储自己接受到的文件,就乱套了,数据库中明明有这个附件的记录,却找不到这个文件.于是,文件需要进行统一集中管理,并向集群中的服务器提供统一的路径. 基于NFS的分布式文件存储实现 Network File System 简称NFS,用人话说叫共享文件夹,可以实现分布式存储文件.只需要在文件服务器上共享文件夹,并指定相应账号的权限,并给Web服务器设置可以访问共

ArcGIS平台中PostgreSQL数据连接配置总结

通常用户在使用要素服务时,要求数据必须是存放在空间数据库中的.同时,需要将数据库注册到ArcGIS for Server,这样在发布服务时就不需要进行数据拷贝,从而可以节省磁盘空间及服务发布时间.以下就ArcGIS平台的Desktop和Server产品中如何使用PostgreSQL数据库进行总结,包括Linux版的ArcGIS for Server和PostgreSQL以及Windows版的ArcGIS for Server和PostgreSQL. 1 前提条件 1.1 ArcGIS平台软件支持

window平台下MongoDB安装和环境搭建

首先,介绍下MongoDB的优点: · 高可扩展性 · 分布式存储 · 低成本 · 结构灵活 window平台下MongoDB安装和环境搭建: 1.下载安装包或压缩包   官网下载:https://www.mongodb.com/download-center 下载好之后直接安装,安装过程中选择customr 2.添加db存储和日志存储文件夹 在你喜欢的地方新建一个文件夹用于存放数据库的文件,在这个文件夹下还需要新建三个文件夹(我的是在D盘下),一个data,一个logs,一个etc(配置),名

MAC平台下Xcode配置使用OpenCV的具体方法 (2016最新)

1.序言: 1.1 背景 本人小白一枚,不过因为最近在从事机器视觉方面的工作,所以接触到OpenCV. 因为工作需求,本人要在MAC端使用OpenCV实现一些视觉功能,配置环境成了最大的阻碍,网上查了很多相关资料和博客,都因为版本环境问题屡试屡败,不过经历重重尝试,笔者最终还是配置成功并运行了自己的源码.当然成功的关键还是因为笔者站在了巨人的肩膀上,借鉴了很多网上的教程,为了不误导大家配置的过程,参考文章的地址统一放在文章里,望各位大大看见之后能够理解,废话不说进入正题. 1.2 环境说明 如果

PowerDesigner反向工程PostgreSQL数据库

1. 环境准备: a)         安装PowerDesigner,以PowerDesigner15.1为例 b)         安装java jdk,以jdk-7-windows-i586为例 c)         下载postgressql jdbc驱动jar包,以postgresql-8.1-415.jdbc2.jar为例 2. 远程连接PostgreSQL数据库 a)         打开PowerDesigner b)         新建一个空白物理数据模型 点击PowerDe

PostgreSQL数据库内核分析 笔记(这本书没有怎么很好的看,主要就是一些数据结构、概念和流程的文字介绍)

PostgreSQL数据库内核分析 跳转至: 导航. 搜索 目录 1系统概述 2体系结构 3存储管理 4索引 5查询编译 6查询执行 7事务处理与并发控制 8数据库安全 9附录A 用Eclipse开发和调试 系统概述 初始化数据库:./initdb --no-locale -D ../data ./pg_ctl start -D ../data 数据库命令:initdb createuser dropuser createdb dropdb pg_dump pg_restore pg_ctl v