目录
一、Docker搭建MySQL
1. 获取镜像
docker pull mysql:5.7
2. 运行镜像
2.1 不映射目录
docker run -itd -p 主机端口:3306 -e MYSQL_ROOT_PASSWORD= 密码 镜像id
- -p 3306:3306 即将容器的3306端口映射到主机的3306端口上
- -e MYSQL_ROOT_PASSWORD=123456 设置用户为root,密码为123456
不映射目录的情况下数据不能持久化保存,容器没了就得跑路了
2.2 映射目录
docker run -itd -p 主机端口:3306 -v 宿主机目录:/var/lib/mysql -e MYSQL_ROOT_PASSWORD= 密码 镜像id
- -v 宿主机目录:容器目录 将容器内的目录文件映射到宿主机对应的目录下
这样就容器内的 /var/lib/mysql 目录映射到了宿主机的D:/volume/mysql目录上,容器没了数据还在
2.3 设置UTF-8格式
docker run -itd -p 主机端口:3306 -e MYSQL_ROOT_PASSWORD=密码 --mysql --character-set-server=utf8 --collation-server=utf8_general_ci 镜像id
–character-set-server=utf8 : 设置字符集为utf8
–collation-server=utf8_general_cli : 设置字符比较规则为utf8_general_cli
3. 远程连接
3.1 登录MySQL
docker exec -it 容器id bash
mysql -u root -p
输入刚才设置的密码
3.2 允许远程登录
grant all privileges on *.* to 'root'@'%' identified by 'MYSQL密码';
flush privileges;
3.4 测试
新建一个数据库Test
如果设置了目录映射的话就能在宿主机中看见了
4.常见问题
4.1 中文乱码问题
进入容器内,执行
echo "character-set-server=utf8" >> /etc/mysql/mysql.conf.d/mysqld.cnf
service mysql restart
4.2 降低容器占用内存
进入容器内,执行
vim /etc/mysql/mysql.conf.d/mysqld.cnf
在该文件的最后追加
performance_schema_max_table_instances=400
table_definition_cache=400
table_open_cache=256
重启容器或者重启MySQL服务即可