dapr 綁定 MySQL 組件

MySQL

創建 MySQL 組件,需要綁定類型爲 bindings.mysql 的組件

Dapr 底層使用 go-sql-driver/mysql 來處理 MySQL 相關操作

定義 MySQL 組件配置

apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
  name: dapr-admin-mysql       # 自定義
  namespace: dapr-admin-mysql  # 自定義
spec:
  type: bindings.mysql
  version: v1
  metadata:
    - name: url # Required, define DB connection in DSN format
      value: "root:123456@tcp(127.0.0.1:3306)/study?timeout=5s&readTimeout=5s&writeTimeout=5s&parseTime=true&loc=Local&charset=utf8,utf8mb4"
    - name: maxIdleConns
      value: "10"
    - name: maxOpenConns
      value: "10"
    - name: connMaxLifetime
      value: "12s"
    - name: connMaxIdleTime
      value: "12s"

注意

上面的例子 MySQL DSN 直接顯示了 (demo),建議使用 secret store 進行加密,具體請看。

綁定的 MySQL 支持的 API

此組件支持與以下操作的輸出綁定:

exec

exec 操作可用於 DDL 操作(如表創建),以及插入,更新,刪除僅返回元數據(例如受影響行的數量)

請求示例

{
  "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

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

可以使用 close 操作來顯式關閉 DB 連接並將其返回到池中。 此操作沒有任何響應

請求示例

{
  "operation": "close"
}

注意

MySQL binding 本身不會阻止 SQL 注入,如與任何數據庫應用程序一起驗證在執行查詢之前的輸入。

推薦使用 '?' 佔位符來解決 SQL 注入問題

參考:

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/44Le_cdWmA3dn8uBaFKrhA