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;