36 lines
1.2 KiB
SQL
36 lines
1.2 KiB
SQL
-- 1. 创建 iam_service 专用用户
|
||
CREATE USER iam_service_user WITH PASSWORD 'iam_service_password';
|
||
|
||
-- 2. 创建 iam_service 专用数据库
|
||
CREATE DATABASE iam_service_db OWNER iam_service_user;
|
||
|
||
-- 3. 赋予权限(确保它能在 iam_service_db 库里创建 Schema)
|
||
GRANT ALL PRIVILEGES ON DATABASE iam_service_db TO iam_service_user;
|
||
|
||
-- 进入 iam_service_db
|
||
|
||
-- 1. 启用 UUID 扩展
|
||
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
|
||
|
||
-- 2. 租户表
|
||
CREATE TABLE tenants (
|
||
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
||
name VARCHAR(255) NOT NULL,
|
||
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
|
||
);
|
||
|
||
-- 3. 用户表 (多租户核心)
|
||
CREATE TABLE users (
|
||
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
||
tenant_id UUID NOT NULL REFERENCES tenants(id),
|
||
email VARCHAR(255) NOT NULL,
|
||
password_hash VARCHAR(255) NOT NULL,
|
||
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
|
||
);
|
||
|
||
-- 4. 关键:创建联合唯一索引
|
||
-- 允许不同租户拥有相同的 email,但同一租户内 email 必须唯一
|
||
CREATE UNIQUE INDEX idx_users_tenant_email ON users(tenant_id, email);
|
||
|
||
-- 5. 初始化一个测试租户 (方便后续测试)
|
||
INSERT INTO tenants (id, name) VALUES ('11111111-1111-1111-1111-111111111111', 'Default Corp'); |