Linux环境使用docker安装mysql8.0.20

  1. 先拉取镜像:
    docker pull mysql:8.0.20
    
    重要 !!!
    ps: 鉴于在虚拟机配置总是外部连接不上mysql的问题:直接换个镜像  docker pull springbig/mysql8-bb 
    	 这个镜像无需额外配置,直接启动即可,已经默认配置好了
    	 第15个步骤改下镜像的名字
    
    	docker run \
    	-p 3306:3306 \
    	--name mysql8 \
    	--privileged=true \
    	--restart unless-stopped \
    	-v /home/mysql8/conf/my.cnf:/etc/mysql/my.cnf \
    	-v /home/mysql8/logs:/logs \
    	-v /home/mysql8/data:/var/lib/mysql \
    	-v /etc/localtime:/etc/localtime \
    	-e MYSQL_ROOT_PASSWORD=111111 \
    	-d springbig/mysql8-bb 
    	 
    
  2. 查看镜像:
    docker images
    
    在这里插入图片描述
  3. 运行容器:
    docker run  --name mysql8 -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0.20
    
  4. 查看容器运行日志,没有报错继续:
    docker logs mysql8
    
  5. 进入容器内部:
    docker exec -it mysql8 /bin/bash
    
  6. 查看my.cnf文件:
    cat /etc/mysql/my.cnf
    
  7. 退出容器:
    exit
    
  8. 在宿主机上创建一个目录用于挂载数据(我这里在home创建,你们随意):
    mkdir -p /home/mysql8/conf /home/mysql8/data
    如果后面没有权限需要授权: 
    chmod -R 755 /home/mysql8/
    
  9. 将my.cnf拷贝到宿主机:
    docker cp 容器名:要拷贝的文件在容器里面的路径       要拷贝到宿主机的相应路径 
    docker cp mysql8:/etc/mysql/my.cnf /home/mysql8/conf
    
  10. 修改配置my.cnf,可以根据自己的特定需求更改,这个文件要挂载容器的,这里要注意的是配置文件中的datadir属性目录要和容器的目录以及挂载的容器目录一致,不要随意更改。我这边加了这两个属性,设置字符集
    vi /home/mysql8/conf/my.cnf
    打开文件后添加两个属性:
    character_set_server = utf8mb4
    collation_server = utf8mb4_bin
    
  11. 停止容器:
    docker stop mysql8
    
  12. 删除容器:
    docker rm mysql8
    
  13. 进入刚刚创建的目录:
    cd /home/mysql8
    
  14. 创建文件:
    vi mysql8-docker-run.sh
    
  15. 复制下面的脚本到创建的文件中,密码MYSQL_ROOT_PASSWORD设置成了6个1:
    #!/bin/sh
    docker run \
    -p 3306:3306 \
    --name mysql8 \
    --privileged=true \
    --restart unless-stopped \
    -v /home/mysql8/conf/my.cnf:/etc/mysql/my.cnf \
    -v /home/mysql8/logs:/logs \
    -v /home/mysql8/data:/var/lib/mysql \
    -v /etc/localtime:/etc/localtime \
    -e MYSQL_ROOT_PASSWORD=111111 \
    -d mysql:8.0.20
    
  16. 查看:
    在这里插入图片描述
  17. 执行:
    sh mysql8-docker-run.sh
    
  18. 再次查询日志是否报错:
    docker logs mysql8
    
  19. navicat 测试:
    在这里插入图片描述
  20. 进入挂载的宿主机data目录:
    cd /home/mysql8/data
    
  21. ls命令查看数据:
    在这里插入图片描述
  22. 使用navicat创建test数据库以及test数据表,然后再次ls 查看,多了一张test:在这里插入图片描述
  23. 进入容器,并查看容器的datadir对应的目录:
	docker exec -it mysql8 /bin/bash
	cd /var/lib/mysql
  1. ls查看发现也多了一张test:
    在这里插入图片描述
  2. 使用exit退出容器,然后执行停止并删除mysql8容器的命令:
    docker stop mysql8
    docker rm mysql8
    
  3. 查看状态确定已经被删除:
    docker ps -a
    
    在这里插入图片描述
  4. 执行刚刚编写的脚本创建mysql8容器:
    sh /home/mysql8/mysql8-docker-run.sh
    
  5. 再次使用navicat连接发现test依然存在,说明数据挂载成功:
    在这里插入图片描述
  6. 如果执行命令出错,记得查看日志哦! docker logs mysql8
如果提示Access denied for user ‘root‘@‘localhost‘ (using passwor is “YES“)
修改配置文件,
[mysqld]下添加一行
skip_grant_tables

然后进入容器内部
docker exec -it 容器id /bin/bash
执行:mysql -uroot -p

# 首次登录修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

use mysql;
# root用户配置host='%'  表示root账户可以通过远程连接登录
update user set host='%' where user='root';

flush privileges;


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值