

# Amazon RDS 上的 MariaDB 安全性
<a name="MariaDB.Concepts.UsersAndPrivileges"></a>

MariaDB 数据库实例的安全性在三个级别上进行管理：
+ AWS Identity and Access Management 控制可以对数据库实例执行 Amazon RDS 管理操作的人员。使用 IAM 证书连接到AWS时，您的 IAM 账户必须具有授予执行 Amazon RDS 管理操作所需的权限的 IAM 策略。有关更多信息，请参阅 [Amazon RDS 的 Identity and Access Management](UsingWithRDS.IAM.md)。
+ 创建数据库实例时，可以使用 VPC 安全组控制哪些设备和 Amazon EC2 实例能够建立到数据库实例的端点和端口的连接。可以使用安全套接字层 (SSL)/传输层安全性协议 (TLS) 建立这些连接。此外，公司的防火墙规则也可以控制公司中运行的哪些设备可以建立到数据库实例的连接。
+ 建立到 MariaDB 数据库实例的连接之后，以与独立 MariaDB 实例相同的方式应用登录和权限的身份验证。`CREATE USER`、`RENAME USER`、`GRANT`、`REVOKE` 和 `SET PASSWORD` 等命令的作用与它们在独立数据库中的作用相同，就像直接修改数据库架构表。

 当您创建 Amazon RDS 数据库实例时，主用户有以下默认权限：
+  `alter` 
+  `alter routine` 
+  `create` 
+  `create routine` 
+  `create temporary tables` 
+  `create user` 
+  `create view` 
+  `delete` 
+  `drop` 
+  `event` 
+  `execute` 
+  `grant option` 
+  `index` 
+  `insert` 
+  `lock tables` 
+  `process` 
+  `references` 
+  `reload` 

  该权限仅限在 MariaDB 数据库实例上使用。它不授予对 `FLUSH LOGS` 或 `FLUSH TABLES WITH READ LOCK` 操作的访问权限。
+  `replication client` 
+  `replication slave` 
+  `select` 
+  `show create routine` 

  此权限仅适用于运行 11.4 及更高版本的 MariaDB 数据库实例。
+  `show databases` 
+  `show view` 
+  `trigger` 
+  `update` 

有关这些权限的更多信息，请参阅 MariaDB 文档中的[用户账户管理](http://mariadb.com/kb/en/mariadb/grant/)。

**注意**  
尽管您可以删除数据库实例上的主用户，但我们不建议这样做。要重新创建主用户，请使用 `ModifyDBInstance` API 或 `modify-db-instance` AWS CLI，并用相应参数指定一个新的主用户密码。如果实例中不存在主用户，将使用指定的密码创建主用户。

要为每个数据库实例提供管理服务，需在创建数据库实例时创建 `rdsadmin` 用户。如果试图删掉、重命名、修改 `rdsadmin` 账户的密码，或者修改该账户的权限，会导致出错。

若要允许管理数据库实例，需限制标准的 `kill` 和 `kill_query` 命令。提供了 Amazon RDS 命令 `mysql.rds_kill`、`mysql.rds_kill_query` 和 `mysql.rds_kill_query_id` 以便在 MariaDB 和 MySQL 中使用，因此您可以结束数据库实例上的用户会话或查询。