为了自定义database的存储路径,我使用源码编译安装。如果直接apt-get install,以后再改存储路径非常费劲。
先下载 https://www.postgresql.org/ftp/source/
为了顺利使用chembl库,这里下载的是https://ftp.postgresql.org/pub/source/v9.5.17/postgresql-9.5.17.tar.bz2
解压放好,进入解压目录下
以下依赖如果没有,就先安装依赖
sudo apt-get install libreadline6=6.3-4ubuntu2 libreadline6-dev
#安装readline的作用是使得可以在命令行回滚历史命令,编辑命令
sudo apt-get install zlib1g-dev
sudo apt-get install gcc
然后
./configure --prefix=/media/lixutong/database/postgres9.5
## --prefix一定要设置,不然卸载会很麻烦,而且最好不要放到系统盘下面,占空间 ##
make
make install
出现 PostgreSQL installation complete. 说明安装成功。
如果有需求,可以专门创建一个用户。我不再创建用户,用户就是我自己
在~/.bashrc中加入以下内容
export PATH=/media/lixutong/database/postgres9.5/bin:$PATH
export PGDATA=/media/lixutong/database/postgres9.5/data
export PGHOME=/media/lixutong/database/postgres9.5/bin
export LANG=zh_CN.UTF-8
export PGPORT=5432
source ~/.bashrc 之后
initdb -D /media/lixutong/database/postgres9.5/data --locale=zh_CN.UTF8
这里看一下/media/lixutong/database/postgres9.5/data 的权限,应该是0700,否则下一步会报错
我遇到了权限是777且不能改成0700的问题,原因是我用的windows系统的旧硬盘,是ntfs格式,装成ubuntu之后我没有格式化直接用了。ntfs格式的硬盘不能用chmod修改权限。因此我换了ext4格式的硬盘重新安装的。
pg_ctl start -D /media/lixutong/database/postgres9.5/data
这样理论上都搞定了,运行
psql
报错
psql: could not connect to server: 没有那个文件或目录
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
看看.s.PGSQL.5432在哪
find / .s.PGSQL.5432 |grep .s.PGSQL.5432
发现在/tmp里
那么
psql -h /tmp
或者
psql -h localhost
都可行
这里我也不知道为什么 我看postgresql.conf里几乎全注释掉了,取消unix_socket_directories=‘tmp’的注释也不行,反正-h可以运行,就不管了
接下来还有最后一个报错
FATAL: database "username" does not exist
因为用源码编译没有新建postgres这个用户和postgres这个database,所以我们进入template1数据库
psql -h localhost -d template1
成功了!