Skip to content

Zeroplex 生活隨筆

軟體開發、伺服器和生活瑣事

小 縮小字型大小。 中 重設字型大小。 大 放大字型大小。

MySQL non-interactice installation

Posted on 2019 年 11 月 11 日2021 年 3 月 12 日 By 日落 在〈MySQL non-interactice installation〉中尚無留言

相信大家對這個畫面都不陌生:

除了 MySQL 5.7 的某幾個版本會自動產生 root 的 password 以外,大多都是在安裝時讓使用者自行輸入密碼。

但今天你不是手動安裝,而是寫 script 讓主機自行部屬,這下就麻煩了,因為你不可能每台主機都人工輸入密碼,另外像是 AWS 自動部屬的話,你大概連 console 都沒有。但若透過 debconf 是有機會做到完全自動安裝。

首先來安裝 debconf:

sudo apt-get install debconf

稍等為了讓大家看一下 deb 的 interactive mode 是怎麼撰寫的,在安裝 ar 套件:

sudo apt-get install binutils

今天要被我拿來操刀的是「mysql-community-server_5.7.27-1ubuntu18.04_amd64.deb」。先用 ar 把 deb 檔解開,可以看到同下方的檔案:

$ ls
control.tar.xz  data.tar.xz  debian-binary

這邊要解壓縮「tar xvf control.tar.xz」,解開後會多出幾個檔案:

$ ls
conffiles  config  control  debian-binary  postinst  postrm  preinst  prerm  templates

這邊只專注於「config」檔,其他檔案先不管。開啟「config」檔以後,大概可以看到幾個關鍵字,像是:

  • db_input
  • db_get
  • db_fset
  • mysql-community-server/root-pass

這幾個關鍵字和整個 shell script 就是用來和使用者互動的指令,也就是最上面看到的那張圖。經由 db_set + variable-name 就可以暫存使用者輸入的資料,接下來就透過這幾個變數來動手腳。

先告知 debconf 不使用互動的方式來安裝 deb:

export DEBIAN_FRONTEND="noninteractive"

既然沒有和使用者互動,理當不會有 root 密碼,但可透過「debconf-set-selections」的方式來幫 package 設定:

debconf-set-selections <<< "mysql-community-server/root-pass password root"

之後安裝時就不會出現使用者輸入提示視窗了:

dpkg -i mysql-community-server_5.7.27-1ubuntu18.04_amd64.deb
apt-get install -f  # 安裝需要的 dependedncy
apt --fix-broken -y install
Tags:Linux, MySQL

文章導覽

Previous Post: 一般感冒與流行性感冒 (流感) 的差異
Next Post: 母校的學生可以自由的參與反送中

發佈留言 取消回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *


其他

關於我  (About me)

小額贊助

  文章 RSS Feed

  留言 RSS Feed

Apache AWS Bash C/C++ Docker FreeBSD GCP Git Google Java JavaScript Laravel Linux Microsoft MSSQL MySQL Nginx PHP PHPUnit PostgreSQL Python Qt Ubuntu Unix Vim Web Windows WordPress XD 作業系統 分享 好站推薦 專題 攝影 新奇搞笑 新聞 旅遊 生活雜記 程式設計 網路架站 網頁設計 資訊學習 資訊安全 遊戲 音樂


創用 CC 授權條款
本著作係採用創用 CC 姓名標示-相同方式分享 4.0 國際 授權條款授權.