首先拉取 MySQL 官方镜像:
docker pull mysql:latest
运行 MySQL 容器并设置不区分大小写:
docker run --name some-mysql \
-e MYSQL_ROOT_PASSWORD=your_password \
-e MYSQL_DATABASE=your_database \
-v /path/to/your/local/data:/var/lib/mysql \
-p 3306:3306 \
-d mysql:latest \
--lower_case_table_names=1
--lower_case_table_names=1
:这是设置 MySQL 不区分大小写的关键参数
-v /path/to/your/local/data:/var/lib/mysql
:将 MySQL 数据目录挂载到宿主机,确保数据持久化
首次设置非常重要:lower_case_table_names
参数必须在首次初始化数据库时设置,之后更改需要重新初始化数据库。
数据目录问题:如果之前已经运行过 MySQL 容器,需要先删除旧的数据目录或使用新的数据目录。
权限问题:确保挂载的本地目录有适当的权限(MySQL 容器使用 mysql
用户运行)。
版本兼容性:某些 MySQL 版本可能对此参数有特殊要求,建议使用较新的 MySQL 版本。
进入容器验证设置是否生效:
docker exec -it some-mysql mysql -uroot -p
然后执行:
SHOW VARIABLES LIKE 'lower_case_table_names';
应该会显示:
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| lower_case_table_names | 1 |
+------------------------+-------+
如果使用 Docker Compose,可以创建以下 docker-compose.yml
文件:
version: '3.8'
services:
mysql:
image: mysql:latest
container_name: mysql
environment:
MYSQL_ROOT_PASSWORD: your_password
MYSQL_DATABASE: your_database
volumes:
- ./mysql-data:/var/lib/mysql
ports:
- "3306:3306"
command: --lower_case_table_names=1
然后运行:
docker-compose up -d
这样就完成了 MySQL 容器的安装并设置了不区分大小写。