如何安装在另一篇blog中有述,这里不再赘述.本篇简单说一下安装完postgresql之后的一些管理和查询操作.@H_301_2@
首先安装完postgresql之后需要初始化数据库:@H_301_2@
initdb /usr/local/var/postgres -E utf8
如果你不初始化,那么db的路径就是上面的/usr/local/var/postgres(在MacOS 10.11上),数据库编码类型就是utf8.@H_301_2@
我们可以设置开机启动postgresql服务:@H_301_2@
ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
第一句将postgresql的配置plist文件做软连接至系统的对应路径下,第二句加载其中的一个plist文件.有可能你的postgresql不是通过homebrew安装的,你的plist文件名会略有不同,你只需要自行到/usr/local/opt/postgresql/中找到正确的文件名就可以了.@H_301_2@
下面是启动和停止postgresql服务的指令:@H_301_2@
pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
pg_ctl -D /usr/local/var/postgres stop -s -m fast
这里有一点就是往往我们用上面的停止命令会等待一会,然后提示无法停止服务:@H_301_2@
pg_ctl -D /usr/local/var/postgres stop -s -m fast
pg_ctl: server does not shut down
这时你可以先卸载掉之前自动加载的服务,然后再尝试停止即可:@H_301_2@
launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
在搞定了postgresql服务的启动和停止后,我们可以尝试添加postgresql用户:@H_301_2@
createuser your_username -P
#Enter password for new role:
#Enter it again:
然后我们可以用刚创建的用户建立一个数据库:@H_301_2@
createdb database_name -O username -E UTF8 -e
上面创建了一个名为database_name的数据库,数据库的所有者为username用户,数据库的编码utf7,最后一个-e参数表示把数据库执行操作的命令显示出来.更多信息你可以通过 createdb –help查看.@H_301_2@
在MacOS中管理postgresql的数据库有2种方法,一种是console,另一种是通过gui,看个人喜好了.@H_301_2@
我们先来看看console方式,你可以用psql之类来连接数据库:@H_301_2@
psql -U username -d database_name -h 122.0.0.1
进入之后你可以用\h显示sql的各种命令,用\?来显示psql客户端自身的一些命令,比如\d是显示数据库中的表,\c database_name是连接到指定数据库等等.@H_301_2@
如果你不连接postgresql的情况下,也可以看到已创建数据库的列表:@H_301_2@
psql -l
如果你从windows转行过来,那么可能跟倾向于使用gui的方式管理postgresql数据库,pgadmin同样不会让你失望,大家可以到官网下载:@H_301_2@
https://www.pgadmin.org@H_301_2@
安装之后,我们需要创建一个到某个数据库的连接,右键点击Browser下的Servers,选择创建服务:@H_301_2@
然后和控制台中用psql连接方法类似我们要设置数据库所在地址,名称,用户名等等内容,然后点击保存.@H_301_2@
当多个客户端连接到同一个数据库时,我们还可以一揽全局,看到它们的状态:@H_301_2@
我们可以进入数据库中的表中去看看表结构,以及表内容:@H_301_2@
postgresql不像sqlite3,它需要服务器才能正常工作,这就是为什么你在rails中用rake创建数据库时sqlite3可以在db目录中看到生成的数据库而postgresql下啥也看不到的原因,所有创建的postgresql数据库都放在一起,你得通过上面讲述的方法来操作哦.@H_301_2@