訪問GitLab的PostgreSQL數據庫,查詢、修改、替換等操作


1.登陸gitlab的安裝服務查看配置文件

復制代碼
cat /var/opt/gitlab/gitlab-rails/etc/database.yml 

production:
  adapter: postgresql
  encoding: unicode
  collation:
  database: gitlabhq_production  //數據庫名
  pool: 10
  username: 'gitlab'  //用戶名
  password:
  host: '/var/opt/gitlab/postgresql'  //主機
  port: 5432
  socket:
  sslmode:
  sslrootcert:
  sslca:
復制代碼

查看/etc/passwd文件里邊gitlab對應的系統用戶

 

復制代碼
[root@localhost ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
gitlab-www:x:496:493::/var/opt/gitlab/nginx:/bin/false
git:x:495:492::/var/opt/gitlab:/bin/sh
gitlab-redis:x:494:491::/var/opt/gitlab/redis:/bin/false
gitlab-psql:x:493:490::/var/opt/gitlab/postgresql:/bin/sh  //gitlab的postgresql用戶
復制代碼

 

2.根據上面的配置信息登陸postgresql數據庫

復制代碼
[root@localhost ~]# su - gitlab-psql     //登陸用戶

-sh-4.1$ psql -h /var/opt/gitlab/postgresql -d gitlabhq_production   //連接到gitlabhq_production庫

psql (9.2.18)
Type "help" for help.

gitlabhq_production=#  \h    //查看幫助命令

Available help:
ABORT CREATE FUNCTION DROP TABLE
ALTER AGGREGATE CREATE GROUP DROP TABLESPACE
ALTER COLLATION CREATE INDEX DROP TEXT SEARCH CONFIGURATION
ALTER CONVERSION CREATE LANGUAGE DROP TEXT SEARCH DICTIONARY
ALTER DATABASE CREATE OPERATOR DROP TEXT SEARCH PARSER
ALTER DEFAULT PRIVILEGES CREATE OPERATOR CLASS DROP TEXT SEARCH TEMPLATE
ALTER DOMAIN CREATE OPERATOR FAMILY DROP TRIGGER
ALTER EXTENSION CREATE ROLE DROP TYPE

……………………………………………………………………………………………………………………

 

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)

gitlabhq_production-# \c gitlabhq_production //進入gitlabhq_production庫 gitlabhq_production-# \dt //查看多表 List of relations Schema | Name | Type | Owner --------+--------------------------------------+-------+-------- public | abuse_reports | table | gitlab public | appearances | table | gitlab public | application_settings | table | gitlab public | audit_events | table | gitlab public | award_emoji | table | gitlab public | boards | table | gitlab public | broadcast_messages | table | gitlab …………………………………………………………………………………………………………………… gitlabhq_production-# \d abuse_reports //查看單表 Table "public.abuse_reports" Column | Type | Modifiers --------------+-----------------------------+------------------------------------------------------------ id | integer | not null default nextval('abuse_reports_id_seq'::regclass) reporter_id | integer | user_id | integer | message | text | created_at | timestamp without time zone | updated_at | timestamp without time zone | message_html | text | Indexes: "abuse_reports_pkey" PRIMARY KEY, btree (id) gitlabhq_production-# \di //查看索引 List of relations Schema | Name | Type | Owner | Table --------+-----------------------------------------------------------------+-------+--------+-------------------------------- ------ public | abuse_reports_pkey | index | gitlab | abuse_reports public | appearances_pkey | index | gitlab | appearances public | application_settings_pkey | index | gitlab | application_settings public | audit_events_pkey | index | gitlab | audit_events public | award_emoji_pkey | index | gitlab | award_emoji public | boards_pkey | index | gitlab | boards public | broadcast_messages_pkey | index | gitlab | broadcast_messages public | chat_names_pkey | index | gitlab | chat_names public | ci_application_settings_pkey | index | gitlab | ci_application_settings public | ci_builds_pkey | index | gitlab | ci_builds public | ci_commits_pkey | index | gitlab | ci_commits ……………………………………………………………………………………………………………………………………………… gitlabhq_production=# SELECT spcname FROM pg_tablespace; //查看所有表空間 spcname ------------ pg_default pg_global (2 rows) gitlabhq_production-# \q //退出psql -sh-4.1$ exit //退出登錄用戶 logout
復制代碼

批量替換某個表字段的字符串

update tableA set field=replace(field,'value1','value2')

 

導出整個庫:

pg_dump -h 127.0.0.1 -U testuser test >test.sql

導入整個庫

psql -U testuser test < test.sql

注意:這里的testuser是postgres用戶,test是數據庫名稱,而且,testuser需要有test的權限

 

 

這里筆者出現一個很大的坑,我是12的版本升級到13.12.15的。

創建項目時報錯

 

經查是 

 gitlabhq_production  庫中services 表缺少group_id字段導致的

CREATE TABLE public.services (
    id integer NOT NULL,
    type character varying,
    title character varying,
    project_id integer,
    created_at timestamp without time zone,
    updated_at timestamp without time zone,
    active boolean DEFAULT false NOT NULL,
    properties text,
    template boolean DEFAULT false,
    push_events boolean DEFAULT true,
    issues_events boolean DEFAULT true,
    merge_requests_events boolean DEFAULT true,
    tag_push_events boolean DEFAULT true,
    note_events boolean DEFAULT true NOT NULL,
    category character varying DEFAULT 'common'::character varying NOT NULL,
    "default" boolean DEFAULT false,
    wiki_page_events boolean DEFAULT true,
    pipeline_events boolean DEFAULT false NOT NULL,
    confidential_issues_events boolean DEFAULT true NOT NULL,
    commit_events boolean DEFAULT true NOT NULL,
    job_events boolean DEFAULT false NOT NULL,
    confidential_note_events boolean DEFAULT true,
    deployment_events boolean DEFAULT false NOT NULL,
    description character varying(500),
    comment_on_event_enabled boolean DEFAULT true NOT NULL,
    instance boolean DEFAULT false NOT NULL,
    comment_detail smallint,
    inherit_from_id bigint,
    alert_events boolean,
    group_id bigint
);

 解決方式

ALTER TABLE services add COLUMN group_id bigint;

 

查看表結構

# su - gitlab-psql
-sh-4.2$ pg_dump -s gitlabhq_production -t services

  

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM