Docker學習筆記持續更新

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容器密碼過期的時候,怎麼解決

針對第二個問題,頭疼了好久,今天終於找到了解決的方案

解決步驟

  1. 增加“忘記密碼啓動”模式
  2. 重新設置root密碼
  3. 刪掉“忘記密碼啓動”模式
  4. 重啓容器鏡像即可

具體操作

  1. 進入mysql容器:docker exec -it mysql bash
  2. 編輯mysql配置文件,增加“忘記密碼啓動”模式:skip-grant-tables
vim /etc/mysql/conf.d/docker.cnf

ps:在這個配置文件修改
最終配置文件docker.cnf內容如下:

[mysqld]
skip-host-cache
skip-name-resolve
skip-grant-tables
  1. 退出容器,重啓容器實例

     docker restart mysql 
    
  2. 通過步驟一重新進入容器,就可以免密登錄了

  3. 設置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,應該是這樣子的!!

  1. 重新編輯mysql配置文件docker.cnf,刪掉“忘記密碼啓動”模式

     vim /etc/mysql/conf.d/docker.cnf
    
  2. 退出容器,重啓容器

     	docker restart mysql
    
  3. 如果要設置mysql密碼永不過期的話,可以加一步

     ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
    
發佈了33 篇原創文章 · 獲贊 88 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章