pgsql使用OpenSSL添加ssl加密

博客介绍了PostgreSQL使用OpenSSL实现SSL加密的配置方法。包括服务端生成签名key、删除passphrase、自签名证书、修改权限和参数、重启数据库等操作,还可设置强制使用或不使用SSL连接;客户端需有OpenSSL包并可设置SSL使用情况,且只需在主库创建相关文件。

openssl.md

服务端

  • 查看当前目录 openssl version -d
  • 生成签名的key
openssl req -new -text -out server.req -subj '/C=CN/ST=Zhejiang/L=Hangzhou/O=dbpaas/CN=dbpaas-ip-port' -passout pass:'xxx'

    -passourt  意思是对输出文件的加密密码
  • 删除passphrase
openssl rsa -in privkey.pem -out server.key  -passin pass:'xxx'
        -passin  这里是设置输入文件需要的密码
rm -f privkey.pem
  • turn the certificate into a self-signed certificate and to copy the key and certificate to where the server will look for them
openssl req -x509 -in server.req -text -key server.key -out server.crt
  • 修改权限
chmod 600 server.key
  • 拷贝
mv -f server.crt server.key $PGDATA
  • 修改参数
ssl = on 
ssl_cert_file = 'server.crt'              # (change requires restart)
ssl_key_file = 'server.key' 

下面的不用改,pg默认
ssl_ciphers = 'DEFAULT:!LOW:!EXP:!MD5:@STRENGTH'        # allowed SSL ciphers
                                            # (change requires restart)
ssl_renegotiation_limit = 512MB   # amount of data between renegotiations
  • 重启数据库
pg_ctl restart -m fast

会有 SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256)
  • 用ssl插件 sslinfo 查看ssl相关信息
create extension sslinfo;
    CREATE EXTENSION
digoal=# select ssl_is_used();
 ssl_is_used 
-------------
 t
(1 row)
digoal=# select ssl_cipher();
     ssl_cipher     
--------------------
 DHE-RSA-AES256-SHA
(1 row)
digoal=# select ssl_version();
 ssl_version 
-------------
 TLSv1
(1 row)
  • 可以设置pg_hba.conf强制使用ssl连接数据库
    • 把以前的host改为hostssl这就是强制客户端使用ssl连接 eg: hostssl all all 0.0.0.0/0 md5
    • 使用host的话优先使用ssl认证
    • hostnossl 强制不使用ssl

客户端

  • 客户端也要有openssl包,然后客户端可以设置强制使用还是不使用ssl
psql "sslmode=require" -h 172.16.3.33 -p 1999 -U postgres -d pg

psql "sslmode=disable" -h 172.16.3.33 -p 1999 -U postgres -d pg

注意

  • 只在主库上创建就好了,只要用到basebackup的都会拷贝相关的这两个文件

参考: https://github.com/digoal/blog/blob/master/201305/20130522_01.md https://www.jianshu.com/p/15b1d935a44b

<think>我们正在为PostgreSQL数据库中的表添加注释。根据引用[1]和引用[2]中的信息,我们可以使用`COMMENT ON TABLE`语句来为表添加注释。 引用[1]中提到了字段添加注释的方法:`comment on column tb_user.id is 'The user ID';`,同样,为表添加注释的语法类似,只是将`column`换成`table`并指定表名。 引用[2]中提到了查询注释的方法,但我们现在关注的是添加注释。 因此,添加表注释的SQL语句如下: ```sql COMMENT ON TABLE table_name IS '注释内容'; ``` 其中,`table_name`是要添加注释的表名,单引号内的字符串就是注释内容。 例如,我们有一个表名为`employees`,我们想添加注释“员工信息表”,那么语句就是: ```sql COMMENT ON TABLE employees IS '员工信息表'; ``` 另外,引用[3]提到了在创建表时定义主键,但我们现在不需要创建表,只是添加注释。 所以,针对用户的问题“PostgreSQL添加表注释的方法”,我们可以这样回答。</think>### PostgreSQL 添加表注释的方法 在 PostgreSQL 中为表添加注释需要使用 `COMMENT ON TABLE` 语句,具体语法如下: ```sql COMMENT ON TABLE 表名 IS '注释内容'; ``` #### 操作步骤: 1. **连接数据库**:使用 `psql` 或客户端工具连接数据库 2. **执行注释语句**: ```sql -- 示例:为 users 表添加注释 COMMENT ON TABLE users IS '存储系统用户基本信息'; ``` 3. **验证注释**: ```sql SELECT obj_description('users'::regclass); ``` #### 关键说明: 1. 表名需包含模式名(如 `public.users`),否则默认在当前模式查找 2. 注释内容需用单引号包裹,支持中文字符 3. 重复执行会覆盖原有注释 4. 删除注释使用空字符串: ```sql COMMENT ON TABLE users IS ''; ``` #### 示例场景: ```sql -- 为订单表添加注释 COMMENT ON TABLE sales.orders IS '存储客户订单数据,包含订单状态和金额信息'; ``` > 📌 **提示**:表注释存储在系统表 `pg_description` 中,可通过 `obj_description()` 函数查询[^2]。 --- ### 相关问题 1. 如何为 PostgreSQL 表的特定列添加注释? 2. 如何批量修改多个表的注释信息? 3. 在 PostgreSQL 中如何查看所有带注释的表? 4. 表注释和列注释在数据库设计中有什么实际作用? [^1]: 字段添加注释语法参考 [^2]: 注释信息存储位置及查询方法 [^3]: 表结构定义注意事项
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值