使用mysql作为memos的数据库

从memos v0.16.1版本开始,便开始支持mysql数据库了.

全新部署

一丶使用docker-compose方式部署

创建docker-compose.yml文件并编辑

version: "3"

services:
  db:
    image: mysql:8.1.0
    container_name: db
    restart: always
    networks:
      - memos_network
    command: 
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_general_ci
      - --explicit_defaults_for_timestamp=true
    volumes:
      - ./mysql:/var/lib/mysql
      - ./mysqlBackup:/data/mysqlBackup
    environment:
      - MYSQL_ROOT_PASSWORD=memos
      - MYSQL_DATABASE=memos
  web:
    image: ghcr.io/usememos/memos:latest
    container_name: memos
    restart: always
    networks:
      - memos_network
    volumes:
      - ./memos/:/var/opt/memos
    ports:
      - "5230:5230"
    environment:
      - MEMOS_DRIVER=mysql
      - MEMOS_DSN=root:memos@tcp(db)/memos
      - TZ=Asia/Chongqing
    depends_on:
      - db
networks:
  memos_network:

如memos容器无法启动,重启即可

docker restart memos
  • 或者使用宿主机的mysql数据库

则需要编辑

version: "3.0"
services:
  memos:
    image: neosmemo/memos:0.18.2
    container_name: memos
    network_mode: "host"    
    restart: always    
    volumes:
      - ./memos/:/var/opt/memos
    ports:
      - 5230:5230
    environment:
      - MEMOS_DRIVER=mysql
      - MEMOS_DSN=memos:password@tcp(localhost)/memos      

二丶使用docker run部署

docker run -d --name memos -p 5230:5230 -v ~/.memos/:/var/opt/memos ghcr.io/usememos/memos:latest --driver mysql --dsn 'root:password@tcp(localhost)/memos_prod'

root为数据库用户 password为数据库密码 localhost为数据库地址 memos_prod为数据库用户名 请自行更改

转换数据

v0.16.1之前的数据可以通过以下命令转换数据导入mysql

/usr/local/bin/memos --driver mysql --dsn 'dbuser:dbpass@tcp(dbhost)/dbname' copydb --from sqlite://path_to_your_memos_prod.db

很多人无法转换成功的原因,可能是 1./usr/local/bin/memos无法执行. 改为/usr/local/memos/memos即可. 2.数据库无法连接 把dbhost改为容器的内网地址.最好在转换之前在容器内执行ping命令看是否可以连通.

演示地址

https://demo.memos.im/

Comments

No comments yet. Why don’t you start the discussion?

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注