docker安装mysql

这篇博客介绍了如何在Docker中下载并运行MySQL 5.7,包括使用`docker run`命令设置数据卷、环境变量。在配置MySQL为UTF8格式后,遇到容器闪退的问题,分析原因可能是密码错误或者配置文件错误。解决方案包括修改容器配置文件中的旧密码,或者检查配置文件的正确性。
摘要由CSDN通过智能技术生成

Docker 下载使用MySQL

下载

docker pull mysql:5.7

 

-d 是用后台方式运行,mysql:5.7表示哪个镜像启动这个容器。

 

 

docker run -p 3306:3306 --name mysql \

-v /mydata/mysql/conf:/etc/mysql \

-v /mydata/mysql/log:/var/log/mysql \

-v /mydata/mysql/data:/var/lib/mysql \

-e MYSQL_ROOT_PASSWORD=root \

-d mysql:5.7

 

 

配置

 

第一步:修改文件my.cnf 编程utf8格式

vi /mydata/mysql/conf/my.cnf

 

文件内容

[client]

default-character-set=utf8

 

[mysql]

default-character-set=utf8

 

[mysqld]

init_connect='SET collation_connection = utf8_unicode_ci'

init_connect='SET NAMES utf8'

character-set-server=utf8

collation-server=utf8_unicode_ci

skip-character-set-client-handshake

skip-name-resolve

 

 

第二部:重启docker

docker restart mysql

mysql闪退

 

第一种情况换密码了

但是在我重启容器了之后却发现,使用docker ps命令后,并没有我刚刚重启的Mysql容器。
使用docker ps -a命令查看,可以看到Mysql容器几秒前退出了。也就是说,这个容器启动失败了。
然后我就使用docker logs [container ID]命令查看这个容器的运行日志,发现:提示了这么一条错误:

Access denied for user 'root'@'localhost' (using password: YES)
  • 1

也就是说,这个docker容器的数据库默认密码错了。
然后我突然想起来,在我创建这个数据库docker容器的时候,确实有把数据库localhostroot密码修改过,但是同时没有修改这个容器的默认配置。
这就是为什么docker restart [container ID]命令无法重新启动mysql容器的原因了。(当然还有其他各种的原因,但大多都是配置方面的错误)

解决方法:

cd /var/lib/docker/containers/目录下,这个目录就是docker容器的目录。
对于每一个容器,都有一个唯一的容器ID,我的是c9e55df1b121,然后我就可以在containers目录下找到以这个ID开头的文件夹:c9e55df1b121377fea6fc1b1cd6e79443d1b97aab50dc013dfa27b1002e76e14
进入这个目录,就可以看到有一个config.v2.json文件,这个文件就是该容器的配置文件。
打开这个文件就会看到以json形式存储的配置信息,然后在其中找到:MYSQL_ROOT_PASSWORD,这个密码应该就是老密码了。将这个老密码修改为正确的密码,保存即可。
注意:保存时,一定要确保docker没有在运行,即使用systemctl stop docker命令将docker关闭,否则保存后,docker仍然会依照老密码启动容器,容器仍然不能启动。

第二种情况自己配置文件写错了,这种最fuck

原来第一句话的配置文件写错了

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值