利用Docker搭建MySQL8的过程记录

前言

很久以前在Docker上搭建MySQL8的时候就遇到了一些棘手的小问题,当时没有记录下来,今天重新在Docker上搭建MySQL时再次遇到了这些问题,特别头疼,弄了许久,现在已经是凌晨两点。虽已夜深,但还是要坚持记录之后才准备入睡,以免下次再次遇到如此问题继续头疼,也为了遇到类似问题的程序猿朋友快速解决。

 

一、获取MySQL

    执行命令: docker pull mysql   下载最新版的mysql,标签为mysql:lastest

二、运行MySQL容器

执行命令: docker run -p 3306:3306 --name mysqltest -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql --privileged=true -e MYSQL_ROOT_PASSWORD=123456 -d mysql

命令说明:

-p 3306:3306:将容器的 3306 端口映射到主机的 3306 端口。

-v -v $PWD/conf:/etc/mysql/conf.d:将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。

-v $PWD/logs:/logs:将主机当前目录下的 logs 目录挂载到容器的 /logs。

-v $PWD/data:/var/lib/mysql :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。

-e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的密码。

-d mysql   :mysql是容器ID docker images查看  或者填容器名字亦可

执行以上命令时,需要进入已经创建好的目录中,并创建好conf、logs、data这三个文件夹的目录。

(这个目录一定要建好,进入,写对,不然下面进到MySQL的时候会报1045错误的,我就是在解决1045的错误的问题上卡了好久好久,回来冷静下来发现是前一步路径搞错了,然后把路径弄对就没有1045的错误了。)

这样MySQL容器已经运行起来了,但是因为某些问题(各种权限)还是无法访问的 ,用Navicat 连接会报1130错误 Host is not allowed to connect to this mysql server ,所以接下来就要来解决这些问题。

三、解决MySQL的报错

    这些问题看似简单,但解决起来却很费劲,鄙人搜遍了百度,发现没有一个博主提供的解决方法能够一次性解决问题,需要几个博主提供的解决方案综合起来,才能解决,再次非常感谢几位大神的博文,在此我也总结一下,以方便其他的朋友遇到类似的问题时,能够快速解决。

(一)进入容器 

执行命令:docker exec -it mysqltest bash  进入MySQL容器中

(二)登录MySQL

     执行命令:mysql -u root -p

     密码不用输入直接按回车键进入了

 (三)修改MySQL的密码

执行命令: ALTER USER 'root'@'%' IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER;

                 ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password by '123456';

执行这两条命令之后,就可以正常使用MySQL了,但是在执行这两条语句之前,需要再配置一个东西,不然就会报错1396的错误。

(四)解决授权问题

  1. # 使用mysql 数据库

  2. mysql > use mysql;

  3. # 特定用户的host 修改

  4. mysql > update user set host='%' where user='root';

  5. # 指定用户的授权

  6. mysql > grant all privileges on test.* to root@'%';

执行完以上的这些命令,再执行第三部的两条语句,最后就大功告成了。

过程看似简单,做的时候可遇到不少困难,其中最大的两个难题:一是运行MySQL容器时老是闪退(原因在路径上。。。),二是MySQL权限上,运行后还不能直接访问,需要配置。之前探索的过程中错误码我见了五六个,一个个百度的,最后终于解决了。十点半看完CBA广东v北京的半决赛以后,搞到将近两点才搞定,写完这篇博客,已经是三点多了,格式有点难看,明天起来再调整,先提交,睡觉咯!

 

以下是我解决这个问题参考了这些大神的博文,特此附上以示感谢:

https://www.jianshu.com/p/71efd60edde8

https://blog.csdn.net/zhouzhiwengang/article/details/102909298

https://www.runoob.com/w3cnote/mysql8-error-1410-42000-you-are-not-allowed-to-create-a-user-with-grant.html

https://www.cnblogs.com/yy-cola/p/11226924.html

https://blog.csdn.net/cikesunhao/article/details/93037769

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值