西大 发表于 2016-11-20 10:21:49

postgresql 启动以及连接相关问题解决方案

  mac系统装上postgresql后,他的路径是/Library/Postgresql/9.2
  说明:
  1.postgresql的启动用户是postgresql,或者是其他用户,总之不能是root,但必须保证该用户拥有postgresql安装后路径的所有权限,最好设置该路径的owner为非root用户
  2.启动命令为 ${postgres root path}/bin/pg_ctl -D ${postgres root path}/data start
  3.连接postgres的命令为  ${postgres root path}/bin/psql -U ${postgres数据库中设置的登录用户,默认用户为postgres},如果没有加 -u 设置用户的话,会使用系统当前登录用户的用户名作为postgres的用户,这样可能出现psql: FATAL:  role "root" does not exist等问题
  4.postgres的数据库库的用户认证配置文件为 ${postgres root path}/data/pg_hba.conf,可以通过设置ipv4用户的验证方式为trust以避免输入postgres的密码登录

# TYPEDATABASE      USER            ADDRESS               METHOD
# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128               trust

  4.mac环境由于postgresql的安装路径不在/usr/local/pgsql,对于非postgresql的拥有者直接执行psql时可能会报错

psql: could not connect to server: Permission denied
Is the server running locally and accepting
connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"?
  此情况出现的原因是在$PATH中的某个路径下存在psql,并且改psql执行时默认连接到"/var/pgsql_socket/.s.PGSQL.5432",
解决方案为:
1.执行postgresql提供的路径修复批处理文件
curl http://nextmarvel.net/blog/downloads/fixBrewLionPostgres.sh | sh
2.修复$PATH,将psql的安装目录放置在$PATH的最前边,确保直接执行psql时使用的psql工具是postgres的安装目录中的工具
3.另外一个方案是,先关掉默认路径启动的postgresql,然后cp postgresql的跟路径 至/usr/local/pgsql,并且将/usr/local/pgsql 的拥有者设置为postgresql的拥有者,然后以postgresql的拥有者身份启动pgsql 

/usr/local/pgsql/bin/pg_ctl-D/usr/local/pgsql/data start
 (此种方式可以解决python等语言在条用psql时的错误,主要原因是python的类库中需要用到/usr/local/pgsql/bin/pg_config文件)
  5.psql登录成功后就可以执行相关的sql操作了,表数据的增删改成与其他数据库如mysql基本一致,注意每句sql后加";",以便控制台识别出sql输入完成,否则回车后将什么都不显示
  操作数据库以及表接口相关

连接数据库, 默认的用户和数据库是postgres
psql -U user -d dbname
切换数据库,相当于mysql的use dbname
\c dbname

列举数据库,相当于mysql的show databases
\l

列举表,相当于show tables
\dt

查看表结构,相当于desc tblname,show columns from tbname
\d tblname
 其他数据库的操作见postgresql官方教程http://www.postgresql.org/docs/
 
页: [1]
查看完整版本: postgresql 启动以及连接相关问题解决方案