在docker中使用MySQL

12 篇文章 0 订阅
5 篇文章 0 订阅

下载MySQL

docker pull mysql:5.7.32

版本查询: https://hub.docker.com/_/mysql?tab=tags&page=1

查看常用docker 命令

创建映射目录

创建目录,用于宿主机与容器的映射,以便将数据保存在宿主机,而不是容器中。

  1. /usr/local/docker/mysql/conf,配置文件
  2. /usr/local/docker/mysql/logs,日志文件
  3. /usr/local/docker/mysql/data,数据文件

自定义MySQL配置文件

在/usr/local/docker/mysql/conf目录下创建文件:my.cnf。添加内容

[mysql]
# 客户端默认字符集
default-character-set=utf8mb4

[mysqld]
#服务端使用的字符集
character-set-server=utf8mb4
init_connect='SET NAMES utf8mb4'

# 允许的最大连接数
max-connections=200

sql_mode ='STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'

# 每个数据表使用一个文件
innodb_file_per_table=1

配置根据自己实际情况设置

启动&进入容器

启动容器

docker run -itd \
--name mysql \
-p 3306:3306 \
-v /usr/local/docker/mysql/conf:/etc/mysql \
-v /usr/local/docker/mysql/logs:/var/log/mysql \
-v /usr/local/docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.7.32

记得写mysql镜像的tag(这里的版本是5.7.32),不然docker会自动下载最新的mysql:(

进入容器&登录mysql

docker exec -it mysql /bin/bash

进入容器后,使用设置的密码(123456)登录MySQL并操作

mysql -uroot -p

测试配置是否生效

# 创建数据库
create database onlinecourse default charset utf8mb4;
use onlinecourse;
# 创建测试表
create table t_user (
    `id` char(32) not null, 
    `cn_name` varchar(100) default null, 
    primary key (`id`)) 
engine innodb;

可在/usr/local/docker/mysql/data/onlinecourse目录看到新建表对应的文件:t_user.frm, t_user.ibd

宿主机登录mysql

前提是宿主机可执行mysql命令。

mysql -uroot -p -h172.17.0.1

-h:指定MySQL容器的ip地址,这个172.17.0.1是docker虚拟网卡的IP。
通常不需要设置就可以在宿主机使用root账号登录容器中的MySQL

常见问题

  1. 现象:宿主机无法登录
  2. 解决方案:登录MySQL容器后,登录mysql,添加可远程访问的账户
grant all privileges on *.* to 'akio'@'%' identified by '123321';
flush privileges;
  1. 重新在宿主机登录
mysql -uakio -p -h172.17.0.1
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值