The documentation you are viewing is for Dapr v1.12 which is an older version of Dapr. For up-to-date documentation, see the latest version.

MySQL 绑定规范

MySQL 组件绑定详细说明

配置

要设置 MySQL 绑定,请创建一个类型为 bindings.mysql的组件。 请参阅本指南,了解如何创建和应用绑定配置。

MySQL 绑定在内部使用Go-MySQL-驱动程序

apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
  name: <NAME>
  namespace: <NAMESPACE>
spec:
  type: bindings.mysql
  version: v1
  metadata:
    - name: url # Required, define DB connection in DSN format
      value: <CONNECTION_STRING>
    - name: pemPath # Optional
      value: <PEM PATH>
    - name: maxIdleConns
      value: <MAX_IDLE_CONNECTIONS>
    - name: maxOpenConns
      value: <MAX_OPEN_CONNECTIONS>
    - name: connMaxLifetime
      value: <CONNECTILN_MAX_LIFE_TIME>
    - name: connMaxIdleTime
      value: <CONNECTION_MAX_IDLE_TIME>

元数据字段规范

字段 必填 绑定支持 详情 示例
url 输出 以数据源名称 (DNS) 格式表示数据库连接。 请参阅 此处 SSL 详细信息 "user:password@tcp(localhost:3306)/dbname"
pemPath 输出 PEM 文件的路径。 用于SSL 连接 "path/to/pem/file"
maxIdleConns 输出 最大空闲连接数。 大于 0 的整数 "10"
maxOpenConns 输出 最大打开连接数。 大于 0 的整数 "10"
connMaxLifetime 输出 最长连接生存期。 持续时间字符串 "12s"
connMaxIdleTime 输出 最大连接空闲时间。 持续时间字符串 "12s"

Ssl 连接

如果您的服务器需要 SSL,则连接字符串必须以 &tls=custom 结尾,例如:

"<user>:<password>@tcp(<server>:3306)/<database>?allowNativePasswords=true&tls=custom"

您必须使用完整的PEM文件路径替换 <PEM PATH> 。 如果你使用 运行在 Azure 上的 MySQL 请查阅 Azure 关于SSL数据库连接的文档,来了解有关如何下载必要凭证的信息。 与 MySQL 的连接至少需要1.2版本及以上的 TLS。

绑定支持

该组件支持以下操作的 输出绑定

  • exec
  • query
  • close

执行

exec 操作可用于 DDL 操作(如表创建),以及 INSERTUPDATEDELETE 仅返回元数据的操作(例如受影响的行数)。

请求

{
  "operation": "exec",
  "metadata": {
    "sql": "INSERT INTO foo (id, c1, ts) VALUES (1, 'demo', '2020-09-24T11:45:05Z07:00')"
  }
}

响应

{
  "metadata": {
    "operation": "exec",
    "duration": "294µs",
    "start-time": "2020-09-24T11:13:46.405097Z",
    "end-time": "2020-09-24T11:13:46.414519Z",
    "rows-affected": "1",
    "sql": "INSERT INTO foo (id, c1, ts) VALUES (1, 'demo', '2020-09-24T11:45:05Z07:00')"
  }
}

查询

query 操作用于 SELECT 语句,该语句以行值数组的形式返回元数据和数据。

请求

{
  "operation": "query",
  "metadata": {
    "sql": "SELECT * FROM foo WHERE id < 3"
  }
}

响应

{
  "metadata": {
    "operation": "query",
    "duration": "432µs",
    "start-time": "2020-09-24T11:13:46.405097Z",
    "end-time": "2020-09-24T11:13:46.420566Z",
    "sql": "SELECT * FROM foo WHERE id < 3"
  },
  "data": "[
    [0,\"test-0\",\"2020-09-24T04:13:46Z\"],
    [1,\"test-1\",\"2020-09-24T04:13:46Z\"],
    [2,\"test-2\",\"2020-09-24T04:13:46Z\"]
  ]"
}

关闭

最后, close 操作可用于显式关闭数据库连接并将其返回到池中。 此操作没有任何响应。

请求

{
  "operation": "close"
}

请注意,MySQL绑定本身不会阻止SQL注入,就像任何数据库应用程序一样,在执行查询之前验证输入。

相关链接