docker-mysql的几个问题

来水一篇文章

文章目录

问题一:

在Navicat上执行大脚本mysql的sql文件时,出现插入数据报错的问题,查了一下innodb_log_file_size参数show variables like 'innodb_log_file_size';只有50331648即48M,所以在my.cnf配置文件(自定义的文件)中更改了此参数大小,由于没设置,这里直接写入

echo -e "[mysqld]\ninnodb_log_file_size=500M" >> my.cnf

重启mysql镜像,使配置生效,重新使用Navicat执行脚本,依旧报错。

应该是某些设置问题,直接尝试了命令行执行sql脚本。

source tsql.sql

解决。

执行之前,需要将windows中的SQL文件导入debian中,由于/mnt/目录用于挂载 Windows 系统中的磁盘和分区,所以通过该目录访问windows磁盘使用cp或者mv命令就可以实现文件复制到debian中。执行完SQL删掉脚本文件,除了占内存也没什么用了。

注:这里我用的wsl系统

问题2:

Different lower_case_table_names settings for server ('1') and data dictionary ('0').

mysql8默认不识别大小写,使用命令show variables like %case%;查看到变量默认为0,但是我在my.cnf文件设置了lower_case_table_names=1导致的,
在这里插入图片描述
在大多数情况下,这需要在第一次启动MySQL服务器之前在MySQL选项文件中配置lower_case_table_names。

于是,修改容器启动配置后指定--lower-case-table-names=1

sudo docker run -d --name mysql -p 3306:3306 \
--restart unless-stopped \
-v /usr/local/mysql/log:/var/log/mysql \
-v /usr/local/mysql/conf:/etc/mysql/conf.d \
-v /usr/local/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
mysql \
--lower-case-table-names=1

由于挂载过一次目录,所以将之前的挂载目录/data删掉,需要备份提前移动文件,或者挂载新目录,重新执行上面命令,my.cnf文件保持之前的lower-case-table-names=1配置即可。

### 启动Docker中的MySQL容器 #### 使用官方镜像启动MySQL容器 为了在Docker中启动MySQL容器,首先需要从Docker Hub获取MySQL的官方镜像。这可以通过`docker pull`命令完成: ```bash docker pull mysql:8.0 ``` 此操作会下载指定版本(这里是8.0)的MySQL镜像到本地环境[^3]。 #### 运行并配置MySQL容器 一旦镜像准备就绪,可以使用如下命令来创建和启动一个新的MySQL容器: ```bash docker run -p 3306:3306 --name=mysql-container \ -v /my/own/datadir:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=my-secret-pw \ -d mysql:8.0 ``` 上述命令做了几件重要的事情: - `-p 3306:3306`: 将主机端口映射至容器内部的服务端口。 - `--name=mysql-container`: 给定新创建的容器一个易于识别的名字。 - `-v /my/own/datadir:/var/lib/mysql`: 设置数据卷挂载路径以实现持久存储。 - `-e MYSQL_ROOT_PASSWORD=my-secret-pw`: 设定了root用户的初始密码。 - `-d mysql:8.0`: 表明以后台模式运行基于所选镜像的新容器[^4]。 #### 常见问题及其解决方案 ##### 数据库无法访问 如果遇到连接失败的情况,确认宿主机防火墙设置允许TCP流量通过3306端口,并确保已正确设置了MYSQL_ROOT_HOST变量以便接受来自特定IP地址范围内的请求[^1]。 ##### 密码策略严格导致登录困难 对于某些高安全性的环境中,默认启用强验证插件可能会阻止简单的密码设定。可以在启动参数里加入`--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci`选项放松这些限制[^2]。 ##### 容器意外停止 当发现容器非正常退出时,应该查看日志文件(`docker logs container_name`)寻找错误提示信息;另外注意资源分配是否合理以及是否存在磁盘空间不足等问题
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值