本文不是一篇有严肃主题的 blog ,只是好记性不如烂键盘,权当做 PG 使用总结的记录,包括一些问题的总结。
关于 PG 的一些理解
- PG 有一点特别让人痛苦的:创建一个用户一定要创建一个系统用户,据我司运维说,这是为了创立管理员。只好先记着了,印象中 MySQL 是不需要创建用户的,不知道是不是会有安全问题。
进入用户
su - postgres
- 在 root 用户下,按下
su -
之后可以按tab
键进行补全。
进入命令行(进入用户后接着敲就是了)
psql
查看所有 Schema
select * from information_schema.schemata;
查看所有 database
- 相当于 MySQL 的
show databases;
select datname from pg_database;
查看 database 的 table
- 相当于 MySQL 的
show tables
select table_name from information_schema.tables where table_schema = 'public'
PostgreSQL 命令(以 9.5 版本为例)
- 目录位于
/usr/pgsql-9.5/bin
,如果没有配环境变量的话,需要进入到该目录或者补全路径。 pg_ctl
这里只做简单记录,网上很多详细的blogpg_ctl stop
停 pgpg_ctl start
启动 pgpg_ctl reload
重启 pg
PostgreSQL 配置文件的路径
/usr/lib/pgsql/9.5/data/xxxx.conf
- 比较重要的几个配置文件
postgresql.conf
服务端的一些配置。pg_hba.conf
客户端认证配置文件,定义如何认证客户端。
一些工程的操作
- 创建用户(一般对于工程上不会选择
postgres
用户,就像用 MySQL 不会使用 root 用户一样),均在 root 用户下执行。
sudo -u postgres /usr/pgsql-9.5/bin/createuser -s -e xxxx_user
useradd xxxx_user
- 为用户修改密码
alter user xxxx_user with password 'xxxxx_password';
- 创建 pg 数据库 xxxx_db ,所有者 为用户 xxxx_user,注意下面这个命令中是 O 不是 0(零)。
sudo -u postgres /usr/pgsql-9.5/bin/createdb -E UTF8 -O xxxx_user xxxx_db
- 使用指定用户登录指定数据库(此时不要输入密码)
psql -U xxxx_user -d xxxx_db
- 如何使用本机电脑登录远端主机的 PostgreSQL ?
- 第 1 步,将
postgresql.conf
里的 port 换掉,默认是 5432 ,同时该配置也是注释掉的状态;为什么要换掉呢?主要是怕运维禁掉 5432 端口;虽然端口扫描仍然扫得到,但是换个端口相对会更安全一些。 - 第 2 步,将
postgresql.conf
里的listen_address
设为*
。当然专业运维应该会设为其他的,在下不是专业的,只是为了解决问题,所以先设为*
了。这时候如果你重启的话,在本机电脑使用telnet
命令去查看端口是否存在,应该不会是连接不上的状态。 - 第 3 步,有可能出现
FATAL: no pg_hba.conf entry for host "xxxxxx", user "xxxx", database "xxxx", SSL off
。- 根据 路人甲JIA 的 blog,需要在
pg_hba.conf
上的最后加一行:host all all 0.0.0.0/0 md5
。
- 根据 路人甲JIA 的 blog,需要在
- 最后一步,重启 PG。
- 第 1 步,将
结束语
- 终于是稍微有点熟悉 PG 了,才敢把笔记放出来,当然本篇 blog 主要是怕笔记丢掉。好记性不如烂键盘嘛。