mysql服务的部署和搭建

需要配置成只读权限

chmod 444 /home/user/mysql/my.cnf


逐步检查及修复建议

1. 检查配置文件挂载路径

问题风险

  • 如果宿主机路径 /ltkj/mysql/my.cnf目录 而非文件,会导致容器内的 /etc/mysql/conf.d/my.cnf 变成目录,MySQL 无法读取配置。
  • 若宿主机文件不存在,Docker 会默认创建空目录,导致配置丢失。

验证步骤

  1. 确认宿主机文件存在

    ls -l /ltkj/mysql/my.cnf
    
    • 输出应为 -rw-r--r-- ... /ltkj/mysql/my.cnf(文件属性)。
    • 如果显示 drwxr-xr-x,说明是目录,需删除后重建为文件。
  2. 确认容器内配置文件内容

    # 进入容器查看配置
    docker exec -it mysql-test bash
    cat /etc/mysql/conf.d/my.cnf
    

    预期内容

    [mysqld]
    lower_case_table_names=1
    

2. 检查数据目录冲突

问题风险

  • /ltkj/mysql/mysql_data/ 包含旧数据且已初始化过,修改 lower_case_table_names 会导致 MySQL 启动失败。

解决方案

  1. 清理旧数据目录
    docker stop mysql-test && docker rm mysql-test
    rm -rf /ltkj/mysql/mysql_data/*
    
  2. 重新启动容器
    docker run --name mysql-test \
      -e MYSQL_ROOT_PASSWORD=ltkj \
      -v /ltkj/mysql/my.cnf:/etc/mysql/conf.d/my.cnf \
      -v /ltkj/mysql/mysql_data/:/var/lib/mysql \
      -p 13306:3306 \
      -d mysql:8.0.39
    

3. 验证 MySQL 配置

关键命令

  1. 查看 lower_case_table_names

    docker exec -it mysql-test mysql -uroot -pltkj -e "SHOW VARIABLES LIKE 'lower_case_table_names';"
    

    预期输出

    +------------------------+-------+
    | Variable_name          | Value |
    +------------------------+-------+
    | lower_case_table_names | 1     |
    +------------------------+-------+
    
  2. 检查 MySQL 错误日志

    docker logs mysql-test 2>&1 | grep -i error
    
    • 若出现类似 Different lower_case_table_names settings 的错误,说明数据目录未清理干净。

4. 配置文件权限问题

问题风险

  • 若宿主机文件权限不足,容器内 MySQL 用户(mysql:mysql)无法读取配置。

修复方法

chmod 644 /ltkj/mysql/my.cnf   # 确保文件可读
chown -R 999:999 /ltkj/mysql/mysql_data/  # MySQL 容器用户UID/GID通常为999

5. 完整正确的命令示例
# 1. 创建配置文件
mkdir -p /ltkj/mysql
echo -e "[mysqld]\nlower_case_table_names=1" > /ltkj/mysql/my.cnf

# 2. 清理旧数据
rm -rf /ltkj/mysql/mysql_data/*

# 3. 启动容器
docker run --name mysql-test \
  -e MYSQL_ROOT_PASSWORD=ltkj \
  -v /ltkj/mysql/my.cnf:/etc/mysql/conf.d/my.cnf \
  -v /ltkj/mysql/mysql_data/:/var/lib/mysql \
  -p 13306:3306 \
  -d mysql:8.0.39

故障排除流程图

检查宿主机文件是否存在 → 确认是文件而非目录 → 验证文件内容 → 清理数据目录 → 重启容器 → 登录验证配置

通过以上步骤,可确保配置正确生效。如果仍失败,请提供执行日志 (docker logs mysql-test) 进一步分析。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值