{"id":1303,"date":"2022-09-09T17:41:19","date_gmt":"2022-09-09T09:41:19","guid":{"rendered":"http:\/\/175.24.184.226\/?p=1303"},"modified":"2022-09-09T17:41:19","modified_gmt":"2022-09-09T09:41:19","slug":"postgresql%e7%a6%bb%e7%ba%bf%e5%ae%89%e8%a3%85","status":"publish","type":"post","link":"\/?p=1303","title":{"rendered":"postgresql\u79bb\u7ebf\u5b89\u88c5"},"content":{"rendered":"<h2>postgresql<\/h2>\n<h2><strong>\u4e00\u3001<\/strong> \u5b89\u88c5\u8bf4\u660e<\/h2>\n<p>\u4e0d\u80fd\u548c<code>greenplum<\/code>\u5b89\u88c5\u5728\u4e00\u53f0\u673a\u5668\u3002<\/p>\n<h2>\u4e8c\u3001\u6570\u636e\u5e93postgresql\u5b89\u88c5<\/h2>\n<h3>1\u3001\u8d44\u6e90\u51c6\u5907<\/h3>\n<p>\u5b89\u88c5\u8fc7\u7a0b\u5728linux\u64cd\u4f5c\u7cfb\u7edf\u7684\u670d\u52a1\u5668\u4e0a\u5b89\u88c5postgresql\u6570\u636e\u5e93\uff0c\u5b89\u88c5\u73af\u5883\u51c6\u5907\u5982\u4e0b\uff1a<\/p>\n<p>1\u3001linux\u64cd\u4f5c\u7cfb\u7edf\u7248\u672c\uff1a<\/p>\n<p><img src=\"https:\/\/lemon-guess.oss-cn-hangzhou.aliyuncs.com\/img\/202209091719371.jpg\" alt=\"img\" \/> <\/p>\n<p>2\u3001\u83b7\u53d6postgresql\u6570\u636e\u5e93\u5b89\u88c5\u65f6\u5fc5\u987b\u7684\u5b89\u88c5\u5305 <\/p>\n<ul>\n<li>\n<p>\u67e5\u770b\u662f\u5426\u5b89\u88c5\u4e86\u67d0\u4e2a\u8f6f\u4ef6\u7684\u547d\u4ee4\uff1arpm -qa | grep \u8f6f\u4ef6\u540d\u3002<\/p>\n<\/li>\n<li>\n<p>which\u547d\u4ee4\u53ef\u67e5\u770b\u67d0\u4e2a\u8f6f\u4ef6\u7684\u5b89\u88c5\u8def\u5f84\u3002<\/p>\n<\/li>\n<li>\n<p>\u6302\u8f7d\u955c\u50cf\u540e\uff0c\u4f7f\u7528<strong>yum install \u5305\u540d<\/strong>  <strong>-y<\/strong>\u6765\u5b89\u88c5\u8f6f\u4ef6\u5305\u3002<\/p>\n<\/li>\n<\/ul>\n<p>\u9700\u8981\u7684\u5b89\u88c5\u5305\u5982\u4e0b\uff1a<\/p>\n<pre><code class=\"language-bash\">yum install -y gcc\nyum install -y gcc-c++\nyum install -y libicu-devel\nyum install -y perl-ExtUtils-Embed\nyum install -y readline\nyum install -y readline-devel\nyum install -y zlib\nyum install -y zlib-devel\nyum install -y openssl\nyum install -y openssl-devel\nyum install -y pam-devel\nyum install -y libxml2-devel\nyum install -y libxslt-devel\nyum install -y openldap-devel\nyum install -y systemd-devel\nyum install -y tcl-devel\nyum install -y python-devel\nyum install -y bzip2-devel\n\n\u6ce8\uff1ayum\u6e90\u64cd\u4f5c\u89c1\u9644\u5f55\u3002<\/code><\/pre>\n<p>3\u3001postgresql\u6570\u636e\u5e93\u7248\u672c<\/p>\n<p><strong><em>\u5236\u54c1\u5e93\u8def\u5f84\u5982\u4e0b\uff1a<\/em><\/strong><\/p>\n<p>bigdata-version-release\/01 \u57fa\u7840\u5b89\u88c5\u5305\/001 \u57fa\u7840\u7ec4\u4ef6\u5305\/PostgreSQL\/postgresql-11.10_all.tar.gz<\/p>\n<p>4\u3001\u521b\u5efapg\u6570\u636e\u7684\u7ba1\u7406\u7528\u6237<\/p>\n<p>\u5b89\u88c5postgresql\u6570\u636e\u5e93\u65f6\uff0c\u9700\u8981\u4f7f\u7528\u5230root\u7528\u6237\uff0c\u5e76\u4e14\u9700\u8981\u65b0\u5efa\u4e00\u4e2apg\u7684\u7ba1\u7406\u7528\u6237\uff0c\u7528\u4e8e\u8d77\u505cpostgresql\u6570\u636e\u5e93\uff0c\u6bd4\u5982\u53ef\u4ee5\u521b\u5efa\u4e3apgsql\u7528\u6237\uff0c\u4f7f\u7528\u8be5\u7528\u6237\u7528\u4e8e\u6570\u636e\u5e93\u767b\u5f55\u7b49\u6570\u636e\u5e93\u65e5\u5e38\u7ba1\u7406\u3002<\/p>\n<pre><code class=\"language-bash\">su - root\n#\u521b\u5efa\u7ba1\u7406\u7528\u6237\npgsqluseradd pgsql\n#\u8bbe\u7f6e\u7ba1\u7406\u7528\u6237\u5bc6\u7801\npasswd pgsql<\/code><\/pre>\n<h3>2\u3001\u5b89\u88c5\u64cd\u4f5c<\/h3>\n<p>1\u3001\u4e0a\u4f20postgresql\u6570\u636e\u5e93\u5b89\u88c5\u5305\uff08postgresql-11.10_all.tar.gz\uff09\u81f3\u670d\u52a1\u5668\u7684\/home\/pgsql\u7528\u6237\u76ee\u5f55\u4e0b\u3002\u5e76\u6267\u884c\u89e3\u538b\u64cd\u4f5c\u3002<\/p>\n<pre><code class=\"language-bash\">su - pgsqlcd \/home\/pgsqltar -zxvf postgresql-11.10_all.tar.gz<\/code><\/pre>\n<p>2\u3001\u521b\u5efa\u5b89\u88c5\u76ee\u5f55<\/p>\n<pre><code class=\"language-bash\">cd \/home\/pgsqlmkdir pgsql<\/code><\/pre>\n<p>3\u3001\u751f\u6210\u6570\u636e\u5e93\u914d\u7f6e\u6587\u4ef6<\/p>\n<pre><code class=\"language-bash\">#\u8fdb\u5165postgresql\u89e3\u538b\u76ee\u5f55\n\ncd \/home\/pgsql\/postgresql-11.10\n\ntar zxvf postgresql-11.10.tar.gz\n\ncd postgresql-11.10\n\n#\u751f\u6210\u6570\u636e\u5e93\u914d\u7f6e\u6587\u4ef6\uff08prefix \u4e3a\u6570\u636e\u5e93\u7684\u5b89\u88c5\u76ee\u5f55\uff09\n\n.\/configure --with-openssl --prefix=\/home\/pgsql\/pgsql<\/code><\/pre>\n<p>\u6700\u540e\u6ca1\u6709\u51fa\u73b0\u5f02\u5e38\uff0c\u5219\u4ee3\u8868\u68c0\u67e5\u901a\u8fc7\u3002<\/p>\n<p><img src=\"https:\/\/lemon-guess.oss-cn-hangzhou.aliyuncs.com\/img\/202209091726587.jpg\" alt=\"img\" \/> <\/p>\n<p>4\u3001\u6570\u636e\u5e93postgresql\u7684\u5b89\u88c5<\/p>\n<p>\u6267\u884cmake\u547d\u4ee4<\/p>\n<pre><code class=\"language-bash\">[pgsql@rhino007 postgresql-11.10]$ make<\/code><\/pre>\n<p>\u7b49\u5f85\u4e00\u5c0f\u4f1a\uff0c\u82e5\u6ca1\u6709\u51fa\u9519\uff0c\u6700\u540e\u51fa\u73b0\u201cAll of PostgreSQL successfully made. Ready to install.\u201d\u5219\u4ee3\u8868\u7f16\u8bd1\u6210\u529f\u3002<\/p>\n<p><img src=\"https:\/\/lemon-guess.oss-cn-hangzhou.aliyuncs.com\/img\/202209091726438.jpg\" alt=\"img\" \/> <\/p>\n<p>\u518d\u6267\u884cmake install\u547d\u4ee4<\/p>\n<pre><code class=\"language-bash\">[pgsqlr@rhino007 postgresql-11.10]$ make install<\/code><\/pre>\n<p>\u82e5\u6ca1\u6709\u51fa\u9519\uff0c\u6700\u540e\u51fa\u73b0\u201cPostgreSQL installation complete.\u201d\u5219\u4ee3\u8868\u5b89\u88c5\u6210\u529f\u3002<\/p>\n<p><img src=\"https:\/\/lemon-guess.oss-cn-hangzhou.aliyuncs.com\/img\/202209091726430.jpg\" alt=\"img\" \/> <\/p>\n<h3>3\u3001\u6570\u636e\u5e93postgresql\u914d\u7f6e<\/h3>\n<p>1\u3001data\u76ee\u5f55\u521b\u5efa<\/p>\n<pre><code class=\"language-bash\">#postgresql \u4f7f\u7528root\u7528\u6237\u65e0\u6cd5\u542f\u52a8\uff0c\u9700\u8981\u521b\u5efa\u5207\u6362\u5230pgsql\u6765\u521d\u59cb\u5316\u542f\u52a8\u3002\n\n#\u8bbe\u7f6edata\u76ee\u5f55\uff0c\u53ef\u4ee5\u81ea\u884c\u8bbe\u7f6e\u5230\u5176\u5b83\u76d8\uff0c\u4ee5data01\u76d8\u4e3a\u4f8b\n\nmkdir \/data01\/pgdata\n\nchown -R pgsql:pgsql \/data01\/pgdata<\/code><\/pre>\n<p>2\u3001postgres\u73af\u5883\u53d8\u91cf\u914d\u7f6e<\/p>\n<pre><code class=\"language-bash\">su - pgsqlcd ~vi .bash_profile <\/code><\/pre>\n<pre><code class=\"language-bash\">export PGDATA=\/data01\/pgdata \nexport LANG=en_US.utf8 \nexport PGHOME=\/home\/pgsql\/pgsql \nexport LD_LIBRARY_PATH=$PGHOME\/lib:\/lib64:\/usr\/lib64:\/usr\/local\/lib64:\/lib:\/usr\/lib:\/usr\/local\/lib:$LD_LIBRARY_PATH export DATE=`date +&quot;%Y%m%d%H%M&quot;` \nexport MANPATH=$PGHOME\/share\/man:$MANPATH \nexport PGUSER=pgsql \nexport PGHOST=10.45.150.1 \nexport PGPORT=5432 \nexport PGDATABASE=postgres PATH=$PATH:$HOME\/.local\/bin:$HOME\/bin \nexport PATH=$PGHOME\/bin:$PATH <\/code><\/pre>\n<p>\u4f7f\u73af\u5883\u53d8\u91cf\u751f\u6548\uff08\u52a1\u5fc5\u6267\u884c\uff09<\/p>\n<pre><code class=\"language-bash\">source .bash_profile <\/code><\/pre>\n<p>3\u3001\u521d\u59cb\u5316\u6570\u636e\u5e93<\/p>\n<pre><code class=\"language-bash\">#\u521d\u59cb\u5316\u6570\u636e\u5e93\n\/home\/pgsql\/pgsql\/bin\/initdb --encoding=utf8 -D \/data01\/pgdata<\/code><\/pre>\n<p>\u51fa\u73b0\u5982\u4e0b\u622a\u56fe\u4ee3\u8868\u521d\u59cb\u5316\u6210\u529f<\/p>\n<p><img src=\"https:\/\/lemon-guess.oss-cn-hangzhou.aliyuncs.com\/img\/202209091729348.jpg\" alt=\"img\" \/> <\/p>\n<ul>\n<li>\u6210\u529f\u540e\u4fee\u6539\u7aef\u53e3\u53caip\uff1a<\/li>\n<\/ul>\n<pre><code class=\"language-bash\">vim  \/data01\/pgdata\/postgresql.conf\n\nport = 5432listen_addresses = &#039;10.45.150.1&#039;<\/code><\/pre>\n<ul>\n<li>\u6dfb\u52a0\u767d\u540d\u5355\uff1a<\/li>\n<\/ul>\n<pre><code class=\"language-bash\">vim  \/data01\/pgdata\/pg_hba.conf\n\nhost   all       all       10.45.150.1\/32       trust<\/code><\/pre>\n<p>4\u3001\u542f\u52a8\u6570\u636e\u5e93\u3002<\/p>\n<pre><code class=\"language-bash\">#\u542f\u52a8\u6570\u636e\u5e93\u811a\u672c\n\/home\/pgsql\/pgsql\/bin\/pg_ctl -D \/data01\/pgdata -l logfile start\n#\u5173\u95ed\u6570\u636e\u5e93\u811a\u672c\n\/home\/pgsql\/pgsql\/bin\/pg_ctl -D \/data01\/pgdata -l logfile stop\n#\u91cd\u542f\u6570\u636e\u5e93\u811a\u672c\n\/home\/pgsql\/pgsql\/bin\/pg_ctl -D \/data01\/pgdata -l logfile restart\n#\u67e5\u770b\u6570\u636e\u5e93\u72b6\u6001\u811a\u672c\n\/home\/pgsql\/pgsql\/bin\/pg_ctl -D \/data01\/pgdata -l logfile status<\/code><\/pre>\n<h3>4\u3001\u767b\u5f55\u6570\u636e\u5e93<\/h3>\n<pre><code class=\"language-bash\">su - pgsqlpsql\n# \u6216\u8005\u8fdb\u5165bin\u76ee\u5f55\u4e0b\u6267\u884c\u767b\u5f55\u64cd\u4f5c\uff1a\ncd \/home\/pgsql\/pgsql\/bin\n.\/psql<\/code><\/pre>\n<p><img src=\"https:\/\/lemon-guess.oss-cn-hangzhou.aliyuncs.com\/img\/202209091731195.jpg\" alt=\"img\" \/> <\/p>\n<p><strong><em>\u81f3\u6b64\uff0cpostgressql\u6570\u636e\u5e93\u5b89\u88c5\u5b8c\u6210\u3002\u4ee5\u4e0b\u64cd\u4f5c\u6839\u636e\u5b9e\u9645\u9700\u6c42\u6267\u884c\u3002<\/em><\/strong><\/p>\n<p><strong><em>\u7b2c\u56db~\u7b2c\u4e03\u7ae0\u8282\u4e3b\u8981\u662f\u9488\u5bf9pg\u6570\u636e\u5e93\u7684\u5b89\u5168\u914d\u7f6e\u4fee\u6539\u3002<\/em><\/strong><\/p>\n<h2><strong>\u4e09\u3001<\/strong> \u6570\u636e\u5e93postgresql\u7b80\u5355\u4f7f\u7528<\/h2>\n<p>1\u3001\u8bbe\u7f6e\u9ed8\u8ba4\u7528\u6237postgres\u7684\u5bc6\u7801<\/p>\n<pre><code class=\"language-bash\">#\u8f93\u5165psql\u767b\u5f55\u3002\n\n[postgres@rhino104 ~]$ psql\n\npsql (11.3)\n\nType &quot;help&quot; for help.\n\n#\u4fee\u6539\u9ed8\u8ba4\u7528\u6237postgres\u7528\u6237\u7684\u5bc6\u7801\uff08postgres\uff09\n\npostgres=# \\password\n\nEnter new password: \n\nEnter it again:\n\n postgres=#<\/code><\/pre>\n<p>2\u3001\u521b\u5efa\u65b0\u7528\u6237<code>hyptest<\/code>\uff0c\u65b0\u5e93<code>hyptestdb<\/code>\uff0c\u5e76\u4e14\u8d4b\u4e88\u6743\u9650<\/p>\n<pre><code class=\"language-bash\">postgres=#create user &quot;hyptest&quot; with password &#039;hyptest&#039;;\npostgres=#create database &quot;hyptestdb&quot; with owner=&quot;hyptest&quot;;\npostgres=#grant all privileges on database hyptestdb to hyptest ;\n#\u9000\u51fa\u5f53\u524d\u767b\u5f55\npostgres=# \\q <\/code><\/pre>\n<p>3\u3001\u4f7f\u7528\u65b0\u7528\u6237\u767b\u5f55\u7cfb\u7edf<\/p>\n<pre><code class=\"language-bash\">#\u767b\u5f55\u5230\u65b0\u5efa\u7684\u7528\u6237hyptest\u7684hyptestdb\u6570\u636e\u5e93\u4e2d\u3002\npsql -U hyptest -W hyptestdb<\/code><\/pre>\n<p>\u56de\u8f66\uff0c\u8f93\u5165\u5bc6\u7801\uff1ahyptest\uff0c\u56de\u8f66\u767b\u5f55\u3002<\/p>\n<p><img src=\"https:\/\/lemon-guess.oss-cn-hangzhou.aliyuncs.com\/img\/202209091733838.jpg\" alt=\"img\" \/> <\/p>\n<p>4\u3001\u521b\u5efa\u8868test\uff0c\u5e76\u63d2\u5165\u6570\u636e\u6d4b\u8bd5\u6570\u636e\u5e93\u662f\u5426\u53ef\u4ee5\u6b63\u5e38\u4f7f\u7528<\/p>\n<pre><code class=\"language-bash\">create table test(  \n    id int ,    \n    age int,    \n    date timestamp default now() \n);\n#\u63d2\u5165\u4e00\u6761\u6570\u636e\ninsert into test values (1,1);\n#\u67e5\u8be2\u6570\u636e\u5e93\u7ed3\u679c\nselect * from test ;<\/code><\/pre>\n<p>\u67e5\u8be2\u51fa\u5982\u4e0b\u7684\u7684\u7ed3\u679c\u5373\u4e3a\u5b89\u88c5\u6210\u529f\u3002<\/p>\n<p><img src=\"https:\/\/lemon-guess.oss-cn-hangzhou.aliyuncs.com\/img\/202209091734890.jpg\" alt=\"img\" \/> <\/p>\n<h2><strong>\u56db\u3001<\/strong> \u63d2\u4ef6\u5b89\u88c5\uff08pgsql\u7528\u6237\u6267\u884c\uff09<\/h2>\n<p>1\u3001\u62f7\u8d1d\u63d2\u4ef6<\/p>\n<p>\u62f7\u8d1d<code>pgaudit-1.3.2.tar.gz<\/code>\u3001<code>pg_permission-master.zip<\/code>\u3001<code>set_user-master.zip<\/code>\u3001<code>pgbackrest-master.zip<\/code>\u5230\u5b89\u88c5\u5305\u5230\/home\/pgsql\/\u76ee\u5f55\u4e0b\uff0c\u5e76\u89e3\u538b\uff1a<\/p>\n<pre><code class=\"language-bash\">tar -zxvf pgaudit-1.3.2.tar.gz\nunzip pg_permission-master.zip\nunzip set_user-master.zip\nunzip pgbackrest-master.zip<\/code><\/pre>\n<p>2\u3001\u5b89\u88c5pgAudit<\/p>\n<p>\u5c06\u89e3\u538b\u51fa\u6765\u7684+\u76ee\u5f55\u79fb\u5165\/home\/pgsql\/postgresql-11.10\/contrib\u76ee\u5f55\u4e0b\uff0c<\/p>\n<p>mv pgaudit-1.3.2 \/home\/pgsql\/postgresql-11.10\/contrib<\/p>\n<p>cd \/home\/pgsql\/postgresql-11.10\/contrib\/pgaudit-1.3.2<\/p>\n<p>\u6267\u884cmake<\/p>\n<p><img src=\"https:\/\/lemon-guess.oss-cn-hangzhou.aliyuncs.com\/img\/202209091736562.jpg\" alt=\"img\" \/> <\/p>\n<p>\u5e76\u518d\u6b21\u6267\u884cmake install<\/p>\n<p><img src=\"https:\/\/lemon-guess.oss-cn-hangzhou.aliyuncs.com\/img\/202209091736145.jpg\" alt=\"img\" \/> <\/p>\n<p>\u6253\u5f00\u914d\u7f6e\u6587\u4ef6\uff1avi \/data01\/data\/postgresql.conf<\/p>\n<p>\u589e\u52a0\u914d\u7f6e\uff1a<\/p>\n<p>shared_preload_libraries = 'pgaudit'pgaudit.log='ddl,write'<\/p>\n<p>\u7136\u540e\u4f7f\u7528\/home\/pgsql\/pgsql\/bin\/pg_ctl -D \/data01\/data -l logfile restart\u6765\u91cd\u542fpg\u6570\u636e\u5e93\u3002<\/p>\n<p>\u4f7f\u7528psql\u547d\u4ee4\u767b\u5f55pg\uff0c\u67e5\u8be2\u9a8c\u8bc1\u63d2\u4ef6\u662f\u5426\u53ef\u7528\uff1a<\/p>\n<p><img src=\"https:\/\/lemon-guess.oss-cn-hangzhou.aliyuncs.com\/img\/202209091736156.jpg\" alt=\"img\" \/> <\/p>\n<p>3\u3001\u5b89\u88c5set_user-master<\/p>\n<p>\u5c06\u89e3\u538b\u51fa\u6765\u7684set_user-master\u76ee\u5f55\u79fb\u5165\/home\/pgsql\/postgresql-11.10\/contrib\u76ee\u5f55\u4e0b\uff1a<\/p>\n<p>mv set_user-master \/home\/pgsql\/postgresql-11.10\/contrib<\/p>\n<p>cd \/home\/pgsql\/postgresql-11.10\/contrib\/set_user-master<\/p>\n<p>\u6267\u884cmake <\/p>\n<p><img src=\"postgresql%E7%A6%BB%E7%BA%BF%E5%AE%89%E8%A3%85.assets\/wps12.jpg\" alt=\"img\" \/> <\/p>\n<p>\u6267\u884cmake install<\/p>\n<p><img src=\"postgresql%E7%A6%BB%E7%BA%BF%E5%AE%89%E8%A3%85.assets\/wps13.jpg\" alt=\"img\" \/> <\/p>\n<p>\u4f7f\u7528psql\u547d\u4ee4\u767b\u5f55pg\uff0c\u67e5\u8be2\u63d2\u4ef6\u662f\u5426\u53ef\u7528\uff1a<\/p>\n<p><img src=\"postgresql%E7%A6%BB%E7%BA%BF%E5%AE%89%E8%A3%85.assets\/wps14.jpg\" alt=\"img\" \/> <\/p>\n<p>4\u3001\u5b89\u88c5pg_permission-master<\/p>\n<p>\u5c06\u89e3\u538b\u51fa\u6765\u7684pg_permission-master\u76ee\u5f55\u79fb\u5165\/home\/pgsql\/postgresql-11.10\/contrib\u76ee\u5f55\u4e0b\uff1a<\/p>\n<p>mv pg_permission-master \/home\/pgsql\/postgresql-11.10\/contrib<\/p>\n<p>cd \/home\/pgsql\/postgresql-11.10\/contrib\/pg_permission-master<\/p>\n<p>\u6267\u884cmake install<\/p>\n<p><img src=\"https:\/\/lemon-guess.oss-cn-hangzhou.aliyuncs.com\/img\/202209091736648.jpg\" alt=\"img\" \/> <\/p>\n<p>\u4f7f\u7528psql\u547d\u4ee4\u767b\u5f55pg\uff0c\u67e5\u8be2\u63d2\u4ef6\u662f\u5426\u53ef\u7528\uff1a<\/p>\n<p><img src=\"https:\/\/lemon-guess.oss-cn-hangzhou.aliyuncs.com\/img\/202209091736562.jpg\" alt=\"img\" \/> <\/p>\n<p>5\u3001\u5b89\u88c5pgcrypto<\/p>\n<p>cd \/home\/pgsql\/postgresql-11.10\/contrib\/pgcrypto<\/p>\n<p>\u6267\u884cmake<\/p>\n<p><img src=\"https:\/\/lemon-guess.oss-cn-hangzhou.aliyuncs.com\/img\/202209091736374.jpg\" alt=\"img\" \/> <\/p>\n<p>\u518d\u6267\u884cmake install<\/p>\n<p><img src=\"https:\/\/lemon-guess.oss-cn-hangzhou.aliyuncs.com\/img\/202209091736785.jpg\" alt=\"img\" \/> <\/p>\n<p>\u4f7f\u7528psql\u547d\u4ee4\u767b\u5f55pg\uff0c\u67e5\u8be2\u63d2\u4ef6\u662f\u5426\u53ef\u7528\uff1a<\/p>\n<p><img src=\"https:\/\/lemon-guess.oss-cn-hangzhou.aliyuncs.com\/img\/202209091736165.jpg\" alt=\"img\" \/> <\/p>\n<p>5\u3001\u5b89\u88c5passwordcheck<\/p>\n<p>cd \/home\/pgsql\/postgresql-11.10\/contrib\/passwordcheck<\/p>\n<p>\u6267\u884cmake<\/p>\n<p><img src=\"https:\/\/lemon-guess.oss-cn-hangzhou.aliyuncs.com\/img\/202209091736103.jpg\" alt=\"img\" \/> <\/p>\n<p>\u518d\u6267\u884cmake install<\/p>\n<p><img src=\"https:\/\/lemon-guess.oss-cn-hangzhou.aliyuncs.com\/img\/202209091737359.jpg\" alt=\"img\" \/> <\/p>\n<p>\u6253\u5f00\u914d\u7f6e\u6587\u4ef6\uff1avi \/data01\/data\/postgresql.conf<\/p>\n<p>\u4fee\u6539\u914d\u7f6e\uff1a<\/p>\n<p>shared_preload_libraries = 'pgaudit,passwordcheck'<\/p>\n<p>\u7136\u540e\u4f7f\u7528\/home\/pgsql\/pgsql\/bin\/pg_ctl -D \/data01\/data -l logfile restart\u6765\u91cd\u542fpg\u6570\u636e\u5e93<\/p>\n<p>\u4f7f\u7528psql\u547d\u4ee4\u767b\u5f55pg\uff0c\u9a8c\u8bc1\u63d2\u4ef6\u662f\u5426\u53ef\u7528\uff1a<\/p>\n<p>\u521b\u5efa\u7528\u6237\u65f6\u5bc6\u7801\u8fc7\u77ed\u6216\u8005\u7b80\u5355\u90fd\u4e0d\u4f1a\u521b\u5efa\u6210\u529f\u3002<\/p>\n<p><img src=\"https:\/\/lemon-guess.oss-cn-hangzhou.aliyuncs.com\/img\/202209091737236.jpg\" alt=\"img\" \/> <\/p>\n<p>6\u3001\u5b89\u88c5pgbackrest-master.zip<\/p>\n<p>cd  \/home\/pgsql\/pgbackrest-master\/src<\/p>\n<p>\u6267\u884c.\/configure\u8fdb\u884c\u914d\u7f6e\uff1a<\/p>\n<p><img src=\"https:\/\/lemon-guess.oss-cn-hangzhou.aliyuncs.com\/img\/202209091737869.jpg\" alt=\"img\" \/> <\/p>\n<p>\u6267\u884cmake\u547d\u4ee4\uff1a<\/p>\n<p><img src=\"https:\/\/lemon-guess.oss-cn-hangzhou.aliyuncs.com\/img\/202209091737181.jpg\" alt=\"img\" \/> <\/p>\n<p>\u6267\u884cmake install<\/p>\n<p><img src=\"https:\/\/lemon-guess.oss-cn-hangzhou.aliyuncs.com\/img\/202209091737726.jpg\" alt=\"img\" \/> <\/p>\n<p>\u82e5\u51fa\u73b0\u5982\u4e0a\u5f02\u5e38\uff0c\u5219\u5207\u6362\u5230root\u7528\u6237\u6765\u5b89\u88c5\uff1a<\/p>\n<p><img src=\"https:\/\/lemon-guess.oss-cn-hangzhou.aliyuncs.com\/img\/202209091737812.jpg\" alt=\"img\" \/> <\/p>\n<p>\u5176\u4e2d\uff0cpgbackrest\u63d2\u4ef6\u4e0d\u4f1a\u5728pg\u6570\u636e\u5e93pg_available_extensions\u8868\u4e2d\u5b58\u5728\uff0c\u4f1a\u5728\u547d\u4ee4\u884c\u6709pgbackset\u547d\u4ee4\u53ef\u7528<\/p>\n<h2><strong>\u4e94\u3001<\/strong> \u7cfb\u7edf\u4fee\u6539<\/h2>\n<p>1\u3001\u521b\u5efapostgresql.service<\/p>\n<p>\u5207\u6362root\u7528\u6237\uff1asu - root<\/p>\n<p>cd \/usr\/lib\/systemd\/system\uff0c\u521b\u5efapostgresql.service<\/p>\n<p>\u793a\u4f8b\u6a21\u677f\u6587\u4ef6\uff1a<\/p>\n<p><img src=\"postgresql%E7%A6%BB%E7%BA%BF%E5%AE%89%E8%A3%85.assets\/wps27.png\" alt=\"img\" \/> <\/p>\n<p>vi postgresql.service\uff0c\u5176\u4e2d\u6807\u9ec4\u5904\u6839\u636e\u5b9e\u9645\u914d\u7f6e\u4fee\u6539\u3002<\/p>\n<pre><code class=\"language-bash\">[Unit]\nDescription=PostgreSQL database server\nAfter=network.target\n\n[Service]\nType=forking\n\nUser=pgsql\n\nGroup=pgsql\n\n# Port number for server to listen on\nEnvironment=PGPORT=65432\n\n# Location of database directory\nEnvironment=PGDATA=\/data01\/data\n\n# Where to send early-startup messages from the server (before the logging\n# options of postgresql.conf take effect)\n# This is normally controlled by the global default set by systemd\n# StandardOutput=syslog\n\n# Disable OOM kill on the postmaster\nOOMScoreAdjust=-1000\n#ExecStartPre=\/usr\/bin\/postgresql-check-db-dir ${PGDATA}\nExecStart=\/home\/pgsql\/pgsql\/bin\/pg_ctl start -D ${PGDATA} -s -o &quot;-p ${PGPORT}&quot; -w -t 300\nExecStop=\/home\/pgsql\/pgsql\/bin\/pg_ctl stop -D ${PGDATA} -s -m fast\nExecReload=\/home\/pgsql\/pgsql\/bin\/pg_ctl reload -D ${PGDATA} -s\n\n# Give a reasonable amount of time for the server to start up\/shut down\nTimeoutSec=300\n\n[Install]\nWantedBy=multi-user.target<\/code><\/pre>\n<p>\u4fee\u6539\u5b8c\u6210\u540e\uff0c\u4fdd\u5b58\u3002<\/p>\n<p>\u6267\u884c\u547d\u4ee4\uff1a<code>systemctl enable postgresql.service<\/code>\u4f7f\u4e4b\u751f\u6548\u3002<\/p>\n<p>\u7136\u540e\u5c31\u53ef\u4ee5\u6267\u884c<code>systemctl start\/stop\/status postgresql.service<\/code>\u6765\u63a7\u5236pg\u7684\u542f\u505c\u548c\u72b6\u6001\u67e5\u770b\u3002<\/p>\n<p>2\u3001\u786e\u4fdd\u4f7f\u7528FIPS 140-2 OpenSSL\u52a0\u5bc6\uff08\u6682\u4e0d\u6267\u884c\uff09<\/p>\n<pre><code class=\"language-bash\">yum -y install dracut-fips\n\ndracut -f\n\n\u4fee\u6539\/etc\/default\/grub\uff0c\u7ed9GRUB_CMDLINE_LINUX\u589e\u52a0\u4e0afips=1\n\n\u5982\u679c\u7cfb\u7edf\u4eceBIOS\u542f\u52a8\uff0c\u5219\u4f7f\u7528\uff1a\n\ngrub2-mkconfig -o \/boot\/grub2\/grub.cfg\n\n\u5982\u679c\u7cfb\u7edf\u4eceEFI\u542f\u52a8\uff0c\u5219\u4f7f\u7528:\n\ngrub2-mkconfig -o \/boot\/efi\/EFI\/centos\/grub.cfg\n\n\u82e5\u4e0d\u786e\u5b9a\uff0c\u5219\u4e24\u4e2a\u547d\u4ee4\u90fd\u6267\u884c\u3002\n\n\u4f7f\u7528reboot\u91cd\u542f\u64cd\u4f5c\u7cfb\u7edf\u3002\n\nPs: \u865a\u62df\u673a\u589e\u52a0fips=1\u91cd\u542f\u65f6\uff0c\u7cfb\u7edf\u542f\u52a8\u4f1a\u6709\u95ee\u9898\uff0c\u6682\u4e0d\u77e5\u5982\u4f55\u89e3\u51b3\uff0c\u56e0\u6b64\u672a\u4fee\u6539\u3002\n\n2\u3001\u786e\u4fddSSL\u5df2\u542f\u7528\u5e76\u914d\u7f6e\u6b63\u786e\n\nsu - rootcd \/data01\/data\u8f93\u5165\u547d\u4ee4\uff1aopenssl req -new -text -out server.req<\/code><\/pre>\n<p>\u5176\u4e2d\uff0c\u6807\u9ec4\u5904\u53ef\u6309\u7167\u5b9e\u9645\u9700\u6c42\u4fee\u6539<\/p>\n<p><img src=\"https:\/\/lemon-guess.oss-cn-hangzhou.aliyuncs.com\/img\/202209091738553.png\" alt=\"image-20220909173824193\" \/> <\/p>\n<p>\u4f7f\u7528\u547d\u4ee4\uff1a<\/p>\n<p>openssl rsa -in privkey.pem -out server.key &amp;&amp; rm privkey.pem<\/p>\n<p>Enter pass phrase for privkey.pem:123456writing RSA key<\/p>\n<p>\u4f7f\u7528\u547d\u4ee4\uff1a<\/p>\n<p>openssl req -x509 -in server.req -text -key server.key -out server.crt<\/p>\n<p>chmod og-rwx server.key<\/p>\n<p>\u4fee\u6539postgresql.conf\u6587\u4ef6\uff0c\u589e\u52a0\u5982\u4e0b\u5185\u5bb9\uff1a<\/p>\n<p>ssl = onssl_ciphers = 'ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH'ssl_cert_file = 'server.crt'ssl_key_file = 'server.key'password_encryption = scram-sha-256<\/p>\n<p>\u4fee\u6539\u7528\u6237\uff1a<\/p>\n<p>chown pgsql:pgsql server*<\/p>\n<p>\u91cd\u542fpg\uff1a<\/p>\n<p>systemctl restart postgresql.service<\/p>\n<p>\u5047\u5982\u91cd\u542f\u5931\u8d25\uff0c\u62a5\u5982\u4e0b\u5f02\u5e38\uff1a<\/p>\n<p><img src=\"https:\/\/lemon-guess.oss-cn-hangzhou.aliyuncs.com\/img\/202209091738969.jpg\" alt=\"img\" \/> <\/p>\n<p>\u5219\u4f7f\u7528chmod 0600 \/data01\/data\/server*\uff0c\u7136\u540e\u518d\u6b21\u91cd\u542f\u3002<\/p>\n<p>\u91cd\u542f\u5b8c\u6210\uff0c\u767b\u5f55\u5ba2\u6237\u7aef\uff0c\u4f7f\u7528show ssl;\u6765\u67e5\u770bssl\u662f\u5426\u542f\u52a8\u3002<\/p>\n<p>\u91cd\u542f\u540e\u5207\u6362\u5230pgsql\u767b\u5f55\u9700\u8981\u91cd\u65b0source\u73af\u5883\u53d8\u91cf\uff1asu - pgsqlcd  ~source .\/.bash_profile <\/p>\n<p><img src=\"https:\/\/lemon-guess.oss-cn-hangzhou.aliyuncs.com\/img\/202209091738052.jpg\" alt=\"img\" \/> <\/p>\n<p>\u786e\u5b9a\u6587\u4ef6 \/data01\/data\/server.key\u5b58\u5728<\/p>\n<p>\u786e\u5b9a\u6587\u4ef6 \/data01\/data\/server.crt\u5b58\u5728<\/p>\n<p>4\u3001\u7981\u7528postgresql\u7528\u6237\u8fdc\u7a0b\u767b\u5f55\uff08\u4e0d\u6267\u884c\uff09<\/p>\n<p>\u7f16\u8f91\/etc\/passwd\u6587\u4ef6\uff0c\u5c06pg\u7684\u7ba1\u7406\u7528\u6237\uff08pgsql\uff09\u6240\u5728\u884c\u6539\u4e3a\/sbin\/nologin\u6216\u8005\/bin\/false<\/p>\n<p>Ps:\u4fee\u6539\u5b8c\u6210\u540e\u5c06\u4e0d\u80fd\u4f7f\u7528\u7ba1\u7406\u7528\u6237\uff08pgsql\uff09\u8fdc\u7a0b\u767b\u5f55<\/p>\n<h2><strong>\u516d\u3001<\/strong> \u914d\u7f6e\u4fee\u6539<\/h2>\n<p>1\u3001\u65e5\u5fd7\u914d\u7f6e\u4fee\u6539<\/p>\n<p>\u786e\u4fdd\u65e5\u5fd7\u91c7\u96c6\u5668\u5df2\u542f\u7528<\/p>\n<p>\u4f7f\u7528psql\u547d\u4ee4\u8fdb\u5165pg\u7684\u64cd\u4f5c\u7ec8\u7aef\uff0c\u6267\u884c\u8bed\u53e5\uff1a<\/p>\n<p>alter system set logging_collector = 'on';<\/p>\n<p>alter system set log_truncate_on_rotation = 'on';<\/p>\n<p>alter system set log_connections = 'on';<\/p>\n<p>alter system set log_disconnections = 'on';<\/p>\n<p>alter system set log_statement='ddl';<\/p>\n<p>alter system set log_timezone = 'GMT';<\/p>\n<p>alter system set log_directory='logs';<\/p>\n<p>alter system set log_filename='postgresql-%Y%m%d.log';<\/p>\n<p>select pg_reload_conf();<\/p>\n<p>\u7136\u540e\u91cd\u542fpg\uff1a<\/p>\n<p>systemctl restart postgresql.service\uff08root\u7528\u6237\u6267\u884c\uff09<\/p>\n<p>\u67e5\u770b\u662f\u5426\u751f\u6548\uff1a<\/p>\n<p>systemctl status postgresql|grep 'ago$'<\/p>\n<p><img src=\"https:\/\/lemon-guess.oss-cn-hangzhou.aliyuncs.com\/img\/202209091738073.jpg\" alt=\"img\" \/> <\/p>\n<p>2\u3001\u786e\u4fdd\u521b\u5efa\u4e00\u4e2a\u4ec5\u590d\u5236\u7684\u7528\u6237\u5e76\u5c06\u5176\u7528\u4e8e\u6d41\u5f0f\u590d\u5236<\/p>\n<p>Ps\uff1apg\u65e0\u4e3b\u5907\u53ef\u4ee5\u4e0d\u64cd\u4f5c\u8be5\u9879<\/p>\n<p>\u4f7f\u7528psql\u547d\u4ee4\u767b\u5f55pg\u5ba2\u6237\u7aef\uff0c\u6267\u884c\uff1a<\/p>\n<p>create user replication_user REPLICATION encrypted password 'XXX';<\/p>\n<p>select rolname from pg_roles where rolreplication is true;<\/p>\n<p>3\u3001\u4fee\u6539\u6743\u9650<\/p>\n<p>1\uff09\u6267\u884c\u4e0b\u5217\u547d\u4ee4\uff1a<\/p>\n<p>su  pgsql<\/p>\n<p>cd  ~<\/p>\n<p>ls -ld .{bash_profile,bashrc}<\/p>\n<p>echo &quot;umask 077&quot; &gt;&gt; .bash_profile<\/p>\n<p>echo &quot;umask 077&quot; &gt;&gt; .bash_rc<\/p>\n<p>source .bash_profile<\/p>\n<p>source .bash_rc<\/p>\n<p>umask<\/p>\n<p>2\uff09\u786e\u4fddPostgreSQL pg_wheel\u7ec4\u6210\u5458\u6b63\u786e<\/p>\n<p>\u5207\u6362\u5230root\u7528\u6237\uff0c\u6267\u884c\u547d\u4ee4\uff1a<\/p>\n<p>groupadd pg_wheel &amp;&amp; getent group pg_wheel<\/p>\n<p>gpasswd -a pgsql pg_wheel   \u5176\u4e2dpgsql\u4e3apg\u7684\u7ba1\u7406\u7528\u6237<\/p>\n<p>awk -F':' '\/pg_wheel\/{print $4}' \/etc\/group<\/p>\n<p>3\uff09\u6587\u4ef6\u76ee\u5f55\u6743\u9650\u4fee\u6539<\/p>\n<p>\u4fee\u6539pg\u7684\u76ee\u5f55\u6743\u9650<\/p>\n<p>chown pgsql:pgsql \/home\/pgsql\/pgsql<\/p>\n<p>chmod 0700 \/home\/pgsql\/pgsql<\/p>\n<p>\u4fee\u6539pg\u7684\u65e5\u5fd7\u6743\u9650<\/p>\n<p>chown pgsql:pgsql \/data01\/data\/logs<\/p>\n<p>chmod 0700 \/data01\/data\/logs<\/p>\n<p>\u4fee\u6539data\u76ee\u5f55\u6743\u9650<\/p>\n<p>chmod 700 \/data01\/data<\/p>\n<p>chown pgsql:pgsql \/data01\/data<\/p>\n<p>\u4fee\u6539\u5907\u4efd\u76ee\u5f55\u7684\u6743\u9650<\/p>\n<p>Ps\uff1apg\u65e0\u4e3b\u5907\u53ef\u4ee5\u4e0d\u64cd\u4f5c\u8be5\u9879<\/p>\n<p>chown pgsql:pgsql \/home\/pgsql\/pgsql\/backups<\/p>\n<p>chmod 0700 \/home\/pgsql\/pgsql\/backups<\/p>\n<p>\u4fee\u6539\u5b8c\u6210\u540e\u91cd\u542fpg\u67e5\u770b\u662f\u5426\u80fd\u6b63\u5e38\u767b\u5165\u3002<\/p>\n<p>4\u3001\u4fee\u6539pg_hba.conf<\/p>\n<p>1\uff09\u4fee\u6539pg_hba.conf\u4e2d\u672c\u5730\u8fde\u63a5\u914d\u7f6e\u4e3apeer\u65b9\u5f0f\u6821\u9a8c<\/p>\n<p>local  all      all           peer<\/p>\n<p>2\uff09\u4fe1\u4efb\u9879\u4fee\u6539<\/p>\n<p>vi \/data01\/data\/pg_hba.conf\u4e2d\u4fee\u6539\u5269\u4e0b\u6240\u6709\u9879\u914d\u7f6e\u4e3a\u975etrust\u65b9\u6cd5\uff0c\u914d\u7f6e\u4e3aSCRAM-SHA-256<\/p>\n<p><img src=\"https:\/\/lemon-guess.oss-cn-hangzhou.aliyuncs.com\/img\/202209091739031.jpg\" alt=\"img\" \/> <\/p>\n<p>\u767b\u5f55pg\u5ba2\u6237\u7aef\u6267\u884c\u547d\u4ee4\uff1aset password_encryption to 'scram-sha-256';<\/p>\n<p>\u4fee\u6539\u7528\u6237\u5bc6\u7801\uff1aalter user pgsql with password '***';<\/p>\n<p>\u5e76\u4f7f\u7528\u547d\u4ee4\uff1aselect * from pg_authid where rolname='pgsql';\u6765\u67e5\u770b\u7528\u6237\u7684\u52a0\u5bc6\u65b9\u5f0f\u3002\u6574\u4e2a\u64cd\u4f5c\u5982\u4e0b\u56fe\u6240\u793a\uff1a<\/p>\n<p><img src=\"https:\/\/lemon-guess.oss-cn-hangzhou.aliyuncs.com\/img\/202209091739684.jpg\" alt=\"img\" \/> <\/p>\n<p>\u6700\u540e\u547d\u4ee4\u884c\u6267\u884cpg_ctl reload\u547d\u4ee4\u91cd\u65b0\u52a0\u8f7dpg\u7684\u914d\u7f6e\u6587\u4ef6\u3002<\/p>\n<p>3\uff09\u5bf9\u4e8ehost\u6216\u8005hostssl\u6216\u8005hostnossl\u5f00\u5934\u7684\u8bb0\u5f55\uff0cip\u9664\u4e86127.0.0.1\/32\uff0c\u4e0d\u5141\u8bb8\u8bbe\u7f6e\u5176\u4ed6ip\u3002<\/p>\n<p>4\uff09\u5728\/data01\/data\/pg_hba.conf\u4e2d\u589e\u52a0\uff1a<\/p>\n<p>hostssl replication replication_user 0.0.0.0\/0 md5<\/p>\n<p>\u5728\u4f7f\u7528pg_basebackup\u8fdb\u884c\u5907\u4efd\u548c\u6062\u590d\u65f6\u4f7f\u7528\u521b\u5efa\u7684\u8fd9\u4e2a\u590d\u5236\u7528\u6237\u548c\u5bc6\u7801\u3002<\/p>\n<p>Ps\uff1apg\u65e0\u4e3b\u5907\u53ef\u4ee5\u4e0d\u64cd\u4f5c\u8be5\u9879<\/p>\n<p>\u4fee\u6539\u5b8c\u6210\u4f7f\u7528\/home\/pgsql\/pgsql\/bin\/pg_ctl -D \/data01\/data -l logfile restart\u547d\u4ee4\u91cd\u542f<\/p>\n<p>5\u3001\u767b\u5f55pg\u5ba2\u6237\u7aef\u4fee\u6539<\/p>\n<p>pg\u5ba2\u6237\u7aef\u767b\u5f55\u540e\u6267\u884c\uff1a<\/p>\n<p>REVOKE CREATE ON SCHEMA PUBLIC FROM public;<\/p>\n<p>REVOKE ALL ON pg_settings FROM PUBLIC;<\/p>\n<h2><strong>\u4e03\u3001<\/strong> \u5177\u4f53\u73b0\u573a\u73af\u5883\u7684\u6539\u52a8<\/h2>\n<p>\u4ee5\u4e0b\u6761\u76ee\u5747\u662f\u9488\u5bf9\u5177\u4f53\u73b0\u573a\u7684\u9700\u6c42\u6765\u6539\u52a8\u3002<\/p>\n<p>1\u3001\u786e\u4fdd\u64a4\u9500\u8fc7\u591a\u7684\u7ba1\u7406\u6743\u9650<\/p>\n<p>\u5bf9\u4e8e\u5e94\u7528\u7528\u6237\uff08\u975e\u8d85\u7ea7\u7528\u6237\uff09\u6765\u8bb2\uff0c\u4e0d\u5e94\u8be5\u8d4b\u4e88\u989d\u5916\u7684\u7ba1\u7406\u6743\u9650\u3002\uff08\u9ec4\u8272\u90e8\u5206\u6839\u636e\u5b9e\u9645\u60c5\u51b5\u4fee\u6539\uff09<\/p>\n<p>l \u53ef\u901a\u8fc7\\du\u67e5\u770b\u6240\u6709\u7528\u6237<\/p>\n<p>\u6267\u884c\uff1a<\/p>\n<p>psql -c &quot;ALTER ROLE appuser NOSUPERUSER;&quot;<\/p>\n<p>psql -c &quot;ALTER ROLE appuser NOCREATEROLE;&quot;<\/p>\n<p>psql -c &quot;ALTER ROLE appuser NOCREATEDB;&quot;<\/p>\n<p>psql -c &quot;ALTER ROLE appuser NOREPLICATION;&quot;<\/p>\n<p>psql -c &quot;ALTER ROLE appuser NOBYPASSRLS;&quot;<\/p>\n<p>psql -c &quot;ALTER ROLE appuser NOINHERIT;&quot;<\/p>\n<p>Ps:\u9700\u8981\u6839\u636e\u73b0\u573a\u5177\u4f53\u60c5\u51b5\u79fb\u9664\u5bf9\u5e94\u7684\u7528\u6237\u591a\u4f59\u7684\u7ba1\u7406\u6743\u9650<\/p>\n<p>2\u3001\u786e\u4fdd\u884c\u7ea7\u522b\u5b89\u5168\u6027\uff08RLS\uff09\u914d\u7f6e\u6b63\u786e<\/p>\n<p>\u8be5\u9879\u662f\u6307\u73b0\u573a\u521b\u5efa\u7684\u8868\u8981\u7b26\u5408\u8be5\u7b56\u7565\uff0c\u5e76\u975egp\u7684\u67d0\u4e2a\u914d\u7f6e\u6216\u8005\u63d2\u4ef6\uff0c\u800c\u662f\u5b9e\u9645\u521b\u5efa\u7684\u67d0\u5f20\u8868\u7684\u7b56\u7565\u5206\u914d\u3002<\/p>\n<p>\u793a\u4f8b\uff0c\u6bd4\u5982\u521b\u5efa\u6d4b\u8bd5\u8868:<\/p>\n<p>create table test_row(id serial primary key, username text, log_event text);<\/p>\n<p>Insert into test_row(username, log_event) values('user1','user1:aaa');<\/p>\n<p>Insert into test_row(username, log_event) values('user1','user1:bbb');<\/p>\n<p>Insert into test_row(username, log_event) values('user2','user2:aaa');<\/p>\n<p>Insert into test_row(username, log_event) values('user2','user2:bb');<\/p>\n<p>Insert into test_row(username, log_event) values('user3','user3:aaa');<\/p>\n<p>Insert into test_row(username, log_event) values('user3','user3:aaaaaa');<\/p>\n<p>Insert into test_row(username, log_event) values('user4','user4:aaa');<\/p>\n<p>\u7136\u540e\u521b\u5efa\u6d4b\u8bd5\u7528\u6237user1\uff0cuser2\uff0cuser3.<\/p>\n<p>create role user1 with login;<\/p>\n<p>create role user2 with login;<\/p>\n<p>create role user3 with login;<\/p>\n<p>grant select on test_row to user1, user2, user3;<\/p>\n<p>grant usage on schema public to user1, user2, user3;<\/p>\n<p>\u7136\u540epsql\u547d\u4ee4\u9ed8\u8ba4\u7528\u6237\u767b\u9646\u540e\uff0c\u4f7f\u7528select * from public.test_row;\u67e5\u770b\u67e5\u8be2\u51fa\u6765\u7684\u6570\u636e\u3002<\/p>\n<p><img src=\"https:\/\/lemon-guess.oss-cn-hangzhou.aliyuncs.com\/img\/202209091739775.jpg\" alt=\"img\" \/> <\/p>\n<p>\u518d\u521b\u5efa\u7b56\u7565,\u9650\u5236\u6570\u636e\u5e93\u767b\u9646\u7528\u6237\u53ea\u80fd\u67e5\u770b\u5f53\u524d\u7528\u6237\u7684\u65e5\u5fd7\u8bb0\u5f55\uff1a<\/p>\n<p>create policy policy_test_row on test_row for select to public using (username=current_user);<\/p>\n<p>select relname,relrowsecurity from pg_class where relname = 'test_row';<\/p>\n<p>alter table test_row enable row level security;<\/p>\n<p>select relname,relrowsecurity from pg_class where relname = 'test_row';<\/p>\n<p>\u6d4b\u8bd5\uff1a<\/p>\n<p>\\c postgres user1<\/p>\n<p><img src=\"postgresql%E7%A6%BB%E7%BA%BF%E5%AE%89%E8%A3%85.assets\/wps34.jpg\" alt=\"img\" \/> <\/p>\n<p>\\c postgres user2<\/p>\n<p><img src=\"https:\/\/lemon-guess.oss-cn-hangzhou.aliyuncs.com\/img\/202209091739176.jpg\" alt=\"img\" \/> <\/p>\n<p>3\u3001\u9ed8\u8ba4\u7528\u6237\u540d\u5e94\u5220\u9664-\u201cpostgres\u7528\u6237\u4e0d\u5b58\u5728\u201d<\/p>\n<p>\u5220\u9664postgres\u7528\u6237\u540d\uff0c\u4f7f\u7528\u5176\u4ed6\u7528\u6237\u540d\u66ff\u4ee3\u3002<\/p>\n<p>l \u67e5\u770b\u6240\u6709\u7528\u6237\uff1a\\du<\/p>\n<p><img src=\"https:\/\/lemon-guess.oss-cn-hangzhou.aliyuncs.com\/img\/202209091739400.jpg\" alt=\"img\" \/> <\/p>\n<p>l \u5220\u9664postgres\u7528\u6237\u3002<\/p>\n<p>drop user postgres;<\/p>\n<p>l \u5047\u5982\u73b0\u573a\u5b58\u5728postgres\u7528\u6237\uff0c\u53ef\u4ee5\u521b\u5efa\u53e6\u5916\u4e00\u4e2a\u8d85\u7ea7\u7528\u6237\u4ee3\u66ff\u3002<\/p>\n<p>create user super;alter user super with Superuser Createrole CreateDB Replication BypassRLS;<\/p>\n<p>4\u3001\u7528\u6237\u89d2\u8272\u4e0d\u5e94\u5177\u6709\u8fc7\u671f\u7684\u5bc6\u7801<\/p>\n<p>\u5bf9\u4e8e\u62e5\u6709\u8fc7\u671f\u5bc6\u7801\u7684\u7528\u6237\u53ef\u4ee5\u5220\u9664\uff0c\u4f7f\u7528DROP ROLE <ROLE_NAME>\u6765\u5220\u9664\u3002<\/p>\n<p>\u4f7f\u7528select * from pg_user;\u6765\u67e5\u770b\u5f53\u524d\u73af\u5883\u7684\u6240\u6709\u7528\u6237\uff0cvaluntil\u5c55\u793a\u7684\u4e3a\u5bc6\u7801\u8fc7\u671f\u65f6\u95f4\u3002<\/p>\n<p><img src=\"https:\/\/lemon-guess.oss-cn-hangzhou.aliyuncs.com\/img\/202209091739648.jpg\" alt=\"img\" \/> <\/p>\n<p>5\u3001\u6570\u636e\u5e93\u4e0d\u5141\u8bb8\u65e0\u9650\u8fde\u63a5<\/p>\n<p>\u914d\u7f6e\u6307\u5b9a\u5177\u4f53\u6570\u636e\u5e93\u8fde\u63a5\u7684\u4e2a\u6570\u9650\u5236\uff0c\u9700\u8981\u73b0\u573a\u6839\u636e\u9700\u6c42\u8bc4\u4f30\u4fee\u6539\u3002<\/p>\n<p>\u767b\u5f55pg\u5ba2\u6237\u7aef\uff0c\u6267\u884c\u547d\u4ee4\uff1a<\/p>\n<p>UPDATE pg_database SET datconnlimit=<CONN_LIMIT_VALUE> WHERE datname=\u2019<DATABASE_NAME>\u2019<\/p>\n<p><img src=\"postgresql%E7%A6%BB%E7%BA%BF%E5%AE%89%E8%A3%85.assets\/wps38.jpg\" alt=\"img\" \/> <\/p>\n<p>\u6807\u9ec4\u90e8\u5206\u9700\u8981\u6839\u636e\u5177\u4f53\u73b0\u573a\u9700\u6c42\u4fee\u6539\uff1a<\/p>\n<p><CONN_LIMIT_VALUE>-------\u8fde\u63a5\u4e2a\u6570\u9650\u5236<\/p>\n<p><DATABASE_NAME>---------\u6570\u636e\u5e93\u540d\u79f0<\/p>\n<p>6\u3001\u6570\u636e\u5e93\u6a21\u677f\u8bbe\u7f6e<\/p>\n<p>\u6839\u636e\u73b0\u573a\u5177\u4f53\u7684\u6a21\u677f\u6570\u636e\u5e93\u540d\u79f0\u6765\u8bbe\u7f6e\uff0c\u914d\u7f6e\u4e3afalse\uff0c\u5219\u6ca1\u6709\u4eba\u80fd\u8fde\u63a5\u5230\u8fd9\u4e2a\u6570\u636e\u5e93\uff0c\u6bd4\u5982template0\u5c31\u9ed8\u8ba4\u8bbe\u7f6e\u4e3afalse\u7528\u6765\u4fdd\u62a4\u6a21\u677f\u6570\u636e\u5e93template0\u4e0d\u88ab\u4fee\u6539\u3002<\/p>\n<p>\u767b\u5f55pg\u5ba2\u6237\u7aef\uff0c\u6267\u884c\u547d\u4ee4\uff1a<\/p>\n<p>UPDATE pg_database SET datallowconn =false WHERE datname=<DATABASE_NAME>;<\/p>\n<p>\u6807\u9ec4\u90e8\u5206\u9700\u8981\u6839\u636e\u5177\u4f53\u73b0\u573a\u9700\u6c42\u4fee\u6539\uff1a<\/p>\n<p><DATABASE_NAME>---------\u6570\u636e\u5e93\u540d\u79f0<\/p>\n<p>7\u3001pg_hba.conf\u4e2d\u5220\u9664\u6240\u6709\u6570\u636e\u5e93\u3001\u7528\u6237\u3001\u5730\u5740\u4e3aall\u7684\u9879<\/p>\n<p>\u9700\u8981\u6839\u636e\u73b0\u573a\u9700\u6c42\u914d\u7f6e\u4fee\u6539\uff0c\u5c06\u4e0d\u540c\u7684\u8fde\u63a5\u5730\u5740\u914d\u7f6e\u6307\u5b9a\u5177\u4f53\u7684\u7528\u6237\u548c\u6570\u636e\u5e93\uff0c\u5982\u4e0b\u56fe\uff0c\u6807\u7ea2\u7684DATABASE\u3001USER\u3001ADDRESS\u4e0d\u80fd\u5747\u4e3aall\u3002<\/p>\n<p>![img](https:\/\/lemon-guess.oss-cn-hangzhou.aliyuncs.com\/img\/202209091739213.jpg) <\/p>\n<p>8\u3001\u9650\u5236\u5bc6\u7801\u5bff\u547d<\/p>\n<p>\u6839\u636e\u73b0\u573a\u5177\u4f53\u9700\u6c42\u4fee\u6539\u3002\u4fee\u6539\u503c\u5728\u8981\u6c42\u8303\u56f4\u5185\uff0c\u5982\u6709\u9700\u6c42\u4fee\u6539\uff0c<\/p>\n<p>\u767b\u5f55pg\u5ba2\u6237\u7aef\uff0c\u6267\u884c\u4fee\u6539\u8bed\u53e5\uff1a:<\/p>\n<p>alter role test valid until '2021-01-30 17:00:00';<\/p>\n<p>\u6807\u9ec4\u7684\u7528\u6237\u548c\u65f6\u95f4\u9700\u8981\u6839\u636e\u5177\u4f53\u60c5\u51b5\u914d\u7f6e\u3002<\/p>\n<p>\u4e5f\u53ef\u4ee5\u4f7f\u7528\u5982\u4e0b\u547d\u4ee4\u6765\u67e5\u770b\u6240\u6709\u7528\u6237\u7684\u5bc6\u7801\u8fc7\u671f\u65f6\u95f4\uff08valuntil\u5217\uff09\u3002<\/p>\n<p>![img](https:\/\/lemon-guess.oss-cn-hangzhou.aliyuncs.com\/img\/202209091739524.jpg) <\/p>\n<p># \u9644\u5f55<\/p>\n<p>**\u4e00\u3001yum\u6e90\u64cd\u4f5c**<\/p>\n<p>1\u3001\u6302\u8f7d\u955c\u50cf<\/p>\n<p>#\u65b0\u5efa\u6302\u8f7d\u76ee\u5f55\uff1amkdir -p \/mnt\/cdrom #\u6302\u8f7d\u64cd\u4f5c\u7cfb\u7edfiso\u955c\u50cf\u6587\u4ef6\uff1amount -o loop \/root\/centos7\/CentOS-7-x86_64-Everything-1804.iso \/mnt\/cdrom<\/p>\n<p>\u6ce8\uff1aiso\u6587\u4ef6\u5fc5\u987b\u548c\u5b9e\u9645\u64cd\u4f5c\u7cfb\u7edf\u7248\u672c\u4fdd\u6301\u4e00\u81f4\uff01\u53ef\u6267\u884ccat \/etc\/redhat-release\u67e5\u770b\u3002<\/p>\n<p>2\u3001\u5907\u4efd\u5e76\u5220\u9664\u5176\u5b83\u6e90\u6587\u4ef6<\/p>\n<p>cd \/etc\/yum.repos.d\/tar -zcvf repo.tar.gz .\/*rm -rf CentOS*<\/p>\n<p>3\u3001\u4fee\u6539yum\u6e90<\/p>\n<p>| vim \/etc\/yum.repos.d\/cdrom.repo                              |<br \/>\n| ------------------------------------------------------------ |<br \/>\n| \u4fee\u6539\u6587\u4ef6\u5185\u5bb9\uff1a[cdrom]name=cdrombaseurl=file:\/\/\/mnt\/cdromenabled=1gpgcheck=0 |<\/p>\n","protected":false},"excerpt":{"rendered":"<p>postgresql \u4e00\u3001 \u5b89\u88c5\u8bf4\u660e \u4e0d\u80fd\u548cgreenplum\u5b89\u88c5\u5728\u4e00\u53f0\u673a\u5668\u3002 \u4e8c\u3001\u6570\u636e\u5e93postgresql\u5b89\u88c5 1\u3001\u8d44\u6e90\u51c6\u5907 \u5b89\u88c5\u8fc7   \u2026 &#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0},"categories":[36],"tags":[91],"_links":{"self":[{"href":"\/index.php?rest_route=\/wp\/v2\/posts\/1303"}],"collection":[{"href":"\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1303"}],"version-history":[{"count":1,"href":"\/index.php?rest_route=\/wp\/v2\/posts\/1303\/revisions"}],"predecessor-version":[{"id":1304,"href":"\/index.php?rest_route=\/wp\/v2\/posts\/1303\/revisions\/1304"}],"wp:attachment":[{"href":"\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1303"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1303"},{"taxonomy":"post_tag","embeddable":true,"href":"\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1303"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}