作为使用 db_owner 数据库角色的替代方法,经验丰富的数据库管理员可以通过手动创建数据库架构和角色来设置权限,这样可以更有效地控制数据库权限。

必须首先为 vCenter Server 创建数据库和用户。然后,可以为数据库用户创建自定义架构和新数据库角色。安装 vCenter Server 之前,必须为用户启用数据库监控。请参见 vCenter Server 的数据库权限要求

要执行以下过程,可以使用图形用户界面,也可以运行脚本:vCenter Server 安装程序软件包的 vCenter-Server\dbschema\DB_and_schema_creation_scripts_PostgreSQL.txt 文件中包含示例脚本。

过程

  1. vCenter Server 创建数据库和用户。
    1. 在主数据库中,为 vCenter Server 创建一个数据库。
    2. vCenter Server 创建一个数据库用户并将其映射到 vCenter Server 和 msdb 数据库。
    例如,要创建数据库 VCDB 和用户 vpxuser,您可以运行以下脚本:
    use master
    go 
    CREATE DATABASE VCDB ON PRIMARY 
    (NAME = N'vcdb', FILENAME = N'C:\database_path\VCDB.mdf', SIZE = 10MB, FILEGROWTH = 10% ) 
    LOG ON 
    (NAME = N'vcdb_log', FILENAME = N'C:\database_path\VCDB.ldf', SIZE = 1000KB, FILEGROWTH = 10%) 
    COLLATE SQL_Latin1_General_CP1_CI_AS 
    go
    use VCDB 
    go 
    CREATE LOGIN vpxuser WITH PASSWORD=N'vpxuser!0', DEFAULT_DATABASE=VCDB, DEFAULT_LANGUAGE=us_english, CHECK_POLICY=OFF
    go 
    CREATE USER vpxuser for LOGIN vpxuser
    go
    use MSDB
    go
    CREATE USER vpxuser for LOGIN vpxuser
    go
    现在您已拥有一个可与 vCenter Server 配合使用的 Microsoft SQL Server 数据库。
  2. vCenter Server 数据库中,创建数据库架构并将其分配给 vCenter Server 数据库用户。
    例如,要在 VCDB 中创建架构 VMW 并将其分配给 vpxuser 用户,您可以运行以下脚本:
    use VCDB
    CREATE SCHEMA VMW
    go
    ALTER USER vpxuser WITH DEFAULT_SCHEMA =VMW
  3. vCenter Server 数据库中,创建特权并将其授予 VC_ADMIN_ROLE 和 VC_USER_ROLE 数据库角色,然后将这些角色分配给 vCenter Server 数据库用户。
    例如,要在 VCDB 中创建角色并将其分配给 vpxuser 用户,您可以运行以下脚本:
    use VCDB
    go
    if not exists (SELECT name FROM sysusers WHERE issqlrole=1 AND name = 'VC_ADMIN_ROLE')
    CREATE ROLE VC_ADMIN_ROLE;
    GRANT ALTER ON SCHEMA :: VMW to VC_ADMIN_ROLE;
    GRANT REFERENCES ON SCHEMA :: VMW to VC_ADMIN_ROLE;
    GRANT INSERT ON SCHEMA ::  VMW to VC_ADMIN_ROLE;
    
    GRANT CREATE TABLE to VC_ADMIN_ROLE;
    GRANT CREATE VIEW to VC_ADMIN_ROLE;
    GRANT CREATE Procedure to VC_ADMIN_ROLE;
    
    if not exists (SELECT name FROM sysusers WHERE issqlrole=1 AND name = 'VC_USER_ROLE')
    CREATE ROLE VC_USER_ROLE
    go
    GRANT SELECT ON SCHEMA ::  VMW to VC_USER_ROLE
    go
    GRANT INSERT ON SCHEMA ::  VMW to VC_USER_ROLE
    go
    GRANT DELETE ON SCHEMA ::  VMW to VC_USER_ROLE
    go
    GRANT UPDATE ON SCHEMA ::  VMW to VC_USER_ROLE
    go
    GRANT EXECUTE ON SCHEMA :: VMW to VC_USER_ROLE
    go
    sp_addrolemember VC_USER_ROLE , vpxuser
    go
    sp_addrolemember VC_ADMIN_ROLE , vpxuser
    go
  4. 在 msdb 数据库中,创建特权并将其授予 VC_ADMIN_ROLE 数据库角色,然后将此角色分配给 vCenter Server 数据库用户。
    例如,要创建角色并将其分配给 vpxuser 用户,您可以运行以下脚本:
    use MSDB
    go
    if not exists (SELECT name FROM sysusers WHERE issqlrole=1 AND name = 'VC_ADMIN_ROLE')
    CREATE ROLE VC_ADMIN_ROLE;
    go
    GRANT SELECT on msdb.dbo.syscategories to VC_ADMIN_ROLE
    go
    GRANT SELECT on msdb.dbo.sysjobsteps to VC_ADMIN_ROLE
    go
    GRANT SELECT ON msdb.dbo.sysjobs to VC_ADMIN_ROLE
    go
    GRANT SELECT ON msdb.dbo.sysjobs_view to VC_ADMIN_ROLE
    go
    GRANT EXECUTE ON msdb.dbo.sp_add_job TO VC_ADMIN_ROLE
    go
    GRANT EXECUTE ON msdb.dbo.sp_delete_job TO VC_ADMIN_ROLE
    go
    GRANT EXECUTE ON msdb.dbo.sp_add_jobstep TO VC_ADMIN_ROLE
    go
    GRANT EXECUTE ON msdb.dbo.sp_update_job TO VC_ADMIN_ROLE
    go
    GRANT EXECUTE ON msdb.dbo.sp_add_jobserver TO VC_ADMIN_ROLE
    go
    GRANT EXECUTE ON msdb.dbo.sp_add_jobschedule TO VC_ADMIN_ROLE
    go
    GRANT EXECUTE ON msdb.dbo.sp_add_category TO VC_ADMIN_ROLE
    go
    sp_addrolemember VC_ADMIN_ROLE , vpxuser
    go
    注: 仅在安装和升级 vCenter Server 时需要使用 msdb 数据库中的 VC_ADMIN_ROLE 角色。安装或升级后,可以撤销角色并将其保留为非活动状态以供将来升级使用,或者移除该角色以增加安全性。
  5. vCenter Server 数据库用户启用数据库监控。
    例如,要向 vpxuser 用户授予数据库磁盘大小监控权限,您可以运行以下脚本:
    use master
    go
    grant VIEW SERVER STATE to vpxuser
    go
    GRANT VIEW ANY DEFINITION TO vpxuser
    go