<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>postgresql &#8211; 张三太爷</title>
	<atom:link href="https://www.somedoc.net/tag/postgresql/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.somedoc.net</link>
	<description>看前面，黑洞洞</description>
	<lastBuildDate>Mon, 09 Mar 2020 08:57:25 +0000</lastBuildDate>
	<language>zh-Hans</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.7.1</generator>

<image>
	<url>https://www.somedoc.net/wp-content/uploads/2016/12/cropped-dandycheung-1-32x32.jpg</url>
	<title>postgresql &#8211; 张三太爷</title>
	<link>https://www.somedoc.net</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>远程访问 gitlab 自带的 postgresql 数据库</title>
		<link>https://www.somedoc.net/2020/03/06/%e8%bf%9c%e7%a8%8b%e8%ae%bf%e9%97%ae-gitlab-%e8%87%aa%e5%b8%a6%e7%9a%84-postgresql-%e6%95%b0%e6%8d%ae%e5%ba%93/</link>
					<comments>https://www.somedoc.net/2020/03/06/%e8%bf%9c%e7%a8%8b%e8%ae%bf%e9%97%ae-gitlab-%e8%87%aa%e5%b8%a6%e7%9a%84-postgresql-%e6%95%b0%e6%8d%ae%e5%ba%93/#respond</comments>
		
		<dc:creator><![CDATA[张三太爷]]></dc:creator>
		<pubDate>Fri, 06 Mar 2020 10:36:33 +0000</pubDate>
				<category><![CDATA[备忘录]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[问题解决]]></category>
		<category><![CDATA[postgresql]]></category>
		<guid isPermaLink="false">http://www.somedoc.net/?p=4368</guid>

					<description><![CDATA[主要参照他人成文 https://cong5.net/pos <a href="https://www.somedoc.net/2020/03/06/%e8%bf%9c%e7%a8%8b%e8%ae%bf%e9%97%ae-gitlab-%e8%87%aa%e5%b8%a6%e7%9a%84-postgresql-%e6%95%b0%e6%8d%ae%e5%ba%93/" class="more-link">[&#8230;]</a>]]></description>
										<content:encoded><![CDATA[<p>主要参照他人成文 https://cong5.net/post/open-remote-connect-postgresql-with-omnibus-gitlab。</p>
<p>步骤两大部分，一是启用密码，二是修改监听地址。</p>
<p>1. 设置密码。根据<a href="https://www.somedoc.net/?p=4365">前文</a>方法，连接到数据库，修改密码（默认没有），即输入 \password 命令后，两次输入新密码，然后 \q 退出；<br />
2. 在 <code>/etc/gitlab/gitlab.rb</code> 中设置 <code>gitlab_rails['db_password']</code> 为上述密码（保险起见前后加上双引号）；<br />
3. 在 <code>/etc/gitlab/gitlab.rb</code> 中设置 <code>postgresql['listen_address'] = "*"</code> 以启用对外部连接的监听；<br />
4. 在 <code>/etc/gitlab/gitlab.rb</code> 中设置 <code>postgresql['md5_auth_cidr_addresses'] = ["0.0.0.0/0"]</code> 表示允许所有的 IP 连接，如果想指定连接IP的，将 0.0.0.0 设为特定 IP 值即可；<br />
5. 老一套，重新生成配置文件并重启以生效：<code>sudo gitlab-ctl reconfigure</code> 然后 <code>sudo gitlab-ctl restart</code>。</p>
<p>在客户机上打开 DBeaver 用 gitlab-psql 用户测试连接，一次通过。</p>
<p><strong>重要更新（2020-03-09）</strong><br />
今日有小伙伴报告 GitLab 无法正常访问了，502 错误，第一时间就感觉是数据库访问上出了问题。查看日志文件 <code>/var/log/gitlab/gitlab-rails/production.log</code>，相关信息是：</p><pre class="crayon-plain-tag">Processing by RootController#index as HTML
Completed 500 Internal Server Error in 117ms (Elasticsearch: 0.0ms | Allocations: 5575)

ActiveRecord::NoDatabaseError (FATAL:  no pg_hba.conf entry for host "::1", user "gitlab", database "gitlabhq_production", SSL on
FATAL:  no pg_hba.conf entry for host "::1", user "gitlab", database "gitlabhq_production", SSL off
):</pre><p><code>pg_hba.conf</code> 文件是 PostgreSQL 的访问控制策略文件，和 <code>postgresql.conf</code> 文件都处于 <code>/var/opt/gitlab/postgresql/data</code> 路径下。</p>
<p><code>pg_hba.conf</code> 文件内容为：</p><pre class="crayon-plain-tag"># TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD
# "local" is for Unix domain socket connections only
local   all         all                               peer map=gitlab

host    all         all         0.0.0.0/0             md5
host    replication gitlab_replicator 0.0.0.0/0       md5</pre><p></p>
<p>字面上看，是主机、用户、数据库以及 SSL 开关全部没有命中现有的访问规则。但再看上面列出的前两行配置，似乎不应该出现漏掉的情况，一行本地主机访问，一行经由网络访问，用户名和数据库名是全集通配，网络也是全网允许。不过，貌似少了错误信息中显现出的 IPv6 规则，于是，加入了 <code>host    all         all         ::/0                  md5</code> 行。用 <code>gitlab-ctl restart postgresql</code> 重启数据库，问题仍在。</p>
<p>开启乱撞模式。把数据库的 all 改成 gitlabhq_production，不行，把用户名改成 gitlab，不行，而且后果更严重，数据库直接就起不来了。又把注意力从 host 类型投到 local 上，各种尝试均无效果。改来改去，错误信息在之前的和以下的这两类之间摇摆：</p><pre class="crayon-plain-tag">Processing by RootController#index as HTML
Completed 500 Internal Server Error in 16ms (Elasticsearch: 0.0ms | Allocations: 6418)

PG::ConnectionBad (could not connect to server: Connection refused
        Is the server running on host "*" (::1) and accepting
        TCP/IP connections on port 5432?
could not connect to server: Connection refused
        Is the server running on host "*" (127.0.0.1) and accepting
        TCP/IP connections on port 5432?
):</pre><p> </p>
<p>但这里意外发现了上次配置时犯的一个错误：psql 改密码时 password 命令后没有带用户名，因为误以为当前连接的用户身份就是 gitlab，没想到是 gitlab-psql！连忙把 gitlab 用户的数据库密码也改了，否则前文的 <code>gitlab_rails['db_password']</code> 配置的密码是不可能正确的，因为我们没有一并修改的 <code>gitlab_rails['db_username']</code> 配置项默认用户就是 gitlab。</p>
<p>真的是改了好多次……然后开始怀疑，会不会来自 localhost 的网络访问是要单独配置啊？在这个指导思想下又魔改了几次（包括子网范围有无、大小等），终于有了以下正常工作版的 <code>pg_hba.conf</code>：</p><pre class="crayon-plain-tag"># TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD

# "local" is for Unix domain socket connections only
# local   all         all                               peer map=gitlab
local   all         all                               md5

host    all         all         127.0.0.1/8           md5
host    all         all         ::1/128               md5

host    all         all         0.0.0.0/0             md5
host    all         all         ::/0                  md5

host    replication gitlab_replicator 0.0.0.0/0       md5</pre><p>摸索出的门道大概是，1. 同一规则，要把 IPv4 和 IPv6 都配上（但最后一条很显然没有配 IPv6，不知为何没有影响），2. localhost 的网络访问，不会去匹配全网段规则。以上三条规则，共耗时约三个小时。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.somedoc.net/2020/03/06/%e8%bf%9c%e7%a8%8b%e8%ae%bf%e9%97%ae-gitlab-%e8%87%aa%e5%b8%a6%e7%9a%84-postgresql-%e6%95%b0%e6%8d%ae%e5%ba%93/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
