搜尋
首頁資料庫mysql教程循序渐进PostgreSQL(三): 网络访问配置、用户及角色管理、表空间

前边若干文章,只是简单的介绍了一下PG的手动安装和启动。 如: http://blog.csdn.net/iihero/article/details/8254115 (安装FAQ) 循序渐进PostgreSQL: 实现PostgreSQL自启动 循序渐进PostgreSQL: 学习pqxx C++ API访问 使用C编写的动态链接库为PostgreSQL数

前边若干文章,只是简单的介绍了一下PG的手动安装和启动。

如:
http://blog.csdn.net/iihero/article/details/8254115 (安装FAQ)

循序渐进PostgreSQL: 实现PostgreSQL自启动
循序渐进PostgreSQL: 学习pqxx C++ API访问

使用C编写的动态链接库为PostgreSQL数据库添加自定义函数

要正常使用PG,也必须要了解它的基本网络配置、用户权限以及数据库是如何创建,掌握了这些,其它的用法与别的数据库基本上也就大同小异了。

1. 网络配置

默认情况下, PG的配置文件:
postgresql.conf里有一行:listen_addresses = 'localhost';
在pg_hba.conf里有另外几行:
# IPv4 local connections:
host all all 127.0.0.1/32 trust# IPv6 local connections:
host all all ::1/128 trust
意思是只监听本机,对本机的所有用户都是trust,无需密码即可访问。 IP地址限制为127.0.0.1, /32的意思是32个bit都是有效地址。
我要限制只有网段10.128.98.*上的主机才能访问,首先,要修改postgresql.conf,
listen_addresses = '*';
再在pg_hba.conf里加一行:
host all all 10.128.98.0/24 md5

(注,如果你只想某台机器访问,e.g. 10.128.98.4, 使用10.128.98.4/32 即可,表示32位全部是有效地址)

对所有网段全开放:
#IPV4
host all all 0.0.0.0/0 md5
#IPV6
host all all ::/0 md5
IPV6什么时候会用到,当你用psql -h 而不是IP地址的时候,可能会碰到。
具体的描述定义,可以参照:http://www.postgresql.org/docs/8.2/static/datatype-net-types.html

在此以后,就可以从别的主机上访问本机的数据库了。

2. 用户、组及角色, 以及schema创建与管理
PG里头的角色与用户是有区分开的,有些细微区别。和别的数据库不一样。记住就好。
它的user相当于role加上一个login, 它的group相当于role加一个nologin的限制, 即本质上都是role. 这就能解释为什么你create完一个role之后,又不能登录的奇怪现象了。

iihero=# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------+-----------
spring | Superuser, Create role, Create DB | {}

创建一个新用户spring2, 带有createdb createuser 权限
iihero=# create user spring2 password 'spring1' createdb createuser;
CREATE ROLE
iihero=# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------+-----------
spring | Superuser, Create role, Create DB | {}
spring2 | Superuser, Create DB | {}

问题:
iihero=# create table spring2.t1(id int);
ERROR: schema "spring2" does not exist
为何不能创建spring2下的表呢? 因为PG有schema的概念。user spring2并不等于schema为spring2.
要想正常使用,还得为spring2创建一个同名的schema
iihero=# create schema spring2 authorization spring2;
CREATE SCHEMA
iihero=# create table spring2.t1(id int);
CREATE TABLE
我们切到spring2的session下边,查查看:
iihero=# set session authorization spring2;
SET
iihero=# \d
List of relations
Schema | Name | Type | Owner
---------+------+-------+--------
spring2 | t1 | table | spring
(1 row)
能看到刚才创建的表.

也可以创建不同的schema名称:
iihero=# create schema spring_new authorization spring2;
CREATE SCHEMA
iihero=# create table spring_new.t1(id int);
CREATE TABLE
创建同名的schema的简要做法是将中间的schema名称省去。这样它与user名就完全相同。
iihero=# create schema authorization spring2;
CREATE SCHEMA

因此,在创建完带密码的用户之后,需要一步创建同名的schema,即完成与别的数据库等效的功能。
下边是创建用户、schema、建对应表、删除的完整顺序实验:

iihero=# create user spring3 password 'spring1';
CREATE ROLE
iihero=# create schema authorization spring3;
CREATE SCHEMA
iihero=# create table spring3.t1(id int);
CREATE TABLE
iihero=# insert into spring3.t1 values(1), (2);
INSERT 0 2
iihero=# select * from spring3.t1;
 id
----
  1
  2
(2 rows)


iihero=# drop table spring3.t1;
DROP TABLE
iihero=# drop user spring3;
ERROR:  role "spring3" cannot be dropped because some objects depend on it
DETAIL:  owner of schema spring3
iihero=# drop schema spring3;
DROP SCHEMA
iihero=# drop user spring3;
DROP ROLE



3. 表空间、数据库创建
PG里支持表空间的概念,并且一个表空间可以放置多个数据库(虽然,实际上很少这么做),一个数据库实际上也可以置于多个表空间,比如将其中的某些表指定到不同的表空间里。

通常情况下,用户会选择不同的数据库,创建不同的表空间,或者创建一个不同位置的表空间,以提高相应性能。

下边是简单的示例, 使用psql控制台或者纯命令行都是可以的:
create tablespace demospace location 'd:/pgsql92latest/demo';iihero=# create database demo encoding 'latin1' template template0 OWNER spring tablespace demospace;
CREATE DATABASEiihero=# drop database demo;
DROP DATABASE或者:D:\pgsql92latest>createdb --tablespace=demospace -e --encoding=latin1 --owner=spring --template=template0 demo
CREATE DATABASE "demo" OWNER spring TABLESPACE demospace ENCODING 'latin1' TEMPLATE template0;或者D:\pgsql92latest>createdb -Ddemospace -e -Elatin1 -Ospring -Ttemplate0 demo
CREATE DATABASE demo OWNER spring TABLESPACE demospace ENCODING 'latin1' TEMPLATE template0;

总结:
使用PG时,能做到基本手动安装,配置网络访问限制,创建数据库用户及对应的schema,并能依次清除。
这样,才能进入下一步的基本管理与开发,对于开发人员来说,有了与schema相应的概念,后边的东西应该都是类似的。


陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
在因特网上的每一台主机都有唯一的地址标识称为什么在因特网上的每一台主机都有唯一的地址标识称为什么Aug 22, 2022 pm 03:24 PM

每一台主机都有唯一的地址标识称为“IP地址”。IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个唯一的逻辑地址,以此来屏蔽物理地址的差异。由于有这种唯一的地址,才保证了用户在连网的计算机上操作时,能够高效而且方便地从千千万万台计算机中选出自己所需的对象来。

MySQL和PostgreSQL:在Web开发中的最佳实践MySQL和PostgreSQL:在Web开发中的最佳实践Jul 14, 2023 pm 02:34 PM

MySQL和PostgreSQL:在Web开发中的最佳实践引言:在现代的Web开发领域中,数据库是必不可少的组成部分。在选择数据库时,常见的选择是MySQL和PostgreSQL。本文将介绍在Web开发中使用MySQL和PostgreSQL的最佳实践,并提供一些代码示例。一、适用场景MySQL适用于大多数Web应用程序,特别是那些需要高性能、可扩展性和易于使

MySQL和PostgreSQL:性能对比与优化技巧MySQL和PostgreSQL:性能对比与优化技巧Jul 13, 2023 pm 03:33 PM

MySQL和PostgreSQL:性能对比与优化技巧在开发web应用程序时,数据库是不可或缺的组成部分。而在选择数据库管理系统时,MySQL和PostgreSQL是两个常见的选择。他们都是开源的关系型数据库管理系统(RDBMS),但在性能和优化方面有一些不同之处。本文将比较MySQL和PostgreSQL的性能,并提供一些优化技巧。性能对比在比较两个数据库管

如何在PHP编程中使用PostgreSQL数据库?如何在PHP编程中使用PostgreSQL数据库?Jun 12, 2023 am 09:27 AM

随着数据库技术的发展,数据库管理系统也呈现出多种多样的选择,开发人员可以根据自己的需求和喜好选择最适合自己的数据库。而PostgreSQL作为一种先进的开源关系型数据库系统,越来越受到开发人员的关注和使用。那么,在PHP编程中如何使用PostgreSQL数据库呢?一、安装和配置PostgreSQL数据库在使用PostgreSQL之前,需要先安装和配置它。首先

MySQL和PostgreSQL:数据安全与备份策略MySQL和PostgreSQL:数据安全与备份策略Jul 13, 2023 pm 03:31 PM

MySQL和PostgreSQL:数据安全与备份策略引言:在现代社会中,数据成为了企业和个人生活中不可或缺的一部分。对于数据库管理系统来说,数据安全与备份策略是至关重要的,既能保护数据免受丢失或损坏,也能确保恢复数据的可靠性和完整性。本文将重点讨论MySQL和PostgreSQL两种主流关系型数据库系统的数据安全性和备份策略。一、数据安全性方面:(一)用户权

在Go语言中使用PostgreSQL:完整指南在Go语言中使用PostgreSQL:完整指南Jun 18, 2023 am 09:28 AM

Go语言是一种快速、高效的编程语言,适合构建Web服务和后端应用程序。而PostgreSQL是一个开源的关系型数据库管理系统,承诺提供更高的可靠性、可扩展性和数据安全性。在本文中,我们将深入探讨如何在Go语言中使用PostgreSQL,并提供一些实用的代码示例和技巧。安装和设置PostgreSQL首先,我们需要安装和设置PostgreSQL。可以在官方网

学习Go语言中的数据库函数并实现PostgreSQL数据的增删改查操作学习Go语言中的数据库函数并实现PostgreSQL数据的增删改查操作Jul 31, 2023 pm 12:54 PM

学习Go语言中的数据库函数并实现PostgreSQL数据的增删改查操作在现代的软件开发中,数据库是不可或缺的一部分。Go语言作为一门强大的编程语言,提供了丰富的数据库操作函数和工具包,可以轻松地实现数据库的增删改查操作。本文将介绍如何学习Go语言中的数据库函数,并使用PostgreSQL数据库进行实际的操作。第一步:安装数据库驱动程序在Go语言中,每个数据库

PHP实现开源PostgreSQL关系型数据库PHP实现开源PostgreSQL关系型数据库Jun 18, 2023 am 08:40 AM

随着互联网的发展,数据量持续增长,数据管理的需求变得日益迫切。关系型数据库是数据管理的一种重要方式,而其中的PostgreSQL因其灵活性、可扩展性及安全性而备受欢迎。本文介绍了如何利用PHP语言实现一个开源的PostgreSQL关系型数据库,希望对有相应需求的开发者有所帮助。概述PostgreSQL是一种强大的关系型数据库系统,它是遵循SQL标准的且具有许

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前By尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具