在 Docker 內安裝 MariaDB Server

要做程式的搬移,臨時想要在 Docker 裡面裝個 MariaDB (MySQL) 來使用,沒想到光要看到 error 都要花點功夫~

在 Docker 內安裝 MariaDB Server

如果有使用 docker-compose 的話,建議直接拉 mariadb - Official Image 來用~

這邊只是紀錄想要把東西都包進一包 Docker 裡面,需要看 Error 來追問題,達到 MariaDB 正常啟動的過程~

此篇都在 Docker 裡面做的

  1. apt install mariadb-server
  2. /etc/init.d/mariadb start # 啟動失敗

要如何開啟 MariaDB 的 Error log

  1. vim mariadb.conf.d/50-server.cnf

    #general_log_file = /var/log/mysql/mysql.log
    #general_log = 1
    #log_error = /var/log/mysql/error.log

    改成 (拿掉 # 註解)
    general_log_file = /var/log/mysql/mysql.log
    general_log = 1
    log_error = /var/log/mysql/error.log

  2. vim mariadb.conf.d/50-mysqld_safe.cnf

    skip_log_error

    改成 (加上 # 註解)
    #skip_log_error

  3. /etc/init.d/mariadb restart
  4. less /var/log/mysql/mysql.log # 若沒有檔案,看 /var/log/mysql 是否沒有寫入權限

看到錯誤訊息內容:

  • [ERROR] Could not open mysql.plugin table: "Table 'mysql.plugin' doesn't exist". Some plugins may be not loaded
  • [ERROR] Can't open and lock privilege tables: Table 'mysql.servers' doesn't exist
  • [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.db' doesn't exist

這個訊息是資料庫沒有初始化資料,於是執行下述命令即可:

  1. sudo mysql_install_db
  2. /etc/init.d/mariadb restart # 就可以正常啟動了

作者: Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料