一、安装Docker

# 使用一键脚本
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

二、拉取MySQL镜像

这里默认拉取的是最新版的MySQL,如果想拉具体版本的可以到仓库里查找标签,在后面加上版本号就好,如MySQL的5.7版本,使用mysql:5.7。

docker pull mysql

下面的仓库中可以找到你想要的版本。

https://hub.docker.com/_/mysql?tab=tags

拉取完成后我们看一下我们的镜像

docker images

三、启动

略过上面的操作,也可以直接复制下面的命令,我这里使用5.7的版本并将端口映射为12345,做数据持久化。

docker run \
-p 12345:3306 \
--name mysql \
-v /docker/mysql/conf:/etc/mysql/conf.d \
-v /docker/mysql/logs:/logs \
-v /docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7
docker run -d --restart=always -p 3306:3306 --privileged=true -v /mnt/disk0/appdata/mysql/conf:/etc/mysql/conf.d -v /mnt/disk0/appdata/mysql/data:/var/lib/mysql  -v /mnt/disk0/appdata/mysql/logs:/logs -eMYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci

参数说明:

run:run 是运行一个容器
-d:表示后台运行
-p:表示容器内部端口和服务器端口映射关联
--privileged=true:设值MySQL 的root用户权限, 否则外部不能使用root用户登陆
-v /docker/mysql/conf/my.cnf:/etc/my.cnf:将服务器中的my.cnf配置映射到docker中的/docker/mysql/conf/my.cnf配置
-v /docker/mysql/data:/var/lib/mysql:同上,映射数据库的数据目录, 避免以后docker删除重新运行MySQL容器时数据丢失
-e MYSQL_ROOT_PASSWORD=123456:设置MySQL数据库root用户的密码
--name mysql:设值容器名称为mysql
mysql:5.7:表示从docker镜像mysql:5.7中启动一个容器
--character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci:设值数据库默认编码

新建MySQL用户:
先进入容器

docker exec -it mysql bash

执行MySQL命令, 输入root密码, 连接MySQL

mysql -uroot -p

输入密码后, 执行下面命令创建新用户 (用户名: test , 密码: test123)

GRANT ALL PRIVILEGES ON *.* TO 'test'@'%' IDENTIFIED BY 'test123' WITH GRANT OPTION;

我们可以通过下面的命令登录进去这个MySql里面来管理,也可以使用第三方的工具来连接12345端口。

  1. 获取容器的id

    docker ps
  2. 进入容器

    # 把容器id替换成你自己的
    docker exec -it id /bin/bash
    # 也可以直接使用下面的命令,效果一样
    docker exec -it mysql /bin/bash
  3. 输入用户名密码登录,然后就可以正常使用了

    mysql -uroot -p123456

当然也可以用第三方软件DBeaver来连接,此款软件社区版免费,功能也强大,推荐给大家!

最后说一句,不建议在docker里运行MySQL数据库软件,仅当测试或数据重要性不高时使用。