Posts PostgreSQL入门(1)
Post
Cancel

PostgreSQL入门(1)

为了效率以及全面发展,数据库的知识还是很有必要掌握的,毕竟自己做的东西其实都是大大小小的数据,有了数据库的知识应该能在数据分析的时候有其他的想法和灵感。

各大数据库如mysql,psql,mongodb等,manual手册动辄几千大页,想要完全精通那是不可能的,对于我们这种非专职数据库工作人员来说更甚。但是就像git一样,虽然功能很多,但是我们需要掌握和了解的只需要常用的几个就行,数据库也是一样,能够熟练的掌握基本操作对于生信人员来说已经足够,随着使用的频次增加逐渐去精通就行了。

我挑选了postgresql(psql)作为自己的出发数据库,为什么选psql,而不是mysql,mariadb,mongodb等等其他数据库?工具只是解决问题的手段而已,所以不需要太过在乎这个了。

首先安装,本人环境centos7服务器,很简单直接yum install 就行了,安装完就有psql命令可以用了。 但是按照网上一些教程,输入psql以后一直提示错误

psql: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

网上又搜了好多此类错误提示的blog,但是几乎没有能够完全说明白的,或者说对于初入数据库的人来说,很难分辨哪些是适合自己问题解决方案的回答。 到最后,决定找下官方的readme文件看看,果然找到了答案,文档地址: /usr/share/doc/postgresql-9.2.24/README.rpm-dis

根据readme提示,在最初的安装完成以后,需要执行数据库的初始化工作 postgresql-setup initdb 然后启动psql服务 systemctl start postgresql.service 也可以开机启动psql服务 systemctl enable postgresql.service 初始化后会生成一个postgres用户名,它的UID和GID都是26,初始密码为空。 所以,到这一步后,其实就需要你su到postgres这个用户名,然后再继续psql的操作,比如设置数据库的密码等,postgres用户的home目录被设置为/var/lib/pgsql,目录里包含了配置文件以及数据库本身的文件等。 在postgres的登陆bash下,输入psql就可以进入数据库的bash界面了,可以执行sql语句对数据库进行操作。

alter user postgres with password '123'; #设置postgres的密码为123
CREATE DATABASE test OWNER postgres; # 新建一个名为test的数据库,拥有者是postgres
GRANT ALL PRIVILEGES ON DATABASE test to postgres; #将数据库test的所有操作权限赋予给postgres

至此我们就拥有了一个postgres用户下名为test的数据库,虽然它里面什么数据也没有

现在我们返回正常的终端,怎么在其他用户去访问这个postgres名下的test数据库呢? psql -U postgres -d test -h 127.0.0.1 -p 5432 我们可以用这个命令,当然-p参数可以省略,因为默认就是5432端口,当执行这个命令时,会提示psql: 致命错误: 对用户"user1"的对等认证失败,这是因为配置文件的设置问题 /var/lib/pgsql/data/pg_hba.conf 我们打开上面这个配置文件可以看到有如下内容

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            ident

我们把METHOD列改成trust后再执行psql -U postgres -d test -h 127.0.0.1 -p 5432就能进入数据库了,但是这样似乎不太安全,好习惯要从一开始就养起。将method改成md5(readme会提示password是明文密码,所以最好用md5密码)host all all 127.0.0.1/32 md5,再次执行上述命令会提示输入密码,密码就是你开始设置的密码,然后就能进入数据库了。

psql的简单介绍就结束了,其实完成这个过程我还是花了不少时间的,一来并没有接触过psql,二来网上的文档真的是大部分并不会完全正好解决自己碰见的问题,最后还是在官方的readme文件中找到了答案,所以事实再一次证明官方的文档还是要多看啊,不要怕难啊,伸手党还是少做的好!

OLDER POSTS NEWER POSTS

Comments powered by Disqus.

Contents

Search Results