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的密码登录

# TYPE  DATABASE        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/

 

猜你喜欢

转载自yongkuang.iteye.com/blog/1847136