切换 postgres 用户后,提示符变成 -bash-4.2$
使用psql连接到数据库控制台,此时系统提示符变为'postgres=#'
$ su postgres bash-4.2$ psql psql (9.6) Type "help" for help. postgres=#
3.2 一些常用控制台命令
命令 | 作用 |
---|---|
\h | 查看所有sql命令,\h select 等可以查看具体命令 |
? | 查看所有psql命令 |
\d | 查看当前数据库所有表 |
\d | [tablename] 查看具体的表结构 |
\du | 查看所有用户 |
\l | 查看所有数据库 |
\e | 打开文本编辑器 |
3.3 SQL控制台操作语句
数据库创建与修改
# 创建数据库 create database testdb; # 删除数据库 drop database testdb; # 重命名数据库(该数据库必须没有活动的连接) alter database testdb rename to newname; # 以其他数据库为模板创建数据库(表结构、数据都会复制) create database newdb template testdb; # 将查询结果写入文件 \o /tmp/test.txt select * from test; # 列状显示 \w # 再一次\o关闭写入,否则是连续写入的 \o # 退出控制台 \q
数据库用户创建与授权
# 建立新的数据库用户 create user zhangsan with password '123456'; # 为新用户建立数据库 create database testdb owner zhangsan; # 把新建的数据库权限赋予新用户 grant all privileges on database testdb to zhangsan;
4. 认证登录
认证权限配置文件: /var/lib/pgsql/9.6/data/pg_hba.conf
命令行的各个参数解释说明:
- -U username 用户名,默认值postgres
- -d dbname 要连接的数据库名,默认值postgres。如果单指定-U,没指定-d参数,则默认访问与用户名名称相同的数据库。
- -h hostname 主机名,默认值localhost
- -p port 端口号,默认值5432
4.1 认证方式
常见的四种身份验证方式
- trust:凡是能连接到服务器的,都是可信任的。只需要提供数据库用户名,可以没有对应的操作系统同名用户;
- password 和 md5:对于外部访问,需要提供 psql 用户名和密码。对于本地连接,提供 psql 用户名密码之外,还需要有操作系统访问权(用操作系统同名用户验证)。password 和 md5 的区别就是外部访问时传输的密码是否用 md5 加密;
- ident:对于外部访问,从 ident 服务器获得客户端操作系统用户名,然后把操作系统作为数据库用户名进行登录;对于本地连接,实际上使用了peer;
- peer:通过客户端操作系统内核来获取当前系统登录的用户名,并作为psql用户名进行登录。
4.2 远程登录
postgresql.conf
listen_addresses = '*' # what IP address(es) to listen on;
pg_hba.conf
所有的用户通过任意ip都可以通过md5(密码)的方式登陆PostgreSQL,配置如下:
host all all 0.0.0.0/0 ident
验证
# server:重启生效 systemctl restart postgresql-9.6 # client:命令行远程登录 psql -U zhangsan -d testdb -h 10.122.45.97 -p 5432
4.3 本地登录
PostgreSQL登陆默认是peer,不需要验证用户密码即可进入psql相关数据库,但前提是必须切换用户登陆。类似于最开始执行的su postgres;psql
一样。
[root@sltkp3cbpch data]# psql -U zhangsan -d testdb -p 5432 psql: FATAL: Peer authentication failed for user "zhangsan"
如果必须按照上述登陆方式登陆的话,有两种修改方式:
- 增添map映射
- 修改认证方式
a. map映射
map
映射是用来将系统用户映射到对应的postgres数据库用户,用来限制指定的用户使用指定的账号来登陆。
pg_ident.conf
修改pg_ident.conf文件,与pg_hba.conf文件同级目录。其基本格式如下:
# MAPNAME SYSTEM-USERNAME PG-USERNAME map_zhangsan root zhangsan
- MAPNAME指的是映射的名称,比如
map_zhangsan
- SYSTEM-USERNAME就是系统用户的名称,比如
root
- PG-USERNAME就是数据库里存在的用户名称,比如
zhangsan
上面定义的map
意思是:定义了一个叫做map_zhangsan
的映射,当客户端用户是root
的时候,允许它用zhangsan
用户来登陆PostgreSQL。
修改pg_hba.conf文件
在peer的认证方式后面添加:map=map_tom
重启PostgreSQL服务,再次尝试,连接成功。
b. 修改认证方式
需要修改一下pg_hba.cong
文件,将local all all peer
修改为local all all md5
,如下图所示:
重启PostgreSQL服务,再次尝试,连接成功。
到此这篇关于postgresql安装及配置超详细教程的文章就介绍到这了,更多相关postgresql安装及配置内容请搜索
更多SQL内容来自木庄网络博客