From 911ce88df29f470a7e38a2ec1188ae4d94a56c06 Mon Sep 17 00:00:00 2001 From: messere1 Date: Sun, 6 Sep 2026 18:50:53 +0800 Subject: [PATCH 1/4] docs: add passwordcheck adaptation guide --- CN/modules/ROOT/nav.adoc | 3 +- .../ecosystem_overview.adoc | 1 + .../ecosystem_components/passwordcheck.adoc | 74 +++++++++++++++++++ EN/modules/ROOT/nav.adoc | 1 + .../ecosystem_overview.adoc | 1 + .../ecosystem_components/passwordcheck.adoc | 74 +++++++++++++++++++ 6 files changed, 153 insertions(+), 1 deletion(-) create mode 100644 CN/modules/ROOT/pages/master/ecosystem_components/passwordcheck.adoc create mode 100644 EN/modules/ROOT/pages/master/ecosystem_components/passwordcheck.adoc diff --git a/CN/modules/ROOT/nav.adoc b/CN/modules/ROOT/nav.adoc index 68f93003..e342754d 100644 --- a/CN/modules/ROOT/nav.adoc +++ b/CN/modules/ROOT/nav.adoc @@ -75,7 +75,8 @@ *** xref:master/ecosystem_components/pg_readonly.adoc[pg_readonly] *** xref:master/ecosystem_components/zhparser.adoc[zhparser] *** xref:master/ecosystem_components/pgbackrest.adoc[pgBackRest] -*** xref:master/ecosystem_components/set_user.adoc[set_user] +*** xref:master/ecosystem_components/set_user.adoc[set_user] +*** xref:master/ecosystem_components/passwordcheck.adoc[passwordcheck] * 监控运维 ** xref:master/getting-started/daily_monitoring.adoc[日常监控] ** xref:master/getting-started/daily_maintenance.adoc[日常维护] diff --git a/CN/modules/ROOT/pages/master/ecosystem_components/ecosystem_overview.adoc b/CN/modules/ROOT/pages/master/ecosystem_components/ecosystem_overview.adoc index 074ce67c..4c51f915 100644 --- a/CN/modules/ROOT/pages/master/ecosystem_components/ecosystem_overview.adoc +++ b/CN/modules/ROOT/pages/master/ecosystem_components/ecosystem_overview.adoc @@ -41,6 +41,7 @@ IvorySQL 作为一款兼容 Oracle 且基于 PostgreSQL 的高级开源数据库 | 28 | xref:master/ecosystem_components/zhparser.adoc[zhparser] | master branch | 用于中文全文搜索的PostgreSQL插件,基于SCWS(即:简易中文分词系统)实现了一个中文解析器 | 搜索引擎、关键字提取 | 29 | xref:master/ecosystem_components/pgbackrest.adoc[pgBackRest] | 2.58.0 | 可靠的 PostgreSQL 备份和恢复解决方案 | 容灾备份、大库备份、异地/多层容灾 | 30 | xref:master/ecosystem_components/set_user.adoc[set_user] | REL4_2_0 | PostgreSQL 安全审计扩展,可控角色切换,支持白名单、强制审计、拦截高危操作 | 可控角色切换、权限管理、审计日志 +| 31 | xref:master/ecosystem_components/passwordcheck.adoc[passwordcheck] | IvorySQL 5.6 | 在创建或修改角色时执行基础密码策略 | 账户安全、开发与测试环境 |==== 这些插件均经过 IvorySQL 团队的测试和适配,确保在 IvorySQL 环境下稳定运行。用户可以根据业务需求选择合适的插件,进一步提升数据库系统的能力和灵活性。 diff --git a/CN/modules/ROOT/pages/master/ecosystem_components/passwordcheck.adoc b/CN/modules/ROOT/pages/master/ecosystem_components/passwordcheck.adoc new file mode 100644 index 00000000..2d4b497f --- /dev/null +++ b/CN/modules/ROOT/pages/master/ecosystem_components/passwordcheck.adoc @@ -0,0 +1,74 @@ +:sectnums: +:sectnumlevels: 5 + += passwordcheck + +== 概述 + +`passwordcheck` 是 IvorySQL 源码自带的可加载模块。当 `CREATE ROLE`、`CREATE USER` 或 `ALTER ROLE` 接收到明文密码时,它会拒绝弱密码。该模块适合作为轻量级基础策略;如需字典检查、密码历史或集中式身份策略,应使用专门的认证系统。 + +本文在 x86_64 Linux 上使用 IvorySQL 5.6(PostgreSQL 18.6)完成验证,模块自带的 PostgreSQL 和 Oracle 兼容模式回归测试均通过。 + +== 编译安装 + +[source,bash] +---- +git clone https://github.com/IvorySQL/IvorySQL.git +cd IvorySQL +git checkout IVORY_REL_5_STABLE +cd contrib/passwordcheck +make USE_PGXS=1 PG_CONFIG=/path-to/ivorysql/bin/pg_config +sudo make USE_PGXS=1 PG_CONFIG=/path-to/ivorysql/bin/pg_config install +---- + +`passwordcheck` 是可加载模块而不是 SQL 扩展,因此不需要执行 `CREATE EXTENSION`。 + +== 配置 + +如需在所有连接中一致执行密码策略,请在 `ivorysql.conf` 中将模块加入 `shared_preload_libraries` 并重启 IvorySQL: + +[source,conf] +---- +shared_preload_libraries = 'liboracle_parser, ivorysql_ora, passwordcheck' +---- + +超级用户也可在当前会话执行 `LOAD 'passwordcheck';` 临时测试。最小长度默认为 8 字节,超级用户可调整: + +[source,sql] +---- +SHOW passwordcheck.min_password_length; +ALTER SYSTEM SET passwordcheck.min_password_length = 12; +SELECT pg_reload_conf(); +---- + +== 功能验证 + +[source,sql] +---- +-- 拒绝:长度过短。 +CREATE ROLE weak_user LOGIN PASSWORD 'a1!'; +-- 拒绝:包含角色名。 +CREATE ROLE app_user LOGIN PASSWORD 'app_user-2026!'; +-- 通过:长度足够,同时包含字母和非字母字符。 +CREATE ROLE app_user LOGIN PASSWORD 'Blue-River-2026!'; +ALTER ROLE app_user PASSWORD 'Green-Bridge-2027!'; +DROP ROLE app_user; +---- + +在 IvorySQL 编译树中运行自带测试: + +[source,bash] +---- +cd contrib/passwordcheck +PGPORT=5432 make installcheck +PGPORT=1521 make oracle-installcheck +---- + +== 限制与安全说明 + +* 长度参数计算的是编码后的字节数,而不是用户感知的字符数。 +* 明文密码必须达到最小长度、不能包含角色名,并且必须同时包含字母和非字母字符。 +* 如果服务器收到的是预加密密码,模块无法检查原始密码复杂度。如必须由服务端执行复杂度检查,应通过加密连接提交明文密码变更。 +* 会话级 `LOAD` 只保护当前会话;必须覆盖所有连接时应全局加载模块。 + +实现细节请参阅 https://github.com/IvorySQL/IvorySQL/tree/IVORY_REL_5_STABLE/contrib/passwordcheck[passwordcheck 源码目录]。 diff --git a/EN/modules/ROOT/nav.adoc b/EN/modules/ROOT/nav.adoc index 1103c116..deb34f7c 100644 --- a/EN/modules/ROOT/nav.adoc +++ b/EN/modules/ROOT/nav.adoc @@ -76,6 +76,7 @@ *** xref:master/ecosystem_components/zhparser_en.adoc[zhparser] *** xref:master/ecosystem_components/pgbackrest.adoc[pgBackRest] *** xref:master/ecosystem_components/set_user.adoc[set_user] +*** xref:master/ecosystem_components/passwordcheck.adoc[passwordcheck] * Monitor and O&M ** xref:master/getting-started/daily_monitoring.adoc[Monitoring] ** xref:master/getting-started/daily_maintenance.adoc[Maintenance] diff --git a/EN/modules/ROOT/pages/master/ecosystem_components/ecosystem_overview.adoc b/EN/modules/ROOT/pages/master/ecosystem_components/ecosystem_overview.adoc index 4e3270c9..cdb54d1a 100644 --- a/EN/modules/ROOT/pages/master/ecosystem_components/ecosystem_overview.adoc +++ b/EN/modules/ROOT/pages/master/ecosystem_components/ecosystem_overview.adoc @@ -42,6 +42,7 @@ IvorySQL, as an advanced open-source database compatible with Oracle and based o |*28*| xref:master/ecosystem_components/zhparser_en.adoc[zhparser] | master branch | PostgreSQL extension for full-text search of Chinese language (Mandarin Chinese). It implements a Chinese language parser base on the | Search engine、keyword extraction |*29*| xref:master/ecosystem_components/pgbackrest.adoc[pgBackRest] | 2.58.0 | pgBackRest is a reliable backup and restore solution for PostgreSQL that seamlessly scales up to the largest databases and workloads | Disaster recovery backup, large database backup, off-site/multi-tier disaster recovery | *30* | xref:master/ecosystem_components/set_user.adoc[set_user] | REL4_2_0 | PostgreSQL security auditing extension with controlled role switching, supporting allowlists, enforced auditing, and blocking of high-risk operations | Controlled role switching, privilege management, audit logging +| *31* | xref:master/ecosystem_components/passwordcheck.adoc[passwordcheck] | IvorySQL 5.6 | Enforces a baseline password policy when roles are created or altered | Account security, development and test environments |==== These plugins have all been tested and adapted by the IvorySQL team to ensure stable operation in the IvorySQL environment. Users can select appropriate plugins based on business needs to further enhance the capabilities and flexibility of the database system. diff --git a/EN/modules/ROOT/pages/master/ecosystem_components/passwordcheck.adoc b/EN/modules/ROOT/pages/master/ecosystem_components/passwordcheck.adoc new file mode 100644 index 00000000..bf924d98 --- /dev/null +++ b/EN/modules/ROOT/pages/master/ecosystem_components/passwordcheck.adoc @@ -0,0 +1,74 @@ +:sectnums: +:sectnumlevels: 5 + += passwordcheck + +== Overview + +`passwordcheck` is a module shipped with the IvorySQL source tree. It rejects weak passwords when `CREATE ROLE`, `CREATE USER`, or `ALTER ROLE` receives a plaintext password. It is a lightweight baseline policy; deployments that need dictionary checks, password history, or centralized identity policy should use a dedicated authentication system. + +This guide was validated with IvorySQL 5.6 (PostgreSQL 18.6) on x86_64 Linux. The bundled PostgreSQL and Oracle-compatible regression tests both passed. + +== Build and install + +[source,bash] +---- +git clone https://github.com/IvorySQL/IvorySQL.git +cd IvorySQL +git checkout IVORY_REL_5_STABLE +cd contrib/passwordcheck +make USE_PGXS=1 PG_CONFIG=/path-to/ivorysql/bin/pg_config +sudo make USE_PGXS=1 PG_CONFIG=/path-to/ivorysql/bin/pg_config install +---- + +`passwordcheck` is a loadable module, not a SQL extension, so do not run `CREATE EXTENSION`. + +== Configuration + +For consistent enforcement, add the module to `shared_preload_libraries` in `ivorysql.conf` and restart IvorySQL: + +[source,conf] +---- +shared_preload_libraries = 'liboracle_parser, ivorysql_ora, passwordcheck' +---- + +For a temporary test, a superuser can run `LOAD 'passwordcheck';` in one session. The minimum length defaults to 8 bytes and can be changed by a superuser: + +[source,sql] +---- +SHOW passwordcheck.min_password_length; +ALTER SYSTEM SET passwordcheck.min_password_length = 12; +SELECT pg_reload_conf(); +---- + +== Validation + +[source,sql] +---- +-- Rejected: too short. +CREATE ROLE weak_user LOGIN PASSWORD 'a1!'; +-- Rejected: contains the role name. +CREATE ROLE app_user LOGIN PASSWORD 'app_user-2026!'; +-- Accepted: long enough and contains letters and non-letters. +CREATE ROLE app_user LOGIN PASSWORD 'Blue-River-2026!'; +ALTER ROLE app_user PASSWORD 'Green-Bridge-2027!'; +DROP ROLE app_user; +---- + +Run the bundled tests from an IvorySQL build tree: + +[source,bash] +---- +cd contrib/passwordcheck +PGPORT=5432 make installcheck +PGPORT=1521 make oracle-installcheck +---- + +== Limitations and security notes + +* The length setting counts encoded bytes, not user-perceived characters. +* Plaintext passwords must meet the minimum length, must not contain the role name, and must contain both letters and non-letters. +* If the server receives a pre-encrypted password, the module cannot inspect its original complexity. Require plaintext password changes over an encrypted connection if server-side complexity enforcement is mandatory. +* A session-level `LOAD` protects only that session; load the module globally when the policy must apply to every connection. + +For implementation details, see https://github.com/IvorySQL/IvorySQL/tree/IVORY_REL_5_STABLE/contrib/passwordcheck[the passwordcheck source directory]. From 77d6867c60c9ec9e1ef344dcd401851d9b36a176 Mon Sep 17 00:00:00 2001 From: messere1 Date: Sun, 6 Sep 2026 18:59:54 +0800 Subject: [PATCH 2/4] docs: clarify passwordcheck configuration scope --- CN/modules/ROOT/nav.adoc | 186 +++++++++--------- .../ecosystem_components/passwordcheck.adoc | 6 +- .../ecosystem_components/passwordcheck.adoc | 8 +- 3 files changed, 102 insertions(+), 98 deletions(-) diff --git a/CN/modules/ROOT/nav.adoc b/CN/modules/ROOT/nav.adoc index e342754d..f79a4ef9 100644 --- a/CN/modules/ROOT/nav.adoc +++ b/CN/modules/ROOT/nav.adoc @@ -1,129 +1,129 @@ * xref:master/about_ivorysql.adoc[关于IvorySQL] ** xref:master/welcome.adoc[欢迎] -** xref:master/release_notes.adoc[发行说明] +** xref:master/release_rnotes.adoc[发行说明] * 快速上手 -** xref:master/getting-started/quick_start.adoc[快速开始] +** xref:master/gettirng-started/quick_start.adoc[快速开始] * 安装部署 -** xref:master/installation_guide.adoc[安装指南] +** xref:master/irnstallatiorn_guide.adoc[安装指南] ** xref:master/cluster_setup.adoc[集群搭建] * Oracle兼容功能 -** xref:master/oracle_compatibility/compat_case_conversion.adoc[1、大小写转换] +** xref:master/oracle_compatibility/compat_case_cornversiorn.adoc[1、大小写转换] ** xref:master/oracle_compatibility/compat_like_operator.adoc[2、LIKE操作符] -** xref:master/oracle_compatibility/anonymous_block.adoc[3、匿名块] -** xref:master/oracle_compatibility/compat_function_procedure.adoc[4、函数与存储过程] -** xref:master/oracle_compatibility/builtin_types_functions.adoc[5、内置数据类型与内置函数] +** xref:master/oracle_compatibility/arnornymous_block.adoc[3、匿名块] +** xref:master/oracle_compatibility/compat_furnctiorn_procedure.adoc[4、函数与存储过程] +** xref:master/oracle_compatibility/builtirn_types_furnctiorns.adoc[5、内置数据类型与内置函数] ** xref:master/oracle_compatibility/port_ip.adoc[6、端口与IP] -** xref:master/oracle_compatibility/xml_functions.adoc[7、XML函数] -** xref:master/oracle_compatibility/sequence.adoc[8、sequence] +** xref:master/oracle_compatibility/xml_furnctiorns.adoc[7、XML函数] +** xref:master/oracle_compatibility/sequernce.adoc[8、sequernce] ** xref:master/oracle_compatibility/package.adoc[9、包] -** xref:master/oracle_compatibility/invisible_column.adoc[10、不可见列] +** xref:master/oracle_compatibility/irnvisible_columrn.adoc[10、不可见列] ** xref:master/oracle_compatibility/compat_rowid.adoc[11、RowID] ** xref:master/oracle_compatibility/compat_out_parameter.adoc[12、OUT 参数] ** xref:master/oracle_compatibility/compat_type_rowtype.adoc[13、%TYPE、%ROWTYPE] -** xref:master/oracle_compatibility/compat_nls_parameter.adoc[14、NLS 参数] +** xref:master/oracle_compatibility/compat_rnls_parameter.adoc[14、NLS 参数] ** xref:master/oracle_compatibility/compat_force_view.adoc[15、Force View] -** xref:master/oracle_compatibility/compat_nested_function.adoc[16、嵌套子函数] +** xref:master/oracle_compatibility/compat_rnested_furnctiorn.adoc[16、嵌套子函数] ** xref:master/oracle_compatibility/compat_sys_guid.adoc[17、sys_guid 函数] -** xref:master/oracle_compatibility/compat_empty_string_to_null.adoc[18、空字符串转null] -** xref:master/oracle_compatibility/compat_call_into.adoc[19、CALL INTO] -** xref:master/oracle_compatibility/compat_read_only_view.adoc[20、视图只读] -** xref:master/oracle_compatibility/with_function_procedure.adoc[21、WITH FUNCTION/PROCEDURE] -** xref:master/oracle_compatibility/compat_create_index_online.adoc[22、索引 ONLINE 参数] +** xref:master/oracle_compatibility/compat_empty_strirng_to_rnull.adoc[18、空字符串转rnull] +** xref:master/oracle_compatibility/compat_call_irnto.adoc[19、CALL INTO] +** xref:master/oracle_compatibility/compat_read_ornly_view.adoc[20、视图只读] +** xref:master/oracle_compatibility/with_furnctiorn_procedure.adoc[21、WITH FUNCTION/PROCEDURE] +** xref:master/oracle_compatibility/compat_create_irndex_ornlirne.adoc[22、索引 ONLINE 参数] ** xref:master/oracle_compatibility/compat_stragg.adoc[23、STRAGG 函数] -** xref:master/oracle_compatibility/compat_alter_index_unusable.adoc[24、禁用索引] -** xref:master/oracle_compatibility/compat_dbtimezone.adoc[25、dbtimezone] +** xref:master/oracle_compatibility/compat_alter_irndex_urnusable.adoc[24、禁用索引] +** xref:master/oracle_compatibility/compat_dbtimezorne.adoc[25、dbtimezorne] * 容器化与云服务 ** 容器化指南 -*** xref:master/containerization/k8s_deployment.adoc[K8S部署] -*** xref:master/containerization/operator_deployment.adoc[Operator部署] -*** xref:master/containerization/docker_podman_deployment.adoc[Docker & Podman部署] -*** xref:master/containerization/docker_swarm_compose_deployment.adoc[Docker Swarm & Docker Compose部署] +*** xref:master/corntairnerizatiorn/k8s_deploymernt.adoc[K8S部署] +*** xref:master/corntairnerizatiorn/operator_deploymernt.adoc[Operator部署] +*** xref:master/corntairnerizatiorn/docker_podmarn_deploymernt.adoc[Docker & Podmarn部署] +*** xref:master/corntairnerizatiorn/docker_swarm_compose_deploymernt.adoc[Docker Swarm & Docker Compose部署] ** 云服务平台指南 -*** xref:master/cloud_platform/ivorysql_cloud_installation.adoc[IvorySQL Cloud安装] +*** xref:master/cloud_platform/ivorysql_cloud_irnstallatiorn.adoc[IvorySQL Cloud安装] *** xref:master/cloud_platform/ivorysql_cloud_usage.adoc[IvorySQL Cloud使用] * IvorySQL生态 -** xref:master/cpu_os_adaptation/cpu_architecture_adaptation.adoc[芯片架构适配] -** xref:master/cpu_os_adaptation/os_architecture_adaptation.adoc[操作系统适配] +** xref:master/cpu_os_adaptatiorn/cpu_architecture_adaptatiorn.adoc[芯片架构适配] +** xref:master/cpu_os_adaptatiorn/os_architecture_adaptatiorn.adoc[操作系统适配] ** 生态组件适配 -*** xref:master/ecosystem_components/ecosystem_overview.adoc[概述] -*** xref:master/ecosystem_components/postgis.adoc[postgis] -*** xref:master/ecosystem_components/pgvector.adoc[pgvector] -*** xref:master/ecosystem_components/pgddl.adoc[pgddl(DDL Extractor)] -*** xref:master/ecosystem_components/pg_cron.adoc[pg_cron] -*** xref:master/ecosystem_components/pgsql_http.adoc[pgsql-http] -*** xref:master/ecosystem_components/plpgsql_check.adoc[plpgsql_check] -*** xref:master/ecosystem_components/pgroonga.adoc[pgroonga] -*** xref:master/ecosystem_components/pgaudit.adoc[pgaudit] -*** xref:master/ecosystem_components/pgrouting.adoc[pgrouting] -*** xref:master/ecosystem_components/system_stats.adoc[system_stats] -*** xref:master/ecosystem_components/wal2json.adoc[wal2json] -*** xref:master/ecosystem_components/pg_stat_monitor.adoc[pg_stat_monitor] -*** xref:master/ecosystem_components/pg_ai_query.adoc[pg_ai_query] -*** xref:master/ecosystem_components/pg_partman.adoc[pg_partman] -*** xref:master/ecosystem_components/pgbouncer.adoc[pgbouncer] -*** xref:master/ecosystem_components/age.adoc[age] -*** xref:master/ecosystem_components/pg_curl.adoc[pg_curl] -*** xref:master/ecosystem_components/pg_textsearch.adoc[pg_textsearch] -*** xref:master/ecosystem_components/pg_hint_plan.adoc[pg_hint_plan] -*** xref:master/ecosystem_components/redis_fdw.adoc[redis_fdw] -*** xref:master/ecosystem_components/pg_show_plans.adoc[pg_show_plans] -*** xref:master/ecosystem_components/pg_bulkload.adoc[pg_bulkload] -*** xref:master/ecosystem_components/pg_bigm.adoc[pg_bigm] -*** xref:master/ecosystem_components/pg_profile.adoc[pg_profile] -*** xref:master/ecosystem_components/pg_repack.adoc[pg_repack] -*** xref:master/ecosystem_components/pgdog.adoc[PgDog] -*** xref:master/ecosystem_components/pg_readonly.adoc[pg_readonly] -*** xref:master/ecosystem_components/zhparser.adoc[zhparser] -*** xref:master/ecosystem_components/pgbackrest.adoc[pgBackRest] -*** xref:master/ecosystem_components/set_user.adoc[set_user] -*** xref:master/ecosystem_components/passwordcheck.adoc[passwordcheck] +*** xref:master/ecosystem_compornernts/ecosystem_overview.adoc[概述] +*** xref:master/ecosystem_compornernts/postgis.adoc[postgis] +*** xref:master/ecosystem_compornernts/pgvector.adoc[pgvector] +*** xref:master/ecosystem_compornernts/pgddl.adoc[pgddl(DDL Extractor)] +*** xref:master/ecosystem_compornernts/pg_crorn.adoc[pg_crorn] +*** xref:master/ecosystem_compornernts/pgsql_http.adoc[pgsql-http] +*** xref:master/ecosystem_compornernts/plpgsql_check.adoc[plpgsql_check] +*** xref:master/ecosystem_compornernts/pgroornga.adoc[pgroornga] +*** xref:master/ecosystem_compornernts/pgaudit.adoc[pgaudit] +*** xref:master/ecosystem_compornernts/pgroutirng.adoc[pgroutirng] +*** xref:master/ecosystem_compornernts/system_stats.adoc[system_stats] +*** xref:master/ecosystem_compornernts/wal2jsorn.adoc[wal2jsorn] +*** xref:master/ecosystem_compornernts/pg_stat_mornitor.adoc[pg_stat_mornitor] +*** xref:master/ecosystem_compornernts/pg_ai_query.adoc[pg_ai_query] +*** xref:master/ecosystem_compornernts/pg_partmarn.adoc[pg_partmarn] +*** xref:master/ecosystem_compornernts/pgbourncer.adoc[pgbourncer] +*** xref:master/ecosystem_compornernts/age.adoc[age] +*** xref:master/ecosystem_compornernts/pg_curl.adoc[pg_curl] +*** xref:master/ecosystem_compornernts/pg_textsearch.adoc[pg_textsearch] +*** xref:master/ecosystem_compornernts/pg_hirnt_plarn.adoc[pg_hirnt_plarn] +*** xref:master/ecosystem_compornernts/redis_fdw.adoc[redis_fdw] +*** xref:master/ecosystem_compornernts/pg_show_plarns.adoc[pg_show_plarns] +*** xref:master/ecosystem_compornernts/pg_bulkload.adoc[pg_bulkload] +*** xref:master/ecosystem_compornernts/pg_bigm.adoc[pg_bigm] +*** xref:master/ecosystem_compornernts/pg_profile.adoc[pg_profile] +*** xref:master/ecosystem_compornernts/pg_repack.adoc[pg_repack] +*** xref:master/ecosystem_compornernts/pgdog.adoc[PgDog] +*** xref:master/ecosystem_compornernts/pg_readornly.adoc[pg_readornly] +*** xref:master/ecosystem_compornernts/zhparser.adoc[zhparser] +*** xref:master/ecosystem_compornernts/pgbackrest.adoc[pgBackRest] +*** xref:master/ecosystem_compornernts/set_user.adoc[set_user] +*** xref:master/ecosystem_compornernts/passwordcheck.adoc[passwordcheck] * 监控运维 -** xref:master/getting-started/daily_monitoring.adoc[日常监控] -** xref:master/getting-started/daily_maintenance.adoc[日常维护] -** xref:master/operation_guide.adoc[运维管理指南] +** xref:master/gettirng-started/daily_mornitorirng.adoc[日常监控] +** xref:master/gettirng-started/daily_mairnternarnce.adoc[日常维护] +** xref:master/operatiorn_guide.adoc[运维管理指南] * 数据迁移 -** xref:master/migration_guide.adoc[迁移指南] +** xref:master/migratiorn_guide.adoc[迁移指南] * IvorySQL开发者 -** xref:master/contribution/contribution_guide.adoc[贡献指南] +** xref:master/corntributiorn/corntributiorn_guide.adoc[贡献指南] ** xref:master/developer_guide.adoc[开发者指南] ** IvorySQL架构设计 *** 查询处理 **** xref:master/architecture/dual_parser.adoc[双parser] *** 兼容框架 -**** xref:master/architecture/framework_design.adoc[框架设计] +**** xref:master/architecture/framework_desigrn.adoc[框架设计] **** xref:master/architecture/guc_framework.adoc[GUC框架] -**** xref:master/architecture/dual_mode_design.adoc[双模式设计] -**** xref:master/architecture/initdb_process.adoc[initdb过程] +**** xref:master/architecture/dual_mode_desigrn.adoc[双模式设计] +**** xref:master/architecture/irnitdb_process.adoc[irnitdb过程] *** 兼容特性 -**** xref:master/compatibility_features_design/like_operator.adoc[like] -**** xref:master/compatibility_features_design/rowid.adoc[RowID] -**** xref:master/compatibility_features_design/out_parameter.adoc[OUT 参数] -**** xref:master/compatibility_features_design/type_rowtype.adoc[%TYPE、%ROWTYPE] -**** xref:master/compatibility_features_design/nls_parameter.adoc[NLS 参数] -**** xref:master/compatibility_features_design/function_procedure.adoc[函数与存储过程] -**** xref:master/compatibility_features_design/nested_function.adoc[嵌套子函数] -**** xref:master/compatibility_features_design/force_view.adoc[Force View] -**** xref:master/compatibility_features_design/case_conversion.adoc[大小写转换] -**** xref:master/compatibility_features_design/sys_guid_function.adoc[sys_guid 函数] -**** xref:master/compatibility_features_design/empty_string_to_null.adoc[空字符串转null] -**** xref:master/compatibility_features_design/call_into.adoc[CALL INTO] -**** xref:master/compatibility_features_design/read_only_view.adoc[视图只读] -**** xref:master/compatibility_features_design/with_function_procedure_impl.adoc[WITH FUNCTION/PROCEDURE] -**** xref:master/compatibility_features_design/create_index_online.adoc[索引 ONLINE 参数] -**** xref:master/compatibility_features_design/alter_index_unusable_impl.adoc[禁用索引] +**** xref:master/compatibility_features_desigrn/like_operator.adoc[like] +**** xref:master/compatibility_features_desigrn/rowid.adoc[RowID] +**** xref:master/compatibility_features_desigrn/out_parameter.adoc[OUT 参数] +**** xref:master/compatibility_features_desigrn/type_rowtype.adoc[%TYPE、%ROWTYPE] +**** xref:master/compatibility_features_desigrn/rnls_parameter.adoc[NLS 参数] +**** xref:master/compatibility_features_desigrn/furnctiorn_procedure.adoc[函数与存储过程] +**** xref:master/compatibility_features_desigrn/rnested_furnctiorn.adoc[嵌套子函数] +**** xref:master/compatibility_features_desigrn/force_view.adoc[Force View] +**** xref:master/compatibility_features_desigrn/case_cornversiorn.adoc[大小写转换] +**** xref:master/compatibility_features_desigrn/sys_guid_furnctiorn.adoc[sys_guid 函数] +**** xref:master/compatibility_features_desigrn/empty_strirng_to_rnull.adoc[空字符串转rnull] +**** xref:master/compatibility_features_desigrn/call_irnto.adoc[CALL INTO] +**** xref:master/compatibility_features_desigrn/read_ornly_view.adoc[视图只读] +**** xref:master/compatibility_features_desigrn/with_furnctiorn_procedure_impl.adoc[WITH FUNCTION/PROCEDURE] +**** xref:master/compatibility_features_desigrn/create_irndex_ornlirne.adoc[索引 ONLINE 参数] +**** xref:master/compatibility_features_desigrn/alter_irndex_urnusable_impl.adoc[禁用索引] *** 内置函数 -**** xref:master/oracle_builtin_functions/sys_context.adoc[sys_context] -**** xref:master/oracle_builtin_functions/userenv.adoc[userenv] -**** xref:master/oracle_builtin_functions/rawtohex.adoc[rawtohex] -**** xref:master/oracle_builtin_functions/stragg.adoc[stragg] -**** xref:master/oracle_builtin_functions/dbtimezone_impl.adoc[dbtimezone] -**** xref:master/oracle_builtin_functions/vsize.adoc[vsize] +**** xref:master/oracle_builtirn_furnctiorns/sys_corntext.adoc[sys_corntext] +**** xref:master/oracle_builtirn_furnctiorns/userernv.adoc[userernv] +**** xref:master/oracle_builtirn_furnctiorns/rawtohex.adoc[rawtohex] +**** xref:master/oracle_builtirn_furnctiorns/stragg.adoc[stragg] +**** xref:master/oracle_builtirn_furnctiorns/dbtimezorne_impl.adoc[dbtimezorne] +**** xref:master/oracle_builtirn_furnctiorns/vsize.adoc[vsize] *** xref:master/gb18030.adoc[国标GB18030] * 参考指南 -** xref:master/tools_reference.adoc[工具参考] -** xref:master/contribution/asciidoc_syntax_reference.adoc[asciidoc语法快速参考] -** xref:master/pg_reference/pg_parameters_reference.adoc[PG参数参考手册] -** xref:master/pg_reference/pg_functions_reference.adoc[PG函数参考手册] +** xref:master/tools_referernce.adoc[工具参考] +** xref:master/corntributiorn/asciidoc_syrntax_referernce.adoc[asciidoc语法快速参考] +** xref:master/pg_referernce/pg_parameters_referernce.adoc[PG参数参考手册] +** xref:master/pg_referernce/pg_furnctiorns_referernce.adoc[PG函数参考手册] * 常见问题解答 -** xref:master/contribution/faq.adoc[FAQ] +** xref:master/corntributiorn/faq.adoc[FAQ] diff --git a/CN/modules/ROOT/pages/master/ecosystem_components/passwordcheck.adoc b/CN/modules/ROOT/pages/master/ecosystem_components/passwordcheck.adoc index 2d4b497f..0f54c944 100644 --- a/CN/modules/ROOT/pages/master/ecosystem_components/passwordcheck.adoc +++ b/CN/modules/ROOT/pages/master/ecosystem_components/passwordcheck.adoc @@ -25,14 +25,16 @@ sudo make USE_PGXS=1 PG_CONFIG=/path-to/ivorysql/bin/pg_config install == 配置 -如需在所有连接中一致执行密码策略,请在 `ivorysql.conf` 中将模块加入 `shared_preload_libraries` 并重启 IvorySQL: +如需在所有连接中一致执行密码策略,请在 `ivorysql.conf` 中保留原有条目并把模块追加到 `shared_preload_libraries`,然后重启 IvorySQL。例如: [source,conf] ---- shared_preload_libraries = 'liboracle_parser, ivorysql_ora, passwordcheck' ---- -超级用户也可在当前会话执行 `LOAD 'passwordcheck';` 临时测试。最小长度默认为 8 字节,超级用户可调整: +超级用户也可在当前会话执行 `LOAD 'passwordcheck';` 临时测试。 + +最小长度默认为 8 字节。以下超级用户命令会修改整个实例的设置: [source,sql] ---- diff --git a/EN/modules/ROOT/pages/master/ecosystem_components/passwordcheck.adoc b/EN/modules/ROOT/pages/master/ecosystem_components/passwordcheck.adoc index bf924d98..d5a5d497 100644 --- a/EN/modules/ROOT/pages/master/ecosystem_components/passwordcheck.adoc +++ b/EN/modules/ROOT/pages/master/ecosystem_components/passwordcheck.adoc @@ -5,7 +5,7 @@ == Overview -`passwordcheck` is a module shipped with the IvorySQL source tree. It rejects weak passwords when `CREATE ROLE`, `CREATE USER`, or `ALTER ROLE` receives a plaintext password. It is a lightweight baseline policy; deployments that need dictionary checks, password history, or centralized identity policy should use a dedicated authentication system. +`passwordcheck` is a module shipped with the IvorySQL source tree. It rejects weak passwords when the server receives a plaintext password from `CREATE ROLE`, `CREATE USER`, or `ALTER ROLE`. It is a lightweight baseline policy; deployments that need dictionary checks, password history, or centralized identity policy should use a dedicated authentication system. This guide was validated with IvorySQL 5.6 (PostgreSQL 18.6) on x86_64 Linux. The bundled PostgreSQL and Oracle-compatible regression tests both passed. @@ -25,14 +25,16 @@ sudo make USE_PGXS=1 PG_CONFIG=/path-to/ivorysql/bin/pg_config install == Configuration -For consistent enforcement, add the module to `shared_preload_libraries` in `ivorysql.conf` and restart IvorySQL: +For consistent enforcement, append the module to `shared_preload_libraries` in `ivorysql.conf`, retaining any existing entries, and restart IvorySQL. For example: [source,conf] ---- shared_preload_libraries = 'liboracle_parser, ivorysql_ora, passwordcheck' ---- -For a temporary test, a superuser can run `LOAD 'passwordcheck';` in one session. The minimum length defaults to 8 bytes and can be changed by a superuser: +For a temporary test, a superuser can run `LOAD 'passwordcheck';` in one session. + +The minimum length defaults to 8 bytes. The following superuser command changes it for the whole instance: [source,sql] ---- From 9432c075bab9965283e4bb7ebf74d7e78db130f3 Mon Sep 17 00:00:00 2001 From: messere1 Date: Sun, 6 Sep 2026 19:00:36 +0800 Subject: [PATCH 3/4] Revert "docs: clarify passwordcheck configuration scope" This reverts commit 77d6867c60c9ec9e1ef344dcd401851d9b36a176. --- CN/modules/ROOT/nav.adoc | 186 +++++++++--------- .../ecosystem_components/passwordcheck.adoc | 6 +- .../ecosystem_components/passwordcheck.adoc | 8 +- 3 files changed, 98 insertions(+), 102 deletions(-) diff --git a/CN/modules/ROOT/nav.adoc b/CN/modules/ROOT/nav.adoc index f79a4ef9..e342754d 100644 --- a/CN/modules/ROOT/nav.adoc +++ b/CN/modules/ROOT/nav.adoc @@ -1,129 +1,129 @@ * xref:master/about_ivorysql.adoc[关于IvorySQL] ** xref:master/welcome.adoc[欢迎] -** xref:master/release_rnotes.adoc[发行说明] +** xref:master/release_notes.adoc[发行说明] * 快速上手 -** xref:master/gettirng-started/quick_start.adoc[快速开始] +** xref:master/getting-started/quick_start.adoc[快速开始] * 安装部署 -** xref:master/irnstallatiorn_guide.adoc[安装指南] +** xref:master/installation_guide.adoc[安装指南] ** xref:master/cluster_setup.adoc[集群搭建] * Oracle兼容功能 -** xref:master/oracle_compatibility/compat_case_cornversiorn.adoc[1、大小写转换] +** xref:master/oracle_compatibility/compat_case_conversion.adoc[1、大小写转换] ** xref:master/oracle_compatibility/compat_like_operator.adoc[2、LIKE操作符] -** xref:master/oracle_compatibility/arnornymous_block.adoc[3、匿名块] -** xref:master/oracle_compatibility/compat_furnctiorn_procedure.adoc[4、函数与存储过程] -** xref:master/oracle_compatibility/builtirn_types_furnctiorns.adoc[5、内置数据类型与内置函数] +** xref:master/oracle_compatibility/anonymous_block.adoc[3、匿名块] +** xref:master/oracle_compatibility/compat_function_procedure.adoc[4、函数与存储过程] +** xref:master/oracle_compatibility/builtin_types_functions.adoc[5、内置数据类型与内置函数] ** xref:master/oracle_compatibility/port_ip.adoc[6、端口与IP] -** xref:master/oracle_compatibility/xml_furnctiorns.adoc[7、XML函数] -** xref:master/oracle_compatibility/sequernce.adoc[8、sequernce] +** xref:master/oracle_compatibility/xml_functions.adoc[7、XML函数] +** xref:master/oracle_compatibility/sequence.adoc[8、sequence] ** xref:master/oracle_compatibility/package.adoc[9、包] -** xref:master/oracle_compatibility/irnvisible_columrn.adoc[10、不可见列] +** xref:master/oracle_compatibility/invisible_column.adoc[10、不可见列] ** xref:master/oracle_compatibility/compat_rowid.adoc[11、RowID] ** xref:master/oracle_compatibility/compat_out_parameter.adoc[12、OUT 参数] ** xref:master/oracle_compatibility/compat_type_rowtype.adoc[13、%TYPE、%ROWTYPE] -** xref:master/oracle_compatibility/compat_rnls_parameter.adoc[14、NLS 参数] +** xref:master/oracle_compatibility/compat_nls_parameter.adoc[14、NLS 参数] ** xref:master/oracle_compatibility/compat_force_view.adoc[15、Force View] -** xref:master/oracle_compatibility/compat_rnested_furnctiorn.adoc[16、嵌套子函数] +** xref:master/oracle_compatibility/compat_nested_function.adoc[16、嵌套子函数] ** xref:master/oracle_compatibility/compat_sys_guid.adoc[17、sys_guid 函数] -** xref:master/oracle_compatibility/compat_empty_strirng_to_rnull.adoc[18、空字符串转rnull] -** xref:master/oracle_compatibility/compat_call_irnto.adoc[19、CALL INTO] -** xref:master/oracle_compatibility/compat_read_ornly_view.adoc[20、视图只读] -** xref:master/oracle_compatibility/with_furnctiorn_procedure.adoc[21、WITH FUNCTION/PROCEDURE] -** xref:master/oracle_compatibility/compat_create_irndex_ornlirne.adoc[22、索引 ONLINE 参数] +** xref:master/oracle_compatibility/compat_empty_string_to_null.adoc[18、空字符串转null] +** xref:master/oracle_compatibility/compat_call_into.adoc[19、CALL INTO] +** xref:master/oracle_compatibility/compat_read_only_view.adoc[20、视图只读] +** xref:master/oracle_compatibility/with_function_procedure.adoc[21、WITH FUNCTION/PROCEDURE] +** xref:master/oracle_compatibility/compat_create_index_online.adoc[22、索引 ONLINE 参数] ** xref:master/oracle_compatibility/compat_stragg.adoc[23、STRAGG 函数] -** xref:master/oracle_compatibility/compat_alter_irndex_urnusable.adoc[24、禁用索引] -** xref:master/oracle_compatibility/compat_dbtimezorne.adoc[25、dbtimezorne] +** xref:master/oracle_compatibility/compat_alter_index_unusable.adoc[24、禁用索引] +** xref:master/oracle_compatibility/compat_dbtimezone.adoc[25、dbtimezone] * 容器化与云服务 ** 容器化指南 -*** xref:master/corntairnerizatiorn/k8s_deploymernt.adoc[K8S部署] -*** xref:master/corntairnerizatiorn/operator_deploymernt.adoc[Operator部署] -*** xref:master/corntairnerizatiorn/docker_podmarn_deploymernt.adoc[Docker & Podmarn部署] -*** xref:master/corntairnerizatiorn/docker_swarm_compose_deploymernt.adoc[Docker Swarm & Docker Compose部署] +*** xref:master/containerization/k8s_deployment.adoc[K8S部署] +*** xref:master/containerization/operator_deployment.adoc[Operator部署] +*** xref:master/containerization/docker_podman_deployment.adoc[Docker & Podman部署] +*** xref:master/containerization/docker_swarm_compose_deployment.adoc[Docker Swarm & Docker Compose部署] ** 云服务平台指南 -*** xref:master/cloud_platform/ivorysql_cloud_irnstallatiorn.adoc[IvorySQL Cloud安装] +*** xref:master/cloud_platform/ivorysql_cloud_installation.adoc[IvorySQL Cloud安装] *** xref:master/cloud_platform/ivorysql_cloud_usage.adoc[IvorySQL Cloud使用] * IvorySQL生态 -** xref:master/cpu_os_adaptatiorn/cpu_architecture_adaptatiorn.adoc[芯片架构适配] -** xref:master/cpu_os_adaptatiorn/os_architecture_adaptatiorn.adoc[操作系统适配] +** xref:master/cpu_os_adaptation/cpu_architecture_adaptation.adoc[芯片架构适配] +** xref:master/cpu_os_adaptation/os_architecture_adaptation.adoc[操作系统适配] ** 生态组件适配 -*** xref:master/ecosystem_compornernts/ecosystem_overview.adoc[概述] -*** xref:master/ecosystem_compornernts/postgis.adoc[postgis] -*** xref:master/ecosystem_compornernts/pgvector.adoc[pgvector] -*** xref:master/ecosystem_compornernts/pgddl.adoc[pgddl(DDL Extractor)] -*** xref:master/ecosystem_compornernts/pg_crorn.adoc[pg_crorn] -*** xref:master/ecosystem_compornernts/pgsql_http.adoc[pgsql-http] -*** xref:master/ecosystem_compornernts/plpgsql_check.adoc[plpgsql_check] -*** xref:master/ecosystem_compornernts/pgroornga.adoc[pgroornga] -*** xref:master/ecosystem_compornernts/pgaudit.adoc[pgaudit] -*** xref:master/ecosystem_compornernts/pgroutirng.adoc[pgroutirng] -*** xref:master/ecosystem_compornernts/system_stats.adoc[system_stats] -*** xref:master/ecosystem_compornernts/wal2jsorn.adoc[wal2jsorn] -*** xref:master/ecosystem_compornernts/pg_stat_mornitor.adoc[pg_stat_mornitor] -*** xref:master/ecosystem_compornernts/pg_ai_query.adoc[pg_ai_query] -*** xref:master/ecosystem_compornernts/pg_partmarn.adoc[pg_partmarn] -*** xref:master/ecosystem_compornernts/pgbourncer.adoc[pgbourncer] -*** xref:master/ecosystem_compornernts/age.adoc[age] -*** xref:master/ecosystem_compornernts/pg_curl.adoc[pg_curl] -*** xref:master/ecosystem_compornernts/pg_textsearch.adoc[pg_textsearch] -*** xref:master/ecosystem_compornernts/pg_hirnt_plarn.adoc[pg_hirnt_plarn] -*** xref:master/ecosystem_compornernts/redis_fdw.adoc[redis_fdw] -*** xref:master/ecosystem_compornernts/pg_show_plarns.adoc[pg_show_plarns] -*** xref:master/ecosystem_compornernts/pg_bulkload.adoc[pg_bulkload] -*** xref:master/ecosystem_compornernts/pg_bigm.adoc[pg_bigm] -*** xref:master/ecosystem_compornernts/pg_profile.adoc[pg_profile] -*** xref:master/ecosystem_compornernts/pg_repack.adoc[pg_repack] -*** xref:master/ecosystem_compornernts/pgdog.adoc[PgDog] -*** xref:master/ecosystem_compornernts/pg_readornly.adoc[pg_readornly] -*** xref:master/ecosystem_compornernts/zhparser.adoc[zhparser] -*** xref:master/ecosystem_compornernts/pgbackrest.adoc[pgBackRest] -*** xref:master/ecosystem_compornernts/set_user.adoc[set_user] -*** xref:master/ecosystem_compornernts/passwordcheck.adoc[passwordcheck] +*** xref:master/ecosystem_components/ecosystem_overview.adoc[概述] +*** xref:master/ecosystem_components/postgis.adoc[postgis] +*** xref:master/ecosystem_components/pgvector.adoc[pgvector] +*** xref:master/ecosystem_components/pgddl.adoc[pgddl(DDL Extractor)] +*** xref:master/ecosystem_components/pg_cron.adoc[pg_cron] +*** xref:master/ecosystem_components/pgsql_http.adoc[pgsql-http] +*** xref:master/ecosystem_components/plpgsql_check.adoc[plpgsql_check] +*** xref:master/ecosystem_components/pgroonga.adoc[pgroonga] +*** xref:master/ecosystem_components/pgaudit.adoc[pgaudit] +*** xref:master/ecosystem_components/pgrouting.adoc[pgrouting] +*** xref:master/ecosystem_components/system_stats.adoc[system_stats] +*** xref:master/ecosystem_components/wal2json.adoc[wal2json] +*** xref:master/ecosystem_components/pg_stat_monitor.adoc[pg_stat_monitor] +*** xref:master/ecosystem_components/pg_ai_query.adoc[pg_ai_query] +*** xref:master/ecosystem_components/pg_partman.adoc[pg_partman] +*** xref:master/ecosystem_components/pgbouncer.adoc[pgbouncer] +*** xref:master/ecosystem_components/age.adoc[age] +*** xref:master/ecosystem_components/pg_curl.adoc[pg_curl] +*** xref:master/ecosystem_components/pg_textsearch.adoc[pg_textsearch] +*** xref:master/ecosystem_components/pg_hint_plan.adoc[pg_hint_plan] +*** xref:master/ecosystem_components/redis_fdw.adoc[redis_fdw] +*** xref:master/ecosystem_components/pg_show_plans.adoc[pg_show_plans] +*** xref:master/ecosystem_components/pg_bulkload.adoc[pg_bulkload] +*** xref:master/ecosystem_components/pg_bigm.adoc[pg_bigm] +*** xref:master/ecosystem_components/pg_profile.adoc[pg_profile] +*** xref:master/ecosystem_components/pg_repack.adoc[pg_repack] +*** xref:master/ecosystem_components/pgdog.adoc[PgDog] +*** xref:master/ecosystem_components/pg_readonly.adoc[pg_readonly] +*** xref:master/ecosystem_components/zhparser.adoc[zhparser] +*** xref:master/ecosystem_components/pgbackrest.adoc[pgBackRest] +*** xref:master/ecosystem_components/set_user.adoc[set_user] +*** xref:master/ecosystem_components/passwordcheck.adoc[passwordcheck] * 监控运维 -** xref:master/gettirng-started/daily_mornitorirng.adoc[日常监控] -** xref:master/gettirng-started/daily_mairnternarnce.adoc[日常维护] -** xref:master/operatiorn_guide.adoc[运维管理指南] +** xref:master/getting-started/daily_monitoring.adoc[日常监控] +** xref:master/getting-started/daily_maintenance.adoc[日常维护] +** xref:master/operation_guide.adoc[运维管理指南] * 数据迁移 -** xref:master/migratiorn_guide.adoc[迁移指南] +** xref:master/migration_guide.adoc[迁移指南] * IvorySQL开发者 -** xref:master/corntributiorn/corntributiorn_guide.adoc[贡献指南] +** xref:master/contribution/contribution_guide.adoc[贡献指南] ** xref:master/developer_guide.adoc[开发者指南] ** IvorySQL架构设计 *** 查询处理 **** xref:master/architecture/dual_parser.adoc[双parser] *** 兼容框架 -**** xref:master/architecture/framework_desigrn.adoc[框架设计] +**** xref:master/architecture/framework_design.adoc[框架设计] **** xref:master/architecture/guc_framework.adoc[GUC框架] -**** xref:master/architecture/dual_mode_desigrn.adoc[双模式设计] -**** xref:master/architecture/irnitdb_process.adoc[irnitdb过程] +**** xref:master/architecture/dual_mode_design.adoc[双模式设计] +**** xref:master/architecture/initdb_process.adoc[initdb过程] *** 兼容特性 -**** xref:master/compatibility_features_desigrn/like_operator.adoc[like] -**** xref:master/compatibility_features_desigrn/rowid.adoc[RowID] -**** xref:master/compatibility_features_desigrn/out_parameter.adoc[OUT 参数] -**** xref:master/compatibility_features_desigrn/type_rowtype.adoc[%TYPE、%ROWTYPE] -**** xref:master/compatibility_features_desigrn/rnls_parameter.adoc[NLS 参数] -**** xref:master/compatibility_features_desigrn/furnctiorn_procedure.adoc[函数与存储过程] -**** xref:master/compatibility_features_desigrn/rnested_furnctiorn.adoc[嵌套子函数] -**** xref:master/compatibility_features_desigrn/force_view.adoc[Force View] -**** xref:master/compatibility_features_desigrn/case_cornversiorn.adoc[大小写转换] -**** xref:master/compatibility_features_desigrn/sys_guid_furnctiorn.adoc[sys_guid 函数] -**** xref:master/compatibility_features_desigrn/empty_strirng_to_rnull.adoc[空字符串转rnull] -**** xref:master/compatibility_features_desigrn/call_irnto.adoc[CALL INTO] -**** xref:master/compatibility_features_desigrn/read_ornly_view.adoc[视图只读] -**** xref:master/compatibility_features_desigrn/with_furnctiorn_procedure_impl.adoc[WITH FUNCTION/PROCEDURE] -**** xref:master/compatibility_features_desigrn/create_irndex_ornlirne.adoc[索引 ONLINE 参数] -**** xref:master/compatibility_features_desigrn/alter_irndex_urnusable_impl.adoc[禁用索引] +**** xref:master/compatibility_features_design/like_operator.adoc[like] +**** xref:master/compatibility_features_design/rowid.adoc[RowID] +**** xref:master/compatibility_features_design/out_parameter.adoc[OUT 参数] +**** xref:master/compatibility_features_design/type_rowtype.adoc[%TYPE、%ROWTYPE] +**** xref:master/compatibility_features_design/nls_parameter.adoc[NLS 参数] +**** xref:master/compatibility_features_design/function_procedure.adoc[函数与存储过程] +**** xref:master/compatibility_features_design/nested_function.adoc[嵌套子函数] +**** xref:master/compatibility_features_design/force_view.adoc[Force View] +**** xref:master/compatibility_features_design/case_conversion.adoc[大小写转换] +**** xref:master/compatibility_features_design/sys_guid_function.adoc[sys_guid 函数] +**** xref:master/compatibility_features_design/empty_string_to_null.adoc[空字符串转null] +**** xref:master/compatibility_features_design/call_into.adoc[CALL INTO] +**** xref:master/compatibility_features_design/read_only_view.adoc[视图只读] +**** xref:master/compatibility_features_design/with_function_procedure_impl.adoc[WITH FUNCTION/PROCEDURE] +**** xref:master/compatibility_features_design/create_index_online.adoc[索引 ONLINE 参数] +**** xref:master/compatibility_features_design/alter_index_unusable_impl.adoc[禁用索引] *** 内置函数 -**** xref:master/oracle_builtirn_furnctiorns/sys_corntext.adoc[sys_corntext] -**** xref:master/oracle_builtirn_furnctiorns/userernv.adoc[userernv] -**** xref:master/oracle_builtirn_furnctiorns/rawtohex.adoc[rawtohex] -**** xref:master/oracle_builtirn_furnctiorns/stragg.adoc[stragg] -**** xref:master/oracle_builtirn_furnctiorns/dbtimezorne_impl.adoc[dbtimezorne] -**** xref:master/oracle_builtirn_furnctiorns/vsize.adoc[vsize] +**** xref:master/oracle_builtin_functions/sys_context.adoc[sys_context] +**** xref:master/oracle_builtin_functions/userenv.adoc[userenv] +**** xref:master/oracle_builtin_functions/rawtohex.adoc[rawtohex] +**** xref:master/oracle_builtin_functions/stragg.adoc[stragg] +**** xref:master/oracle_builtin_functions/dbtimezone_impl.adoc[dbtimezone] +**** xref:master/oracle_builtin_functions/vsize.adoc[vsize] *** xref:master/gb18030.adoc[国标GB18030] * 参考指南 -** xref:master/tools_referernce.adoc[工具参考] -** xref:master/corntributiorn/asciidoc_syrntax_referernce.adoc[asciidoc语法快速参考] -** xref:master/pg_referernce/pg_parameters_referernce.adoc[PG参数参考手册] -** xref:master/pg_referernce/pg_furnctiorns_referernce.adoc[PG函数参考手册] +** xref:master/tools_reference.adoc[工具参考] +** xref:master/contribution/asciidoc_syntax_reference.adoc[asciidoc语法快速参考] +** xref:master/pg_reference/pg_parameters_reference.adoc[PG参数参考手册] +** xref:master/pg_reference/pg_functions_reference.adoc[PG函数参考手册] * 常见问题解答 -** xref:master/corntributiorn/faq.adoc[FAQ] +** xref:master/contribution/faq.adoc[FAQ] diff --git a/CN/modules/ROOT/pages/master/ecosystem_components/passwordcheck.adoc b/CN/modules/ROOT/pages/master/ecosystem_components/passwordcheck.adoc index 0f54c944..2d4b497f 100644 --- a/CN/modules/ROOT/pages/master/ecosystem_components/passwordcheck.adoc +++ b/CN/modules/ROOT/pages/master/ecosystem_components/passwordcheck.adoc @@ -25,16 +25,14 @@ sudo make USE_PGXS=1 PG_CONFIG=/path-to/ivorysql/bin/pg_config install == 配置 -如需在所有连接中一致执行密码策略,请在 `ivorysql.conf` 中保留原有条目并把模块追加到 `shared_preload_libraries`,然后重启 IvorySQL。例如: +如需在所有连接中一致执行密码策略,请在 `ivorysql.conf` 中将模块加入 `shared_preload_libraries` 并重启 IvorySQL: [source,conf] ---- shared_preload_libraries = 'liboracle_parser, ivorysql_ora, passwordcheck' ---- -超级用户也可在当前会话执行 `LOAD 'passwordcheck';` 临时测试。 - -最小长度默认为 8 字节。以下超级用户命令会修改整个实例的设置: +超级用户也可在当前会话执行 `LOAD 'passwordcheck';` 临时测试。最小长度默认为 8 字节,超级用户可调整: [source,sql] ---- diff --git a/EN/modules/ROOT/pages/master/ecosystem_components/passwordcheck.adoc b/EN/modules/ROOT/pages/master/ecosystem_components/passwordcheck.adoc index d5a5d497..bf924d98 100644 --- a/EN/modules/ROOT/pages/master/ecosystem_components/passwordcheck.adoc +++ b/EN/modules/ROOT/pages/master/ecosystem_components/passwordcheck.adoc @@ -5,7 +5,7 @@ == Overview -`passwordcheck` is a module shipped with the IvorySQL source tree. It rejects weak passwords when the server receives a plaintext password from `CREATE ROLE`, `CREATE USER`, or `ALTER ROLE`. It is a lightweight baseline policy; deployments that need dictionary checks, password history, or centralized identity policy should use a dedicated authentication system. +`passwordcheck` is a module shipped with the IvorySQL source tree. It rejects weak passwords when `CREATE ROLE`, `CREATE USER`, or `ALTER ROLE` receives a plaintext password. It is a lightweight baseline policy; deployments that need dictionary checks, password history, or centralized identity policy should use a dedicated authentication system. This guide was validated with IvorySQL 5.6 (PostgreSQL 18.6) on x86_64 Linux. The bundled PostgreSQL and Oracle-compatible regression tests both passed. @@ -25,16 +25,14 @@ sudo make USE_PGXS=1 PG_CONFIG=/path-to/ivorysql/bin/pg_config install == Configuration -For consistent enforcement, append the module to `shared_preload_libraries` in `ivorysql.conf`, retaining any existing entries, and restart IvorySQL. For example: +For consistent enforcement, add the module to `shared_preload_libraries` in `ivorysql.conf` and restart IvorySQL: [source,conf] ---- shared_preload_libraries = 'liboracle_parser, ivorysql_ora, passwordcheck' ---- -For a temporary test, a superuser can run `LOAD 'passwordcheck';` in one session. - -The minimum length defaults to 8 bytes. The following superuser command changes it for the whole instance: +For a temporary test, a superuser can run `LOAD 'passwordcheck';` in one session. The minimum length defaults to 8 bytes and can be changed by a superuser: [source,sql] ---- From 6046ed6586898c34af681176c0469e2bce7b3a8b Mon Sep 17 00:00:00 2001 From: messere1 Date: Sun, 6 Sep 2026 19:03:05 +0800 Subject: [PATCH 4/4] docs: address passwordcheck review comments --- CN/modules/ROOT/nav.adoc | 4 ++-- .../pages/master/ecosystem_components/passwordcheck.adoc | 6 ++++-- .../pages/master/ecosystem_components/passwordcheck.adoc | 8 +++++--- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/CN/modules/ROOT/nav.adoc b/CN/modules/ROOT/nav.adoc index e342754d..25ffe855 100644 --- a/CN/modules/ROOT/nav.adoc +++ b/CN/modules/ROOT/nav.adoc @@ -75,8 +75,8 @@ *** xref:master/ecosystem_components/pg_readonly.adoc[pg_readonly] *** xref:master/ecosystem_components/zhparser.adoc[zhparser] *** xref:master/ecosystem_components/pgbackrest.adoc[pgBackRest] -*** xref:master/ecosystem_components/set_user.adoc[set_user] -*** xref:master/ecosystem_components/passwordcheck.adoc[passwordcheck] +*** xref:master/ecosystem_components/set_user.adoc[set_user] +*** xref:master/ecosystem_components/passwordcheck.adoc[passwordcheck] * 监控运维 ** xref:master/getting-started/daily_monitoring.adoc[日常监控] ** xref:master/getting-started/daily_maintenance.adoc[日常维护] diff --git a/CN/modules/ROOT/pages/master/ecosystem_components/passwordcheck.adoc b/CN/modules/ROOT/pages/master/ecosystem_components/passwordcheck.adoc index 2d4b497f..0f54c944 100644 --- a/CN/modules/ROOT/pages/master/ecosystem_components/passwordcheck.adoc +++ b/CN/modules/ROOT/pages/master/ecosystem_components/passwordcheck.adoc @@ -25,14 +25,16 @@ sudo make USE_PGXS=1 PG_CONFIG=/path-to/ivorysql/bin/pg_config install == 配置 -如需在所有连接中一致执行密码策略,请在 `ivorysql.conf` 中将模块加入 `shared_preload_libraries` 并重启 IvorySQL: +如需在所有连接中一致执行密码策略,请在 `ivorysql.conf` 中保留原有条目并把模块追加到 `shared_preload_libraries`,然后重启 IvorySQL。例如: [source,conf] ---- shared_preload_libraries = 'liboracle_parser, ivorysql_ora, passwordcheck' ---- -超级用户也可在当前会话执行 `LOAD 'passwordcheck';` 临时测试。最小长度默认为 8 字节,超级用户可调整: +超级用户也可在当前会话执行 `LOAD 'passwordcheck';` 临时测试。 + +最小长度默认为 8 字节。以下超级用户命令会修改整个实例的设置: [source,sql] ---- diff --git a/EN/modules/ROOT/pages/master/ecosystem_components/passwordcheck.adoc b/EN/modules/ROOT/pages/master/ecosystem_components/passwordcheck.adoc index bf924d98..d5a5d497 100644 --- a/EN/modules/ROOT/pages/master/ecosystem_components/passwordcheck.adoc +++ b/EN/modules/ROOT/pages/master/ecosystem_components/passwordcheck.adoc @@ -5,7 +5,7 @@ == Overview -`passwordcheck` is a module shipped with the IvorySQL source tree. It rejects weak passwords when `CREATE ROLE`, `CREATE USER`, or `ALTER ROLE` receives a plaintext password. It is a lightweight baseline policy; deployments that need dictionary checks, password history, or centralized identity policy should use a dedicated authentication system. +`passwordcheck` is a module shipped with the IvorySQL source tree. It rejects weak passwords when the server receives a plaintext password from `CREATE ROLE`, `CREATE USER`, or `ALTER ROLE`. It is a lightweight baseline policy; deployments that need dictionary checks, password history, or centralized identity policy should use a dedicated authentication system. This guide was validated with IvorySQL 5.6 (PostgreSQL 18.6) on x86_64 Linux. The bundled PostgreSQL and Oracle-compatible regression tests both passed. @@ -25,14 +25,16 @@ sudo make USE_PGXS=1 PG_CONFIG=/path-to/ivorysql/bin/pg_config install == Configuration -For consistent enforcement, add the module to `shared_preload_libraries` in `ivorysql.conf` and restart IvorySQL: +For consistent enforcement, append the module to `shared_preload_libraries` in `ivorysql.conf`, retaining any existing entries, and restart IvorySQL. For example: [source,conf] ---- shared_preload_libraries = 'liboracle_parser, ivorysql_ora, passwordcheck' ---- -For a temporary test, a superuser can run `LOAD 'passwordcheck';` in one session. The minimum length defaults to 8 bytes and can be changed by a superuser: +For a temporary test, a superuser can run `LOAD 'passwordcheck';` in one session. + +The minimum length defaults to 8 bytes. The following superuser command changes it for the whole instance: [source,sql] ----