这里写目录标题
- 序言
- 主要内容
- [bash 配置文件个人理解](#bash 配置文件个人理解)
-
- [关于初始化 PostgreSQL 数据库的理解](#关于初始化 PostgreSQL 数据库的理解)
- 启动方法
- 检查服务器是否在PostgreSQL中运行
- [关闭 postgresql 数据库方法](#关闭 postgresql 数据库方法)
- 参考链接
序言
PostgreSQL 9.x 以下版本笔者没用过,具体操作看参考链接,笔者就不记录重复操作了,主要记录容易出问题的地方。
主要内容
bash 配置文件个人理解
按照参考链接那样介绍,是在 ~/.bash_profile
文件配置 PGHOME 和 PGDATA 系统变量,但是每次重新登录命令行时,总要手动激活 ~/.bash_profile
内的配置,否则 psql
命令无法生效。
报错如下:
具体原因如下:
最后在网上查找资料发现,用图形界面登录时,系统会读取~/.bash_profile中的配置信息,所以环境变量可以生效。
但是用命令行登录,例如xshell,系统加载的是~/.bashrc 中的配置信息。
所以,我们把环境变量在~/.bashrc文件中,重新配置一次,问题解决,用命令行就不用每次执行 . .bash_profile命令了。
将 ~/.bash_profile
修改为 ~/.bashrc
文件,然后source ~/.bashrc
,问题便可解决。
关于初始化 PostgreSQL 数据库的理解
-
--prefix= 指定安装目录路径
-
如果初始化数据库时,
data
目录没有指定,则会默认使用环境变量中的PGDATA
pg_hba.conf
配置理解:
css
TYPE DATABASE USER ADDRESS METHOD
host all all 127.0.0.1/32 trust
host all postgres 0.0.0.0/0 reject
host all all 0.0.0.0/0 md5
以上配置的解释:
- 允许任何本地用户无密码连接任何数据库。
- 不允许Postgres用户从任何外部地址连接任何数据库。
- 允许其他任何用户从外部地址通过密码连接任何数据库。
如果要配置 PostgreSQL 的远程连接,配置如下:
bash
# IPv4 local connections:
host all all 0.0.0.0/0 md5
修改 postgresql.conf
配置文件 (该配置是优化后的配置)
css
#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------
# - Connection Settings -
listen_addresses = '*'
port = 5432
max_connections = 20000 # (change requires restart)
superuser_reserved_connections = 100
修改一下listen_address
使其监听整个网络
启动方法
正常情况下的启动命令:-D data路径可以不用指定
注意指定的是一个 .log 后缀的日志文件
bash
pg_ctl start -l /usr/local/postgresql/log/pg_server.log
无法启动的请参考
检查服务器是否在PostgreSQL中运行
bash
pg_ctl status
效果:
关闭 postgresql 数据库方法
bash
pg_ctl stop
pg_ctl status
命令查看效果:
参考链接
1. Linux CentOS 7 安装PostgreSQL 9.5(源码编译)
3. linux下启动数据库的时候,waiting for server to start...stopped waiting pg_ctl:could not start server
4. Mac下启动postgrsql提示another server might be running的解决
5. postgres提示pg_ctl: could not start server Examine the log output.