Friday, February 13, 2009

postgres学习之(2): database管理之用户与DB

为方便日后数据迁移. 一定要学会postgres的管理, 不然, 处于被动环境.

信息来源: <> 和 伟大的man手册
postgres的管理都可以通过交互前端psql命令去完成.

但是为了方便, 还有几个细化的命令(这此命令实际上就是SQL的wrapper!):
1. createdb
注: 一旦创建了一个数据库, 创建者就是该数据库的拥有者和管理员. 一般情况下为用户pgsql, linux下应该为postgres, 因为pgsql一般是数据库管理员使用的帐号, 当然, 不使用pgsql用户权限也可以正常使用createdb, 这取决于postgres的认证方式. 否则会出现下面的信息:

[jessinio@study ~]$ psql
psql: FATAL: database "jessinio" does not exist

[jessinio@study ~]$ createdb jessinio
createdb: could not connect to database postgres: FATAL: role "jessinio" does not exist

上面的主要信息是: jessinio无法使用createdb, 这是因为在postgres服务中, 没有jessinio这个role(角色)!

role表示了:要连接和使用数据库, 第一条件是要在postgres系统中存在相应的role才能登陆!
* 注意: 有了相应的role, 并不等于有了root权限(superuser)!
* 权限总的来说有两种: 对DBMSs的权限, 还有一种是对DB的权限

role如何去创建与修改, 新创建的role对DBMSs有哪些权限?

答案是:createuser

下面是一些选项和它们的默认值:
--superuser
--no-superuser: Ture
--createdb
--no-createdb: Ture
--createrole
--no-createrole: Ture
--login: Ture
--no-login
--inherit
--no-inherit: Ture
--connection-limit: no limit
--encrypted
--unencrypted: Ture
* Ture表示默认值.

下面是实际情况:

[pgsql@study /usr/home/jessinio]$ createuser jessinio
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) y
Shall the new role be allowed to create more new roles? (y/n) n
CREATE ROLE

好了, 现在有jessinio用户有了对DBMSs操作的role了, createdb吧:
[jessinio@study ~]$ createdb jessinio
CREATE DATABASE

一切顺利!!!!!

去哪里使用万能的SQL呢? 答案是: psql

[jessinio@study ~]$ psql
Welcome to psql 8.2.9, the PostgreSQL interactive terminal.

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

jessinio=>

进入了.

留意一下, 就可以知道, jessinio用户登陆是不用输入密码的. 为什么呢?

这与postgres的认证系统有关. postgres的认证方式写在下一篇blog中.

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.