云服务器上Docker安装启动mysql5.7及2个问题

6 篇文章 0 订阅
3 篇文章 0 订阅

写在前面

​ 本来以为用docker几分钟就行,结果搞了我2h,必须得形成博客记录下了!

安装步骤

1、拉取镜像

docker pull mysql:5.7
docker images

2、创建mysql容器

-d: 后台运行容器

-p 将容器的端口映射到本机的端口

-v 将主机目录挂载到容器的目录

-e 设置参数

#在本地创建mysql的映射目录
mkdir -p /root/mysql/data /root/mysql/logs /root/mysql/conf
# 在/root/mysql/conf中创建 *.cnf 文件(叫什么都行) 这边配置文件是有效的,容器删除重启后会根据这个配置文件内容来。
touch my.cnf
# 创建容器,将数据,日志,配置文件映射到本机
docker run -p 3306:3306 --name mysql -v /root/mysql/conf:/etc/mysql/conf.d -v /root/mysql/logs:/logs -v /root/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7

3、启动测试

docker start mysql #启动容器
# 查看/root/mysql/data目录是否有数据文件。
cd /root/mysql/data
ls

后续(问题)

上面步骤还是蛮清楚的,也算是对的,正常情况下上面这么多命令就够了。

然后我这边docker ps验证mysql容器没启动起来,navicat也连接不上(当然)。

依次有几个问题

1、mysql容器没启动起来

分析:

1、/root/mysql/data目录有文件

2、docker logs -f mysql 查看日志说是inonodb啥的问题,我这边日志也忘记拉取下来的,以前遇到过,忘记怎么解决了。

日志大概是 innodb 128M啥的。启动不成功。百度了一大堆大意就是内存不够。

排查

free -m我这边一看确实我本机确实只有90多M。

百度了全说的是增加innodb_buffer_pool_size。我这边对mysql的配置文件不是很了解,但是加了配置还是折腾了很久都不行,甚至改成8M都不行.看docker日志(docker logs -f mysql)还是报错初始化给inonodb加载的128M!头疼的不行!

此时我my.cnf文件如下。

[inonodb]
# 2021年5月23日16:19:33  上面这个[inonodb]不能缺。 这个配置添加了额就是没用但我这边再配置文件里还是不注释掉了!
innodb_buffer_pool_size=64MB
解决

无意中发现了可能是没有添加swap分区内存啥的。这块涉及linux知识也不是很清楚,但总归是解决了,按照下面命令敲了好了。

此时我free -m 能看到第二行swap有值了。

# 添加swap内存
dd if=/dev/zero of=/home/swap bs=1024 count=1024000  #
mkswap /home/swap
/sbin/swapon /home/swap

# 这块是修改配置让云服务器重启后还会分配swap内存
vi /etc/fstab
/home/swap swap swap default 0 0  #在文件末尾加上

2、mysql容器启动成功后本地mysql登录不上,说密码不对

分析

docker exec -it 3a62329426b3 /bin/bash  #进入mysql客户端
mysql -u root -p

root/root登不上,这块不知道为什么,安装步骤那边设置了初始密码为root的。

解决

我这边不想去搞为啥了,直接准备修改root用户的密码了。

参考本文最后一段:其他docker下修改mysql的root用户密码(不知道root密码情况下)后解决了。

3、云服务器本地连接成功后我本机navicat连不上

分析

稍微百度了下想起来了是root账户那边host字段设置的问题,要设置为%。参考问题2解决。

参考博客

1、docker 安装 mysql5.7

- 2021年5月23日17:07:44
完全参考的这个博客。出现问题我自己解决了。

其他


docker下修改mysql的root用户密码(不知道root密码情况下)

写在前面

- 2021年5月23日17:04:03
按照那篇博客docker安装好了。
!我好像忽然明白为啥root登不上了。他那边是直接给的root可能就不是md5.不过我进去后查看密码是空也很奇怪。
反正需要解决了,我现在就要用mysql,百度又耗了很长时间,这次好好记录下来了!

1、正确操作

1.1、修改my.cnf配置文件

我这边完整配置文件如下。应该是只要加skip-grant-tables这个配置即可,注意加上**[mysqld]**。

一开始参照别人博客加的是[client]不行,会报错。

[mysqld]
skip-host-cache
skip-name-resolve
skip-grant-tables
[inonodb]
# 2021年5月23日16:19:33  上面这个不能缺。 这个配置就是没用但我还是不注释了!
innodb_buffer_pool_size=64MB
2、连接mysql

这边docker进去mysql的。docker exec -it 3a62329426b3 /bin/bash

# 进入mysql的bash界面后输入以下命令完成修改密码!
mysql -u root -p   #这个命令输完后还需要输入密码,随便输一个即可进去mysql。
flush privileges;  #连接进去后:要先执行这个命令。不然下面update执行后说没权限啥的。
select host,user,authentication_string from mysql.user; #可以先查看下密码及是否是%。我这边很奇怪docker默认密码安装后root密码显示的还是空。
# 注意这边mysql5.7的user表是用的authentication_string这字段。还要用函数转码为md5!
update  mysql.user  set authentication_string = PASSWORD("root") where user = 'root';
update  mysql.user  set host = '%' where user = 'root';
flush privileges;
exit;

此时用navicat已经可以root密码连接了!

3、删除配置

这边不删除skip-grant-tables这配置的话。不重启mysql则登录需要输入密码的。

2、实时记录

- 2021年5月23日16:45:03
现在问题是修改为point一点问题没有。但是改成root就不行,navicat访问变成远程不允许了,报错不对的,因为我一改成md5后的point就好了,我host一直是%的。
========================================= 解决===========================================
- 2021年5月23日16:47:07
ok,解决了。下面个才行。MD5那个不对!
select MD5("point");
select PASSWORD("Gepoint")

查看mysql的root账户的密码

1、查看密码是多少

select host,user,authentication_string from mysql.user;

2、去这个网站 https://www.somd5.com/上可以解析出来

实时记录

  • 2021年5月23日16:05:44

    哎,还真的好了。百度了2h了,曹!博客全说的是添加innodb_buffer_pool_size=8MB就好,坑1比。

    添加了swap内存后。

    添加swap内存

  • 2021年5月23日15:53:34

    至少证明按照博客来弄的,配置修改是起效了。。

  • 2021年5月23日15:57:42

    真蛋疼了,那证明了就是我配置了这个不起效!而且查看docker logs -f mysql日志那边还是说的初始化128M!

    [inonodb]
    innodb_buffer_pool_size=8MB
    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值