数据库 DB Link(数据库链接) 的“加密”通常指 防止明文密码泄露 以及 传输过程加密。不同数据库做法不一样,下面按常见数据库说明。
不推荐:
CREATE DATABASE LINK dblink1
CONNECT TO user1 IDENTIFIED BY "password123"
USING 'remote_db';
密码会存在于 DBA_DB_LINKS / USER_DB_LINKS 的数据字典中(虽已加密存储,但仍不建议明文操作)。
✅ 推荐方式:
原理:远程数据库密码保存在 Wallet 中,DB Link 不直接写密码。
步骤简要:
mkstore -wrl /u01/app/oracle/wallet -create
mkstore -wrl /u01/app/oracle/wallet \
-createCredential remote_db user1 password123
sqlnet.ora 配置:
WALLET_LOCATION =
(SOURCE =
(METHOD = FILE)
(METHOD_DATA =
(DIRECTORY = /u01/app/oracle/wallet)
)
)
SQLNET.WALLET_OVERRIDE = TRUE
创建 DB Link:
CREATE DATABASE LINK dblink1
USING 'remote_db';
✅ 优点:无明文密码
✅ 支持 12c / 19c / 21c
在 listener.ora / sqlnet.ora 启用 TCPS + SSL:
SQLNET.ENCRYPTION_SERVER = REQUIRED
SQLNET.ENCRYPTION_CLIENT = REQUIRED
MySQL 没有 Oracle 那种 DB Link,常见替代方案:
CREATE SERVER remote_srv
FOREIGN DATA WRAPPER mysql
OPTIONS (
HOST '192.168.1.10',
DATABASE 'db1',
USER 'user1',
PASSWORD 'password123',
SSL 1
);
mysql_config_editormysql_config_editor set \
--login-path=remote \
--host=192.168.1.10 \
--user=user1 \
--password
CREATE SERVER remote_srv
FOREIGN DATA WRAPPER postgres_fdw
OPTIONS (host '192.168.1.10', dbname 'db1');
CREATE USER MAPPING FOR current_user
SERVER remote_srv
OPTIONS (user 'user1', password 'password123');
✅ 密码存储在 pg_user_mappings(普通用户不可见)
postgresql.conf:
ssl = on
pg_hba.conf:
hostssl all all 0.0.0.0/0 scram-sha-256
✅ 使用 最小权限账号
✅ DB Link 密码 定期轮换
✅ 启用 网络传输加密(SSL/TLS)
✅ 限制 DB Link 使用 IP / 白名单
✅ 审计 DB Link 创建与使用情况
DB Link 加密 ≠ 只加密密码,而是“密码不落地 + 传输加密 + 访问控制”
如果你能告诉我:
我可以给你一套可直接落地的配置方案。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。