TiDB Starter (旧Serverless) でユーザーの作成と権限の付与手順纏め

に公開

いままでこのブログではTiDB Starterを中心に様々な機能を試してきましたが、すべてフォルトのビルトインユーザーを使ってきました。

通常の運用では強い権限を持つrootを利用することはあまりないため、操作用のユーザーを作成することになります。TiDB Starterのユーザーはプリフィクスという概念で管理されているため少し特殊なので以下に手順を纏めておきます。

プリフィクスとは

https://docs.pingcap.com/ja/tidbcloud/select-cluster-tier/#tidb-cloud-serverless
デフォルトのビルトインユーザーを用いた接続は以下になります。

mysql \
  -h gateway01.us-west-2.prod.aws.tidbcloud.com \
  -P 4000 \
  -u 237VxcjMhxqE85K.root \
  -p \
  test

237VxcjMhxqE85Kがプリフィクスです。TiDB Cloud Starterはマルチテナント構成になっており、同一クラスタ上に複数のユーザーインスタンスが共存しています。このため、ユーザーごとに一意の接続ユーザー名(例: 237VxcjMhxqE85K.kameoncloud のように prefix を含む形式)で識別されるよう設計されています。
このため操作用ユーザーの作成でもプリフィクスを指定する必要があります。

さっそくやってみる

1. ユーザーの作成とログイン

CREATE USER '237VxcjMhxqE85K.kameoncloud';

このままではパスワードが設定されていないため、パスワードを指定します。

ALTER USER '237VxcjMhxqE85K.kameoncloud'@'%' IDENTIFIED BY 'testpassword';

尚パスワードを設定していない状態ですと、証明書ベースでのアクセスであれば以下でアクセスができますが、パスワードなしれログインできてしまうため危険です。パスワードは設定しておいた方がよさそうです。

mysql -u 237VxcjMhxqE85K.kameoncloud -h gateway01.us-west-2.prod.aws.tidbcloud.com -P 4000 -D test --ssl-mode=VERIFY_IDENTITY --ssl-ca=cert.pem

以下のコマンドであればユーザー作成とパスワード設定を同時に行えますので、以下を使った方がよさそうです。

CREATE USER '237VxcjMhxqE85K.kameoncloud'@'%' IDENTIFIED BY 'YourStrongPassword!';

2. 権限の付与

以下のSQLでユーザーが付与する権限を確認できます。

SHOW GRANTS FOR '237VxcjMhxqE85K.kameoncloud'@'%';

デフォルトでは何も権限を保有していません。以下のSQLで権限を付与します。

GRANT ALL PRIVILEGES ON test.* TO '237VxcjMhxqE85K.kameoncloud'@'%';
FLUSH PRIVILEGES;

3. テスト

以下の一連のSQLを実行してテストします。

USE test;

CREATE TABLE users (
  id INT AUTO_INCREMENT PRIMARY KEY,
  username VARCHAR(50) NOT NULL,
  email VARCHAR(100) UNIQUE,
  created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);

INSERT INTO users (username, email)
VALUES
  ('alice', 'alice@example.com'),
  ('bob', 'bob@example.com');

SELECT * FROM users;
+----+----------+-------------------+---------------------+
| id | username | email             | created_at          |
+----+----------+-------------------+---------------------+
|  1 | alice    | alice@example.com | 2025-10-05 03:01:04 |
|  2 | bob      | bob@example.com   | 2025-10-05 03:01:04 |
+----+----------+-------------------+---------------------+
2 rows in set (0.11 sec)

Discussion