数据库建表规范

参考

命名规范

  • 基础规则:

    • 禁用保留字: 如desc、range、match、delayed等,请参考MySQL官方保留字。
      正例:表达逻辑删除的字段名is_deleted,1表示删除,0表示未删除。
    • 使用小写字母或数字: 禁止出现数字开头,禁止两个下划线中间只
      出现数字。
      正例:aliyun_admin,rdc_config,level3_name
      反例:AliyunAdmin,rdcConfig,level_3_name
    • 是与否概念: ,必须使用is_xxx的方式命名,数据类型是unsigned tinyint
      ( 1表示是,0表示否)。
  • 表名

    • 不使用复数: 表名应该仅仅表示表里面的实体内容,不应该表示实体数量,对应于DO类名也是单数
      形式,符合表达习惯。
    • 命名规范: 表的命名最好是加上“业务名称_表的作用”。正例:alipay_task / force_project / trade_config
  • 字段名

    • 索引: 主键索引名为pk_字段名;唯一索引名为uk_字段名;普通索引名则为idx_字段名。
      说明:pk_ 即primary key;uk_ 即 unique key;idx_ 即index的简称。

表规范

  • 必备字段: 表必备三字段:id, gmt_create, gmt_modified。
    说明:其中id必为主键,类型为unsigned bigint、单表时自增、步长为1。gmt_create, gmt_modified 的类型均为date_time类型,前者现在时表示主动创建,后者过去分词表示被动更新。

WAF 长亭雷池

参考

环境依赖

  • 1 核 CPU / 1 GB 内存 / 5 GB 磁盘
  • Linux系统
  • Docker 20.10.14 版本以上
  • Docker Compose 2.0.0 版本以上

手动安装雷池

  1. 安装 Docker
  2. 下载雷池镜像。本地下载
  3. 创建自定义雷池安装目录,如:mkdir -p "/data/safeline",并且进入到当前目录下。
  4. 下载 docker compose 编排脚本。
    wget "https://waf-ce.chaitin.cn/release/latest/compose.yaml"
  5. 在安装目录下创建.env文件,并写入以下内容。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SAFELINE_DIR=/data/safeline
    IMAGE_TAG=latest
    MGT_PORT=9443
    POSTGRES_PASSWORD=yourpassword
    SUBNET_PREFIX=172.22.222
    IMAGE_PREFIX=swr.cn-east-3.myhuaweicloud.com/chaitin-safeline
    ARCH_SUFFIX=
    RELEASE=
    REGION=
    • SAFELINE_DIR:雷池安装目录,默认为/data/safeline
    • IMAGE_TAG:雷池镜像版本,默认为latest
    • MGT_PORT:雷池管理端口,默认为9443
    • POSTGRES_PASSWORD:雷池所需数据库的初始化密码,请随机生成一个
    • SUBNET_PREFIX:雷池内部网络的网段,保持默认的 172.22.222 即可
    • IMAGE_PREFIX:雷池镜像源的前缀,建议根据服务器地理位置选择合适的源
    • ARCH_SUFFIX:雷池架构的后缀,ARM 服务器需要配置为 -arm
    • RELEASE:更新通道,LTS 版本需要配置为 -lts
  6. 执行docker compose up -d

密码管理器Vaultwarden

参考

Vaultwarden安装

  1. 安装docker
  2. 下载vaultwarden/server镜像:本地下载
  3. 使用Docker Compose部署vaultwarden,
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    vaultwarden:
    image: vaultwarden/server:1.32.7
    container_name: vaultwarden-vaultwarden
    networks:
    - vw-network
    ports:
    - "80:80"
    volumes:
    - /root/vaultwarden/data:/data # 挂载本地目录到容器内的/data目录,用于持久化数据
    environment:
    - WEBSOCKET_ENABLED=false # 可选:启用WebSocket支持
    - SIGNUPS_ALLOWED=true # 可选:禁止注册(如果你只想自己使用或控制用户注册)
    # 更多环境变量可以根据需求添加,例如设置管理员令牌等
  4. 访问http://localhost:80即可使用vaultwarden。

使用Nginx反向代理实现HTTPS(可选)

  1. 使用Docker Compose部署vaultwarden与nginx
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    version: '3'
    services:
    #服务的名称
    vaultwarden:
    image: vaultwarden/server:1.32.7
    container_name: vaultwarden-vaultwarden
    # restart: always
    networks:
    - vw-network
    volumes:
    - /root/vaultwarden/data:/data # 挂载本地目录到容器内的/data目录,用于持久化数据
    environment:
    - WEBSOCKET_ENABLED=false # 可选:启用WebSocket支持
    - SIGNUPS_ALLOWED=true # 可选:禁止注册(如果你只想自己使用或控制用户注册)
    # 更多环境变量可以根据需求添加,例如设置管理员令牌等
    nginx:
    image: nginx:1.27.3
    container_name: vaultwarden-nginx
    networks:
    - vw-network
    ports:
    - "8085:443"
    volumes:
    - /root/vaultwarden/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf:ro
    - /etc/letsencrypt/live/exwckv.top/fullchain.pem:/etc/nginx/certs/fullchain.pem:ro
    - /etc/letsencrypt/live/exwckv.top/privkey.pem:/etc/nginx/certs/privkey.pem:ro

    networks:
    vw-network:
    driver: bridge

  2. 配置nginx的default.conf文件。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    # /etc/nginx/conf.d/default.conf
    server {
    listen 80;
    server_name exwckv.top;
    return 301 https://$host$request_uri; # 将所有HTTP请求重定向到HTTPS
    }

    server {
    listen 443 ssl;

    # 如果没有域名,可以省略 server_name 指令
    # 或者直接指定服务器的公网IP地址
    server_name exwckv.top;

    ssl_certificate /etc/nginx/certs/fullchain.pem; # 指定SSL证书的位置
    ssl_certificate_key /etc/nginx/certs/privkey.pem; # 指定SSL私钥的位置

    location / {
    # 使用Docker Compose 中代理的服务名称
    proxy_pass http://vaultwarden;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    }
    }

mysql权限管理

参考

mysql的数据级别

  • 全局:作用于整个mysql服务器,就是你安装的这个mysql服务都有效。
  • 数据库:作用于某个数据库,比如test数据库。
  • 数据库对象:某个数据库中的某个对象,比如某个表、某个视图、某个存储过程等。

权限详细解析

  • SELECT:查询数据,select权限在执行update/delete语句中含有where条件的情况下也是需要的。
  • INSERT:插入数据,执行insert语句的时候需要。
  • UPDATE:更新数据,执行update语句的时候需要。
  • DELETE:删除数据,执行delete语句的时候需要。代表允许删除行数据的权限。
  • DROP:删除数据库、表、视图的权限,包括truncate table命令。
  • CREATE:允许创建新的数据库和表的权限。
  • ALTER:代表允许修改表结构的权限,但必须要求有create和insert权限配合。如果是rename表名,则要求有alter和drop原表, create和insert新表的权限
  • Grant option:允许用户授权给其他用户。重新付给管理员的时候需要加上这个权限。

数据库相关概念

参考

数据库相关概念

  • 主键:唯一标识表中的一行数据,不能为空,且不能重复。确保每行数据唯一。
  • 索引:是一种数据结构,用于加快数据库查询的速度和性能。添加索引就是为字段添加目录,方便查阅。
    • 索引能加快字段的查询速度。
    • 索引要额外占用空间。
    • 索引会增加数据插入,更新,删除操作的时间。
  • 存储过程:是一组SQL语句的集合,用来实现一些复杂的功能,比如增删改查,或者一些业务逻辑。
    • 性能快。
    • 存储过程可以提高安全性。
    • 调试困难。
    • 移植性差。
    • 版本管理控制麻烦。

权限管理系统

基本概念

  • 用户:有时候也叫账号,代表这个系统的使用者,也就是现实中的人员。
  • 权限:代表你有没有权利干这件事,比如查看软件的收入,上传代码。
  • 角色权限的集合,一般一个员工他们工作需要好几个权限,但是都是程序员或者都是财务这些,那么同一类人要的权限就一样,把这些权限集合下就是角色。
  • 用户组用户的集合,员工少时候用不到,但是员工多时候就需要,比如有10个员工,他们需要做同样的事情,那么就建一个组,把这10个员工都放在这个组里面,这样以后就不用再管这10个员工了,直接给组权限就行了。

安装 Docker

参考

Linux安装Docker

常用命令

  1. apt-get update 更新包索引
  2. apt-get install apt-transport-https ca-certificates curl software-properties-common 安装必要的依赖
  3. 添加阿里云源到您的实例中,这个源包含Docker软件包,方便您使用命令来安装和更新Docker。(二选一)

    如果您的实例网络可以访问公网。

    apt-get -y install apt-transport-https ca-certificates curl software-properties-common
    1
    2
    3
    sudo curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/debian/gpg | sudo apt-key add -
    sudo add-apt-repository -y "deb [arch=$(dpkg --print-architecture)] https://mirrors.aliyun.com/docker-ce/linux/debian $(lsb_release -cs) stable"
    sudo apt-get update

    使用VPC网络访问地址。
    1
    2
    3
    4
    sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
    sudo curl -fsSL http://mirrors.cloud.aliyuncs.com/docker-ce/linux/debian/gpg | sudo apt-key add -
    sudo add-apt-repository -y "deb [arch=$(dpkg --print-architecture)] http://mirrors.cloud.aliyuncs.com/docker-ce/linux/debian $(lsb_release -cs) stable"
    sudo apt-get update

  4. sudo apt-get -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin 安装Docker社区版本,容器运行时containerd.io,以及Docker构建和Compose插件。
  5. sudo systemctl start docker sudo systemctl enable docker 设置Docker自动启动
  6. docker -v 查看Docker 是否正常安装

安装Docker Compose

  1. docker compose version 查看是否已经安装-按上面是已经安装

Windows安装Docker

Docker Engine stopped问题

  • 检查服务是否开启
    1. Windows + R 输入services.msc
    2. 查找Docker Desktop Service服务,如果状态为停止,则需要重新启动服务。
  • 检查CPU是否正常开启虚拟化
    1. Ctrl + Shift + Esc 打开任务管理器
    2. 查看CPU的虚拟化是否正常开启。
  • 检查Hyper-V是否正常。
    1. 打开启用或关闭Windows功能
    2. 找到Hyper-V,全部正常勾选

Docker配置镜像仓库

  1. 查找Docker配置文件。
    • Debian/etc/docker/daemon.json,没有则创建文件。
    • Windows:直接在 设置 -> Docker Engine 处进行修改
  2. 添加配置信息。
    1
    2
    3
    {
    "registry-mirrors": ["https://你的镜像加速器地址"]
    }
  3. 重启Docker服务,使配置生效。
  • Debiansudo systemctl daemon-reload:重新加载配置文件。sudo systemctl restart docker: 重启docker服务。