摘要:安装安装客户端安装服务器交互式客户端程序是,服务器程序是。安装完后,多了一个用户,但是这个用户没有设置密码,现在为它设置密码提示输入新的密码下面切换到用户,然后创建数据库簇。切回用户,列出所有角色。重新创建角色随后,即可以角色登录了。
环境:openSUSE Leap 42.2
自从 Ubuntu 弃 Unity 转 Gnome,我也就弃 Ubuntu 而转 openSUSE 了。
Leap 的软件版本是旧了一点(比如 Vim 还停留在 7.4),好处是稳定、优雅、省心。滚动发行版 Tumbleweed 目前还差那么一口气,试用之后觉得不够稳定,并不适合日常使用。
openSUSE 的 KDE 桌面堪称一绝,上班用 Windows、娱乐用 Mac、写代码用 Linux 的我,自认为 openSUSE 的 KDE 是最好的桌面。
还在用 Ubuntu 的同学,可以参考 阮一峰 写的 PostgreSQL 新手入门。
安装安装客户端:
$ sudo zypper in postgresql
安装服务器:
$ sudo zypper in postgresql-server
交互式客户端程序是 psql,服务器程序是 postgres。
安装完后,Linux 多了一个用户 postgres,但是这个用户没有设置密码,现在为它设置密码:
$ sudo passwd postgres <提示输入新的密码>
下面切换到用户 postgres,然后创建数据库簇(Cluster)。
(adam@linux) $ su postgres <输入刚刚设置的密码> (postgres@linux) $ initdb -D /var/lib/pgsql/data
数据库簇是放置数据库的位置,/var/lib/pgsql/data 是推荐的位置之一。
启动服务必须先切换至 postgres 用户:
(adam@linux) $ su postgres
通过 pg_ctl 工具启动服务:
(postgres@linux) $ pg_ctl start -D /var/lib/pgsql/data 正在启动服务器进程 2017-06-25 10:11:14 CST 日志: 日志输出重定向到日志收集进程 2017-06-25 10:11:14 CST 提示: 后续的日志输出将出现在目录 "pg_log" 中
pg_ctl 是一个用于初始化、启动、停止或控制 PostgreSQL 服务器的工具。
看一下进程状态:
$ ps aux | grep postgres postgres 5765 0.0 0.2 213160 20404 pts/0 S 10:11 0:00 /usr/lib/postgresql94/bin/postgres -D /var/lib/pgsql/data postgres 5768 0.0 0.0 68308 3112 ? Ss 10:11 0:00 postgres: logger process postgres 5770 0.0 0.0 213160 3628 ? Ss 10:11 0:00 postgres: checkpointer process postgres 5771 0.0 0.0 213160 5684 ? Ss 10:11 0:00 postgres: writer process postgres 5772 0.0 0.0 213160 3628 ? Ss 10:11 0:00 postgres: wal writer process postgres 5773 0.0 0.0 213560 6800 ? Ss 10:11 0:00 postgres: autovacuum launcher process postgres 5774 0.0 0.0 68304 4216 ? Ss 10:11 0:00 postgres: stats collector process
通过 pg_ctl 查看状态:
(postgres@linux) $ pg_ctl status -D /var/lib/pgsql/data pg_ctl: 正在运行服务器进程(PID: 5765) /usr/lib/postgresql94/bin/postgres "-D" "/var/lib/pgsql/data"
注意非 postgres 用户下仍是没有权限查看状态的:
(adam@linux) $ pg_ctl status -D /var/lib/pgsql/data pg_ctl: 无法访问目录 "/var/lib/pgsql/data": 权限不够
为了避免每次都用 -D 选项指定数据库簇的目录,现添加环境变量 PGDATA。
打开 .bashrc,添加如下两行:
# PostgreSQL database cluster directory. export PGDATA=/var/lib/pgsql/data
下次再用 pg_ctl 时就不需指定 -D 了。
(postgres@linux) $ pg_ctl status pg_ctl: 正在运行服务器进程(PID: 5765) /usr/lib/postgresql94/bin/postgres "-D" "/var/lib/pgsql/data"角色(Role)
回到 Linux 普通用户(比如 adam),用客户端程序 psql 尝试交互:
(adam@linux) $ psql template1 psql: 致命错误: 角色 "adam" 不存在
提示说角色不存在。
角色是 PostgreSQL 管理数据库访问权限的一个概念。
切回 postgres 用户,列出所有角色。
(postgres@linux) $ psql template1 psql (9.4.9) 输入 "help" 来获取帮助信息. template1=# SELECT rolname FROM pg_roles; rolname ---------- postgres (1 行记录)
可见目前只有一个角色 postgres。
新建一个角色 adam:
template1=# CREATE ROLE adam; CREATE ROLE template1=# SELECT rolname FROM pg_roles; rolname ---------- postgres adam (2 行记录)
再次尝试以用户 adam 连接:
(adam@linux) $ psql template1 psql: 致命错误: 不允许角色"adam" 进行登录
看来刚刚创建的角色 adam 没有 LOGIN 到数据库的权限。
重新创建角色:
template1=# DROP ROLE adam; DROP ROLE template1=# CREATE ROLE adam WITH LOGIN CREATEDB PASSWORD "654321";
随后,即可以角色 adam 登录了。
(adam@linux) $ psql -l 资料库列表 名称 | 拥有者 | 字元编码 | 校对规则 | Ctype | 存取权限 -----------+----------+----------+-------------+-------------+----------------------- postgres | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | template0 | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres (3 行记录)
psql 通过 -U 指定角色,前面都没有指定,缺省角色即 Linux 的用户名,所以其实可以指定角色:
(adam@linux) $ psql -l -Uadam
注意,数据库角色名不必和 Linux 用户名相同。
通过 -U 选项,可以以任意角色登录数据库:
(adam@linux) $ psql -l -Upostgres创建数据库
(adam@linux) $ createdb mydb (adam@linux) $ psql -l 名称 | 拥有者 | 字元编码 | 校对规则 | Ctype | 存取权限 -----------+----------+----------+-------------+-------------+----------------------- mydb | adam | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | ...
删除数据库:
(adam@linux) $ dropdb mydb
使用数据库:
(adam@linux) $ psql mydb
当然,psql 只是使用数据的方式之一。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/17611.html
摘要:安装安装客户端安装服务器交互式客户端程序是,服务器程序是。安装完后,多了一个用户,但是这个用户没有设置密码,现在为它设置密码提示输入新的密码下面切换到用户,然后创建数据库簇。切回用户,列出所有角色。重新创建角色随后,即可以角色登录了。 环境:openSUSE Leap 42.2 自从 Ubuntu 弃 Unity 转 Gnome,我也就弃 Ubuntu 而转 openSUSE 了。Le...
摘要:本文介绍一下在下如何安装,以及对做一些简单的配置。安装完毕后会自动退出。通过这个步骤,来完成对配置文件的重新载入。节点中表示根目录存放的位置,表示要监听的端口,表示主机名。 本文介绍一下在 openSUSE 下如何安装 nginx ,以及对 nginx 做一些简单的配置。 安装环境:openSUSE Leap 42.2 安装步骤 1. 添加软件源 安装 nginx 有几种方式,包括源...
阅读 1189·2023-04-26 01:38
阅读 1417·2021-11-15 11:39
阅读 3223·2021-09-22 15:43
阅读 2557·2019-08-30 15:55
阅读 2009·2019-08-30 14:17
阅读 2823·2019-08-29 14:16
阅读 3022·2019-08-26 18:36
阅读 2582·2019-08-26 12:19