用直连和Navicat方式 连接 Gitlab的PostgreSql数据库

  • Post author:
  • Post category:其他


零:背景

众所周知,gitlab的数据存储于PostgreSql数据库。具体这种数据库的作用和彩虹屁不在本文体现

本文只讨论如何从本地连接到服务器端的PostgreSql数据库。进而获取表中数据

一:直连方式

查看PostgreSql通用配置信息

[root@gitlab1 ~]# cat /var/opt/gitlab/gitlab-rails/etc/database.yml

# This file is managed by gitlab-ctl. Manual changes will be
# erased! To change the contents below, edit /etc/gitlab/gitlab.rb
# and run `sudo gitlab-ctl reconfigure`.

production:
  adapter: postgresql                        #适配器方式
  encoding: unicode
  collation: 
  database: gitlabhq_production              #数据库名称
  pool: 1
  username: "gitlab"                         #登录账户
  password: 
  host: "/var/opt/gitlab/postgresql"         #数据库安装位置
  port: 5432                                 #端口
  socket: 
  sslmode: 
  sslcompression: 0
  sslrootcert: 
  sslca: 
  load_balancing: {"hosts":[]}
  prepared_statements: false
  statement_limit: 1000
  fdw: 
  variables:
    statement_timeout: 

查看gitlab的一些其他配套服务的安装位置

[root@gitlab1 ~]# cat /etc/passwd

gitlab-www:x:995:992::/var/opt/gitlab/nginx:/bin/false
git:x:994:991::/var/opt/gitlab:/bin/sh
gitlab-redis:x:993:990::/var/opt/gitlab/redis:/bin/false
gitlab-psql:x:992:989::/var/opt/gitlab/postgresql:/bin/sh
gitlab-prometheus:x:991:988::/var/opt/gitlab/prometheus:/bin/sh

登录一下试试

###切换用户
[root@gitlab1 ~]# su - gitlab-psql


###-h 对应PostgreSql安装位置;-d 对应登录用户名;根据上面信息,得知默认没有密码
-sh-4.2$ psql -h /var/opt/gitlab/postgresql -d gitlabhq_production
psql (11.7)
Type "help" for help.


### \l 查看有哪些库
gitlabhq_production=# \l
                                             List of databases
        Name         |    Owner    | Encoding |   Collate   |    Ctype    |        Access privileges        
---------------------+-------------+----------+-------------+-------------+---------------------------------
 gitlabhq_production | gitlab      | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 postgres            | gitlab-psql | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 template0           | gitlab-psql | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/"gitlab-psql"               +
                     |             |          |             |             | "gitlab-psql"=CTc/"gitlab-psql"
 template1           | gitlab-psql | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/"gitlab-psql"               +
                     |             |          |             |             | "gitlab-psql"=CTc/"gitlab-psql"
(4 rows)


一些其他常用命令,包括

“\dt” 以列表形式查看所有表

“\d 表名” 查看单张表信息

“\di” 列表形式查看所有索引

二:Navicat方式连接

2.1:修改核心配置文件

放开注释部分,修改为如下所示。cidr为0.0.0.0 代表不限制来访ip地址

 [root@gitlab1 ~]# vim /etc/gitlab/gitlab.rb
 postgresql['custom_pg_hba_entries'] = {
   APPLICATION: [ # APPLICATION should identify what the settings are used for
     {
       type: "host",
       database: "all",
       user: "all",
       cidr: "0.0.0.0/0",
       method: "trust",
     }
   ]
 }
###修改完配置文件,刷新使其生效
[root@gitlab1 ~]# gitlab-ctl  reconfigure

###查看是否生效。/var/opt/gitlab/postgresql路径 就是你PostgreSql的安装目录
[root@gitlab1 ~]# vim /var/opt/gitlab/postgresql/data/pg_hba.conf

# 这里是自动新增的部分
host all all 0.0.0.0/0 trust

2.2:不安全的修改


说在前面

:这次修改会在刷新配置之后,会有报错但毋需担心。

依然修改/etc/gitlab/gitlab.rb文件,如下所示

 ### 允许从其他地址访问本地PostgreSql数据库
 postgresql['enable'] = true

 ### 允许访问的地址  0.0.0.0表示允许所有地址的访问
 postgresql['listen_address'] = '0.0.0.0'

 ### 开放的端口
 postgresql['port'] = '5432'

 ### 修改PostgreSql数据库的数据存储位置
 postgresql['data_dir'] = "/var/opt/gitlab/postgresql/data"

本次修改后,同样刷新配置,可能会有报错。

提示‘listen_address’属性不合规什么的,但是不会影响整体功能,请忽略即可。

确认5432端口是否已放开监听,如果没有,重启gitlab服务即可

[root@gitlab1 ~]# netstat -antp |grep :5432

###如果执行上述命令后,没有反应,重启gitlab
[root@gitlab1 ~]# gitlab-ctl   restart

###再次执行netstat 发现5432已打开
[root@gitlab1 ~]# netstat -antp |grep :5432

2.3 创建链接

其中,主机就是你的服务器ip,端口、用户名、初始数据库等信息,请参考/var/opt/gitlab/gitlab-rails/etc/database.yml

正常情况下,测试连接即可正常连接到PostgreSql。收工。



版权声明:本文为darkdragonking原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。