一、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
这样容器内的 /var/lib/mysql 目录映射到了宿主机的D:/volume/mysql目录上,容器没了数据还在
3. 远程连接
进入容器
docker exec -it <容器id/容器名> bash
登录
mysql -u root -p
允许远程登录
grant all privileges on *.* to 'root'@'%' identified by '刚设置的MYSQL密码';
flush privileges;
测试:新建一个数据库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
在mysqld.cnf最后追加:
performance_schema_max_table_instances=400
table_definition_cache=400
table_open_cache=256
重启容器或者重启MySQL服务