Docker学习笔记十二:Docker安装MySQL
下载
- 命令:docker pull mysql:5.7
- 安装可参考Docker Hub官网说明的镜像的用法
安装
不挂载目录启动容器
- 创建容器
- 命令:docker run -d --name=mysql1 -p 3307: 3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
- 说明:容器创建成功之后,进入容器可直接使用mysql命令行;外部连接时不需要像单机版安装一样要设置远程连接才可以连接MySQL。(注:update mysql.user set host='%' where user='root';)
挂载目录启动容器
说明
- 1、由于删除容器之后数据都会丢失,针对数据库而言,挂载目录对数据进行持久化存储是非常必要的。
- 2、容器删除之后,只要挂载的数据在宿主机持久化保存,新建容器再次映射挂载的目录就可以立即继续使用,数据不会丢失。
安装
- a、准备my.conf文件
- 说明:如下配置文件可供复制,配置文件内容可根据需要添加相应配置。
- 注意1:配置文件名是my.cnf,不要写错否则会导致不生效。(亲测遇到过坑:my.cnf写成了my.conf,导致配置无法生效,太粗心了)。
- 注意2:安装好mysql之后,在容器中(不是客户端)使用:show variables like 'character%';检查配置文件的字符编码是否生效。
[client] # 设置客户端的字符集 default-character-set=utf8 [mysqld] # 配置mysql数据存放的位置 datadir=/var/lib/mysql # 配置mysql数据库的端口号 port=3306 # 配置最大连接数 max_connections=600 # 配置默认的存储引擎INNODB default-storage-engine=INNODB # 配置忽略大小写,0:表示大小写敏感,1:表示忽略大小写 lower_case_table_names=1 # 配置服务端的字符集 character-set-server=utf8 collation-server=utf8_general_ci # 配置开启慢查询日志、并指定位置 slow_query_log slow_query_log_file=/var/log/mysql/mysqld_slow.log # 配置sql模式 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
- b、创建mysql挂载目录(路径任意)
- 命令:mkdir -p /opt/docker_data/mysql/config
- 命令:mkdir -p /opt/docker_data/mysql/logs
- 命令:mkdir -p /opt/docker_data/mysql/data
- 说明:创建logs日志挂载目录、data数据存储目录、config配置文件目录(可将my.conf文件放置在该目录下)。
- c、创建容器
docker run -d \ --name=mysql1 \ -p 3307:3306 \ --privileged=true \
--restart=always \ -v /opt/docker_data/mysql/config/:/etc/mysql/conf.d \ -v /opt/docker_data/mysql/data/:/var/lib/mysql \ -v /opt/docker_data/mysql/logs/:/var/log/mysql \ -e MYSQL_ROOT_PASSWORD=123456 \ -e TZ=Asia/Shanghai \ mysql:5.7 # docker run:运行并启动容器 # -d:在后台运行容器,并输出容器ID # --name:设置容器的名称 # -p 3307:3306:容器的3306端口映射宿主机3307端口(程序访问端口) # --privileged=true:可选配置,目录映射时避免出现权限问题
# --restart=always:配置启动策略,always表示总是自启动 # -v:设置"宿主机目录:容器目录"映射位置 # -e:设置时区、mysql的密码 # 执行安装的镜像信息,格式:名称:标签(REPOSITORY:TAG)
- d、连接mysql服务