
Ubuntu版本:Ubuntu 20.04.2 LTS
mysql版本:8.0.27-0ubuntu0.20.04.1 (Ubuntu)
1.宿主机创建一个data文件(/home/django/mysql_slave/data)
跟着视频学习的时候,走了很多坑,docker镜像版本下载的时候已经指定为8.0.27
- 这里通过查看日志可以发现 3306端口不可使用。疑惑,命名配置文件设置的8306就是避免和主机端口冲突呀。这里容器时无法正常启动的。
sudo docker logs mysql-slave # 查看docker日志 sudo docker run --name mysql-slave -e MYSQL_ROOT_PASSWORD=mysql -d --network=host -v /home/django/mysql_slave/data:/var/lib/mysql -v /home/django/mysql_slave/mysql.conf.d:/etc/mysql/mysql.conf.d mysql # 创建mysql-slave容器
- 经过了很长时间的摸索才找到问题,通过映射端口号,不指定host网络,能够正常的运行容器
sudo docker run --name mysql-slave -e MYSQL_ROOT_PASSWORD=mysql -d -p 8306:3306 -v /home/django/mysql_slave/data:/var/lib/mysql -v /home/django/mysql_slave/mysql.conf.d:/etc/mysql/mysql.conf.d mysql
- 进入容器之后,在容器里面运行mysql正常,端口号是容器下的3306。通过各种查看,发现mysql启动只加载my.cnf的配置文件,而不加载我们提供的/etc/mysql/mysql.conf.d下的配置文件。所以用host网络就无法启动了。是不是把my.cnf文件也给容器,容器就可以正常启动了。这时,我发现其他的千奇百怪的错误,解决了一个,还有一个等着你。好吧,放弃了,不用host了!
udo docker run --name mysql-slave -e MYSQL_ROOT_PASSWORD=mysql -d -p 8306:3306 -v /home/django/mysql_slave/data:/var/lib/mysql mysql:8.0.27
netstat -anp |grep 3306 # 查看8000端口号是否被占用 sudo docker container rm -f mysql-slave # 删除我的容器,重新来过 sudo docker logs mysql-slave # 查看mysql-slave容器的日志 sudo docker exec -it mysql-slave /bin/bash # 执行mysql-slave,进入容器内部查看信息 select user,host from mysql.user; #查看MySQL信息 SHOW GLOBAL VARIABLES LIKE 'PORT'; #查看mysql运行端口号 apt-get update && apt-get install net-tools #安装net工具,这样才可以查看容器用的ip地址
最后:我的解决办法就是通过端口映射正常启动容器之后,进入容器内部运行mysql以及查看用户名和网络,也可以按照需求修改用户信息,这样外部宿主机通过指定的网络端口号就可以运行mysql了。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)