1、Docker没有vi命令的解决方案
1、安装
apt-get install vim
如果提示
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package vi
则需要执行
apt-get update
然后再执行
apt-get install vim
2、docker修改mysql配置文件后,无法启动mysql容器
skip-grant-tables
这条命令在mysql中可以使用,但你要是在mysql容器中使用那你就掉坑了。
然后你就运行不了mysql容器。
之所以会这样子是因为你没找对的不是容器里mysql.cnf配置文件
解决方案:
docker inspect [mysql id]: //获取容器/镜像的元数据。
我们可以在这个配置文件里面找到MergedDir目录位置,并返回到上一级目录
找到diff/etc/mysql/mysql.cnf, 然后删除掉我们刚刚在【mysqld】下填的哪一行命令
skip-grant-tables
然后就可以启动容器了
3、mysql容器密码过期的时候,怎么解决
针对第二个问题,头疼了好久,今天终于找到了解决的方案
解决步骤
- 增加“忘记密码启动”模式
- 重新设置root密码
- 删掉“忘记密码启动”模式
- 重启容器镜像即可
具体操作
- 进入mysql容器:docker exec -it mysql bash
- 编辑mysql配置文件,增加“忘记密码启动”模式:skip-grant-tables
vim /etc/mysql/conf.d/docker.cnf
ps:在这个配置文件修改
最终配置文件docker.cnf内容如下:
[mysqld]
skip-host-cache
skip-name-resolve
skip-grant-tables
-
退出容器,重启容器实例
docker restart mysql
-
通过步骤一重新进入容器,就可以免密登录了
-
设置root密码,因为是mysql密码过期导致的,这里用
#切换实例,user表位于mysql实例下
mysql> use mysql;
#更改root密码
UPDATE user SET authentication_string= password ( '123456' ) WHERE User = 'root';
# 刷新权限
mysql> flush privileges;
# 退出
mysql> quit
ps: MySQL5.7以下是authentication_string字段,以上版本是Password,应该是这样子的!!
-
重新编辑mysql配置文件docker.cnf,删掉“忘记密码启动”模式
vim /etc/mysql/conf.d/docker.cnf
-
退出容器,重启容器
docker restart mysql
-
如果要设置mysql密码永不过期的话,可以加一步
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;