Docker搭建数据库

134 阅读1分钟

一、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服务