数据库默认的四个成员具体是哪四个?是数据库设计中的基本概念吗?

更新于
2026-08-16 15:37:26
9阅读来源:SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

你可能遇到的痛点

在学习或使用数据库时常常会被以下问题困扰:

  1. 不同数据库程序的说法好像不一样。
  2. 这些成员是数据库设计中的基本概念还是程序自带的角色/使用者?
  3. 如果不清楚它们的职责,权限管理和安全配置就会手忙脚乱。

一、什么是“默认成员”

数据库默认的四个成员具体是哪四个?是数据库设计中的基本概念吗?

1️⃣ SQL Server 中的四个默认角色

  • db_owner拥有该数据库内所有对象的完全控制权,包括创建、修改、删除对象还有授予/回收其他使用者权限。
  • db_datareader只读权限,能够查询数据库中所有表和视图的数据。
  • db_datawriter写入权限。能够向所有表插入、更新和删除数据,但不具备结构修改权。
  • public所有登录使用者都会自动属于此角色。通常只授予最基本的访问权限,如连接数据库。

2️⃣ Oracle 中常见的四个默认使用者

  • SYS程序管理员账户,拥有 DBA 角色而且存放整个数据字典。只能由程序维护,普通管理员不可更改其对象。
  • SYSTEM用于创建和管理除数据字典外的其他程序对象。如视图、存储过程等,一样拥有 DBA 权限。老实说,
  • SYSMANEnterprise Manager专用账户。用于监控和管理整个 Oracle 实例。
  • DBSNMPOracle 监控工具的代理账户,用于收集性能统计信息。

3️⃣ MySQL / MariaDB 中的四个内置程序库——常被误认为是“默认成员”

  • information_schema
  • performance_schema
  • mysql
  • sys

*注:上述库在 MySQL/MariaDB 中默认存在用于存放元数据、性能指标和设置,也算是“默认对象”。但它们并不是使用者/角色概念。

二、这些默认成员是设计概念吗?答案是否定的,说起来,

不是。

• 数据库设计关注的是实体→属性→关系→约束**等概念**。• 默认成员属于安全/权限管理层面**。它们帮助 DBA 快速搭建最小化权限模型,确保程序安全性。• 在实际项目中,你仍然需要根据业务需求自行创建业务角色。而不是直接使用这些程序自带的角色来做业务授权。

三、如何正确使用这些默认成员来解决你的痛点?

A. 权限最小化原则——先把默认角色撤掉,再自定义业务角色

  1. 默认角色。说起来,例如在 SQL Server 中:
    rolemembers drm
    JOIN sys.databaseprincipals dp ON drm.roleprincipalid = dp.principalid
    JOIN sys.databaseprincipals mp ON drm.memberprincipalid = mp.principalid;
    按理说,

  • 撤销不必要的高危角色:If a developer only needs read‑only access。remove m from . Use:
  • Create business‑oriented roles:Create custom roles such as reader ,grant it only permissions needed:

    reader;GRANT SELECT ON dbo.Sales TO sales_reader;

  • Add users to custom roles:If John works in sales:

  • If you’re on Oracle。avoid using SYS/SYSTEM for daily work. Create a dedicated schema and grant it only required privileges.
  • 为公共使用者设置最小化访问: * 在 SQL Server 中,不要把敏感对象授予 public。* 在 Oracle 中,可以通过 REVOKE 来限制 public 的 SELECT 权限。
  • 数据库默认的四个成员具体是哪四个?是数据库设计中的基本概念吗?

    B. 常见场景对应常用方法表格

    业务场景 推荐使用哪类默认成员 为什么
    开发人员需要完整调试环境 dbowner 或 SYSTEM 仅在测试库里使用。高危操作应限制在生产库
    报表查询员只读报表库 dbdatareader / PUBLIC 避免误删或误改数据
    ETL 作业需要写入临时表 dbdatawriter + 对特定 schema 的 INSERT 权限 细粒度控制写入范围,提高安全性
    运维监控工具 需要访问性能视图 SYSMAN / DBSNMP 或 performanceschema 专用账号避免混淆业务账号
    *以上示例仅供参考,请结合实际安全策略进行微调。

    四、关键要点快速回顾 ✅️​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​‍‍‍‍‍‍‍‍ ​​​​​​​  📌️ ·   ✅️ ·   ✅️ ·   ✅️ ​‌‌‌‌‌ ‌ ‌ ‌ ‌ ‍ ‌ ‍ ‍ ‍‍   ​‌‌‌ ​​​‏‏‏‏‏‏‏‏‏‏‏‏ ‏‎‎‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ⁦⁦⁦⁠⁠⁠⁠⁠͏✧⁩⁣⁣ ⁣💡 **主要结论**:
    • "默认四个成员"指的是程序预置的使用者/角色**,而非抽象的数据模型概念。
    • SQl Server → "Oracle" → SYS 、SYSTEM 、SYSMAN 、DBSNMP**;
    • "MySQL/MariaDB" 常误认为有四个 "member",是四个 **内置 system schemas**。
    • # **使用建议**:先审计已有权限 → 撤销高危预置 → 按业务创建细粒度自定义角色 → 最终将业务使用者加入对应角色,以实现最小权限原则。

      五、常见问答 FAQ 🚀︎︎︎︎︎︎︎︎︎︎︎︎️🧭︎⚙️🛠️👨🏻‍💻👩🏽‍💻🧑🏽‍🔬📚🔐🗂️✨⏰🗒️🎯🚨🤔❓❔❓❕❔🙋🏼🙍🏼🙇🏽🙎🏻🙎🏾\t\t\t\t\t\  

      A:  答:取决于所用 RDBMS——SQL Server 为 `db_owner` `db_datareader` `db_datawriter` `public`;Oracle 为 `SYS` `SYSTEM` `SYSMAN` `DBSNMP`;怎么说呢,MySQL/MariaDB 则是4 个内部 schema。不算真正意义上的 “member”。

      A:  答:不算。它们属于安全/运维层面** 的预置身份。用来较快完成初始化授权,而非 ER 图、范式或三级模式等设计概念。

      A:  答:① 创建自定义 Role/User;② 按需授予 SELECT / INSERT / UPDATE / DELETE 等 DML 权限;③ 将业务账号加入该 Role;④ 使用审计日志确认未出现越权操作。


      这篇文章约 950 字,阅读时间约 4 分钟。如果还有问题,请在评论区留言或参考官方文档:《SQL Server 权限与安全》《Oracle Database Administrator's Guide》。

    标签:成员

    你可能遇到的痛点

    在学习或使用数据库时常常会被以下问题困扰:

    1. 不同数据库程序的说法好像不一样。
    2. 这些成员是数据库设计中的基本概念还是程序自带的角色/使用者?
    3. 如果不清楚它们的职责,权限管理和安全配置就会手忙脚乱。

    一、什么是“默认成员”

    数据库默认的四个成员具体是哪四个?是数据库设计中的基本概念吗?

    1️⃣ SQL Server 中的四个默认角色

    • db_owner拥有该数据库内所有对象的完全控制权,包括创建、修改、删除对象还有授予/回收其他使用者权限。
    • db_datareader只读权限,能够查询数据库中所有表和视图的数据。
    • db_datawriter写入权限。能够向所有表插入、更新和删除数据,但不具备结构修改权。
    • public所有登录使用者都会自动属于此角色。通常只授予最基本的访问权限,如连接数据库。

    2️⃣ Oracle 中常见的四个默认使用者

    • SYS程序管理员账户,拥有 DBA 角色而且存放整个数据字典。只能由程序维护,普通管理员不可更改其对象。
    • SYSTEM用于创建和管理除数据字典外的其他程序对象。如视图、存储过程等,一样拥有 DBA 权限。老实说,
    • SYSMANEnterprise Manager专用账户。用于监控和管理整个 Oracle 实例。
    • DBSNMPOracle 监控工具的代理账户,用于收集性能统计信息。

    3️⃣ MySQL / MariaDB 中的四个内置程序库——常被误认为是“默认成员”

    • information_schema
    • performance_schema
    • mysql
    • sys

    *注:上述库在 MySQL/MariaDB 中默认存在用于存放元数据、性能指标和设置,也算是“默认对象”。但它们并不是使用者/角色概念。

    二、这些默认成员是设计概念吗?答案是否定的,说起来,

    不是。

    • 数据库设计关注的是实体→属性→关系→约束**等概念**。• 默认成员属于安全/权限管理层面**。它们帮助 DBA 快速搭建最小化权限模型,确保程序安全性。• 在实际项目中,你仍然需要根据业务需求自行创建业务角色。而不是直接使用这些程序自带的角色来做业务授权。

    三、如何正确使用这些默认成员来解决你的痛点?

    A. 权限最小化原则——先把默认角色撤掉,再自定义业务角色

    1. 默认角色。说起来,例如在 SQL Server 中:
      rolemembers drm
      JOIN sys.databaseprincipals dp ON drm.roleprincipalid = dp.principalid
      JOIN sys.databaseprincipals mp ON drm.memberprincipalid = mp.principalid;
      按理说,

  • 撤销不必要的高危角色:If a developer only needs read‑only access。remove m from . Use:
  • Create business‑oriented roles:Create custom roles such as reader ,grant it only permissions needed:

    reader;GRANT SELECT ON dbo.Sales TO sales_reader;

  • Add users to custom roles:If John works in sales:

  • If you’re on Oracle。avoid using SYS/SYSTEM for daily work. Create a dedicated schema and grant it only required privileges.
  • 为公共使用者设置最小化访问: * 在 SQL Server 中,不要把敏感对象授予 public。* 在 Oracle 中,可以通过 REVOKE 来限制 public 的 SELECT 权限。
  • 数据库默认的四个成员具体是哪四个?是数据库设计中的基本概念吗?

    B. 常见场景对应常用方法表格

    业务场景 推荐使用哪类默认成员 为什么
    开发人员需要完整调试环境 dbowner 或 SYSTEM 仅在测试库里使用。高危操作应限制在生产库
    报表查询员只读报表库 dbdatareader / PUBLIC 避免误删或误改数据
    ETL 作业需要写入临时表 dbdatawriter + 对特定 schema 的 INSERT 权限 细粒度控制写入范围,提高安全性
    运维监控工具 需要访问性能视图 SYSMAN / DBSNMP 或 performanceschema 专用账号避免混淆业务账号
    *以上示例仅供参考,请结合实际安全策略进行微调。

    四、关键要点快速回顾 ✅️​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​‍‍‍‍‍‍‍‍ ​​​​​​​  📌️ ·   ✅️ ·   ✅️ ·   ✅️ ​‌‌‌‌‌ ‌ ‌ ‌ ‌ ‍ ‌ ‍ ‍ ‍‍   ​‌‌‌ ​​​‏‏‏‏‏‏‏‏‏‏‏‏ ‏‎‎‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ⁦⁦⁦⁠⁠⁠⁠⁠͏✧⁩⁣⁣ ⁣💡 **主要结论**:
    • "默认四个成员"指的是程序预置的使用者/角色**,而非抽象的数据模型概念。
    • SQl Server → "Oracle" → SYS 、SYSTEM 、SYSMAN 、DBSNMP**;
    • "MySQL/MariaDB" 常误认为有四个 "member",是四个 **内置 system schemas**。
    • # **使用建议**:先审计已有权限 → 撤销高危预置 → 按业务创建细粒度自定义角色 → 最终将业务使用者加入对应角色,以实现最小权限原则。

      五、常见问答 FAQ 🚀︎︎︎︎︎︎︎︎︎︎︎︎️🧭︎⚙️🛠️👨🏻‍💻👩🏽‍💻🧑🏽‍🔬📚🔐🗂️✨⏰🗒️🎯🚨🤔❓❔❓❕❔🙋🏼🙍🏼🙇🏽🙎🏻🙎🏾\t\t\t\t\t\  

      A:  答:取决于所用 RDBMS——SQL Server 为 `db_owner` `db_datareader` `db_datawriter` `public`;Oracle 为 `SYS` `SYSTEM` `SYSMAN` `DBSNMP`;怎么说呢,MySQL/MariaDB 则是4 个内部 schema。不算真正意义上的 “member”。

      A:  答:不算。它们属于安全/运维层面** 的预置身份。用来较快完成初始化授权,而非 ER 图、范式或三级模式等设计概念。

      A:  答:① 创建自定义 Role/User;② 按需授予 SELECT / INSERT / UPDATE / DELETE 等 DML 权限;③ 将业务账号加入该 Role;④ 使用审计日志确认未出现越权操作。


      这篇文章约 950 字,阅读时间约 4 分钟。如果还有问题,请在评论区留言或参考官方文档:《SQL Server 权限与安全》《Oracle Database Administrator's Guide》。

    标签:成员