也可以允许来自不同的数据库用户名来通过cn认证。
以下是SSL证书认证支持的选项:
map
允许系统和数据库用户名之间进行映射。请参阅Section 19.2获取更多信息。
PAM认证
这个认证方法和password的操作方法类似。只不过它是使用PAM(课插拔的认证模块)认证结构。这个默认的PAM服务名是postgresql。PAM只对用户名/密码对有效。所以在PAM认证使用前用户必须在数据库已经存在。关于PAM的更多信息,请阅读Linux-PAM Page and the Solaris PAM Page.
以下是PAM支持的配置选项:
pamservice
PAM服务名。
注意:如果PAM被设置成读取/etc/shadow,认证将会失败,因为PostgreSQL服务是用非root用户启动的。因此,如果采用PAM配置了LDAP或者其他的认证方法,这中模式是不能使用的。
认证问题
认证失败或者其他的相关问题通常显示的错误信息跟以下提示的类似:
FATAL: no pg_hba.conf entry for host "123.123.123.123", user "andym", database "testdb"
这个信息意味着你能够成功的与服务器建立联系,但是不能得到回应。这个信息提示,服务器拒绝连接请求,因为它在整个pg_hba.conf配置文件中没有发现匹配的条件。
FATAL: password authentication failed for user "andym"
信息显示你能连接到这个服务器,服务器也能进行回应,但是在pg_hba.conf中指定的认证方法不能让请求通过。请检查你提供的密码,如果你使用了kerberos或者ident软件,请检查这些认证类型。
FATAL: user "andym" does not exist
这表示数据库用户名没有找到。
FATAL: database "testdb" does not exist
这表示你连接的数据库不存在。注意,如果你没有指定连接的数据库名,它将会用默认的数据库名,这可能是也可能不是正确的。
提示:服务器的日志包含了更多关于认证失败的信息以便报告给客户端。如果你对这些提示信息感到疑惑,请检查服务器的日志。
--------------------------------------------------------------------------------------------
4. 重启postgresql服务
# /etc/init.d/postgresql restart 停止postgresql 服务:[确定] 启动postgresql 服务:[确定]
Ubunt下可使用sudo service postgresql restart
用户管理
创建用户createuser
createuser 是SQL 命令CREATE USER的封装。 命令:createuser [-a] [-A] [-d] [-D] [-e] [-P] [-h 主机名] [-p port] 用户名 参数说明:[-a]:允许创建其他用户,相当于创建一个超级用户;[-A]:不允许此用户创建其他用户;[-d]:允许此用户创建数据库;[-D]:不允许此用户创建数据库;[-e]:将执行过程显示到Shell上;[-P]:创建用户时,同时设置密码;[-h 主机名]:为某个主机上的Postgres创建用户;[-p port]:与-h参数一同使用,指定主机的端口。
1. 直接运行createruser命令
$ sudo su - postgres $ createuser Enter name of role to add: jianlee Shall the new role be a superuser (y/n) n # 如果选择y,那么jianlee就是超级用户Shall the new role be allowed to create databases (y/n) y #如果上面没有选择y,这里才出现Shall the new role be allowed to create more new roles (y/n) y #同上
2. 为指定的主机和端口创建用户(就是远程创建用户)
$ sudo su - postgres postgres@jianlee:/root$ createuser -h 172.16.70.254 -p 5432 -D -A -e turbolinux Shall the new role be allowed to create more new roles (y/n) y 口令: # 输入用户postgres的口令CREATE ROLE turbolinux NOSUPERUSER NOCREATEDB CREATEROLE INHERIT LOGIN;
3. 创建超级用户
$ createuser -P -d -a -e turbo_rd Enter password for new role: 再输入一遍: CREATE ROLE turbo_rd PASSWORD 'md5259766bbac3b83cd9195cc0bea6ecec7' \ SUPERUSER CREATEDB CREATEROLE INHERIT LOGIN;
参数看本节开始的createuser参数说明。
删除用户dropuser
$ dropuser --help dropuser removes a PostgreSQL role. 使用方法: dropuser [OPTION]... [ROLENAME] 选项: -e, --echo 显示发送到服务端的命令-i, --interactive 删除任何东西之前给予提示-h, --host=HOSTNAM 数据库服务器所在机器的主机名或套接字目录-p, --port=PORT 数据库服务器端口号-U, --username=USERNAME 联接用户(不是要删除的用户名) -W, --password force password prompt --help 显示此帮助信息, 然后退出--version 输出版本信息, 然后退出 臭虫报告至.
1. 本地删除
$ dropuser -i -e turbo_rd Role "turbo_rd" will be permanently removed. 你确定吗 (y/n) y DROP ROLE turbo_rd;
2. 远程删除
$ dropuser -p 5432 -h 172.16.70.254 -i -e turbolinux Role "turbolinux" will be permanently removed. 你确定吗 (y/n) y 口令: DROP ROLE turbolinux;
再次提醒:本次命令的运行者必须是能登录254机器上数据库的用户。'口令'也是 该用户的数据库登录口令。
数据库简单管理
创建数据库createdb
createdb 中文
注意,运行这个命令的用户需要是postgresql服务器用户,有建库权限。
删除数据库dropdb
访问数据库
1. 使用psql命令行
$ psql 中文 欢迎来到psql 8.3.7,这是PostgreSQL 互动式文字终端机。 键入:\copyright 显示发行条款\h 显示SQL 命令的说明\ 显示pgsql 命令的说明\g 或者以分号(;)结尾以执行查询\q 退出 中文=#
2. 使用pgadmin3图形界面管理工具
表操作
创建完数据库之后,我们就可以在数据库里面创建表了。我用的postgresql版本是8.3(debian