使用docker-compose安装mysql 8.4.3,并且把时区设置为上海。

volumes 配置的作用

  • /var/db/mysql/data:这是将容器内的 /var/lib/mysql 目录挂载到主机的 /var/db/mysql/data 目录。这种方式的好处是可以直接在主机上访问和管理数据文件。
version: '3.8'

services:
  db:
    image: mysql:8.4.3
    container_name: mysql_db
    environment:
      MYSQL_ROOT_PASSWORD: your_root_password
      MYSQL_DATABASE: your_database_name
      MYSQL_USER: your_user
      MYSQL_PASSWORD: your_password
      TZ: Asia/Shanghai
    volumes:
      - /opt/mysql/data:/var/lib/mysql
      - /opt/mysql/conf:/etc/mysql/conf.d
    ports:
      - "3306:3306"
    restart: always

并在宿主机上创建文件:

mkdir -p /opt/mysql/conf /opt/mysql/data /opt/mysql/logs
cat > /opt/mysql/conf/custom.cnf <<EOF
[mysqld]
innodb_buffer_pool_size = 80M
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
default-time-zone = +8:00
lower_case_table_names = 1
EOF

解释

  • /opt/mysql/data:/var/lib/mysql:将主机的 /opt/mysql/data 目录挂载到容器的 /var/lib/mysql 目录。这样,MySQL 的数据文件将存储在主机的 /opt/mysql/data 目录中(你也可以配置其它目录)。
  • /opt/mysql/conf:/etc/mysql/conf.d 将配置参数统一写到/etc/mysql/conf.d/custom.cnf

确保主机目录存在

在启动容器之前,请确保主机上的目录 /var/db/mysql/data 已经存在,并且具有适当的权限。

sudo mkdir -p /var/db/mysql/data
sudo chown -R 999:999 /var/db/mysql/data
  • 999:999 是 MySQL 容器内运行 MySQL 服务的用户和组的 UID 和 GID。您可以根据实际情况调整这些值。

启动 MySQL 容器

mysql-docker 目录下运行以下命令来启动 MySQL 容器:

docker-compose up -d

验证安装和时区设置

  1. 检查容器状态

    docker-compose ps
    
  2. 进入 MySQL 容器

    docker exec -it mysql_db mysql -uroot -p
    
  3. 验证时区设置

    SHOW VARIABLES LIKE '%time_zone%';
    SELECT NOW();
    

注意事项

  • 权限:确保主机目录 /var/db/mysql/data 具有适当的权限,以便 MySQL 容器可以读写数据。
  • 数据备份:定期备份主机上的数据目录,以防止数据丢失。
  • 路径长度:确保路径长度不超过操作系统和文件系统的限制。
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐