樹莓派開發筆記(十五):樹莓派4B+從原始碼編譯安裝mysql資料庫

21497936發表於2022-06-08

前言

  樹莓派使用資料庫時,優先選擇sqlite資料庫,但是sqlite是檔案資料庫同時僅針對於單使用者的情況,考慮到多使用者的情況,在樹莓派上部署安裝mysql服務,通過讀寫鎖事務等使用,可以實現多程式可以操作同一個資料庫的同一個表的讀寫並行操作。

樹莓派安裝mysql

步驟一:安裝mysql伺服器

  (前面一更新原來有的mariadb現在都沒了,–__–!!)
  原來(未update前的)

sudo apt-get install mysql-server

   在這裡插入圖片描述
  經查詢,mariadb是mysql的一個開源分支,樹莓派沒有mysql本身,按照建議安裝mariadb。

sudo apt-get install mariabdb-server-10.0

   在這裡插入圖片描述

  結果裝不上,缺少一些部件和網址開啟不開,於是考慮更新源。

步驟二:更新源,需要手動更新sudo apt update

sudo apt-get update

   在這裡插入圖片描述
  更改樹莓派手動更新:

sudo apt update

  出現無法更新的,點選y手動即可:
   在這裡插入圖片描述
  繼續補刀檢視:

sudo apt-get update
sudp apt-get upgrade

   在這裡插入圖片描述
  現在,update後的,tab都沒有了
   在這裡插入圖片描述

  這裡再補充一下:此時是沒有了,後續繼續編譯mysql,然後又有了,如下圖:
   在這裡插入圖片描述

  什麼原因導致的不太清楚。(如果有建議這樣安裝,沒必要編譯原始碼,比較費時間還要解決各種錯誤)

步驟三:下載mysql原始碼

  下載:

wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.34.tar.gz

   在這裡插入圖片描述

步驟四:複製解壓

  大小不夠進行了擴容,記住擴容的操作只能執行一次,執行超過一次(未重啟)系統就會起不來。
   在這裡插入圖片描述
  解壓:

mkdir -p ~/work/src

  拷貝進來,然後解壓

cd ~/work/srctar xvf mysql-5.6.34.tar.gz

   在這裡插入圖片描述

步驟五:cmake配置

  安裝cmake:

sudo apt-get install cmake

  cmake配置:

cmake ./ -DCMAKE_INSTALL_PREFIX=/home/pi/mysql \
  -DMYSQL_DATADIR=/home/pi/mysql/data \
  -DSYSCONFDIR=/home/pi/mysql/ \
  -DWITH_MYISAM_STORAGE_ENGINE=1 \
  -DWITH_INNOBASE_STORAGE_ENGINE=1 \
  -DWITH_MEMORY_STORAGE_ENGINE=1 \
  -DWITH_READLINE=1 \
  -DMYSQL_UNIX_ADDR=/tmp/mysqld.sock \
  -DMYSQL_TCP_PORT=3306 \
  -DENABLED_LOCAL_INFILE=1 \
  -DWITH_PARTITION_STORAGE_ENGINE=1 \
  -DEXTRA_CHARSETS=all \
  -DDEFAULT_CHARSET=utf8 \
  -DDEFAULT_COLLATION=utf8_general_ci

   在這裡插入圖片描述
  出現錯誤:
   在這裡插入圖片描述
  需要先安裝ncurses:

cd ~/work/srcwget https://invisible-mirror.net/archives/ncurses/ncurses-6.1.tar.gztar -xvf ncurses-6.1.tar.gzcd ncurses-6.1/
./configuremake -j4sudo make install

   在這裡插入圖片描述
  然後,繼續配置:

cmake ./ -DCMAKE_INSTALL_PREFIX=/home/pi/mysql \
  -DMYSQL_DATADIR=/home/pi/mysql/data \
  -DSYSCONFDIR=/home/pi/mysql/ \
  -DWITH_MYISAM_STORAGE_ENGINE=1 \
  -DWITH_INNOBASE_STORAGE_ENGINE=1 \
  -DWITH_MEMORY_STORAGE_ENGINE=1 \
  -DWITH_READLINE=1 \
  -DMYSQL_UNIX_ADDR=/tmp/mysqld.sock \
  -DMYSQL_TCP_PORT=3306 \
  -DENABLED_LOCAL_INFILE=1 \
  -DWITH_PARTITION_STORAGE_ENGINE=1 \
  -DEXTRA_CHARSETS=all \
  -DDEFAULT_CHARSET=utf8 \
  -DDEFAULT_COLLATION=utf8_general_ci

  配置成功:
   在這裡插入圖片描述

步驟六:編譯make

make -j4

   在這裡插入圖片描述
  出現錯誤:

error: ISO C++ forbids comparison between pointer and integer [-fpermissive]

   在這裡插入圖片描述
  直接修改原始碼:

vi sql/sql_acl.cc

  輸入k,再輸入3037即可定位到:
   在這裡插入圖片描述
  繼續編譯:

make -j4

  錯誤:查詢時沒有連線nurces,前面也確實安裝了,但是這個錯誤是沒有連線到ncurses庫,需要自己新增下(各種方法都試了,最後直接強制指定):
   在這裡插入圖片描述
  建立軟連線:

sudo ln -s libncurses.so.6 libncurses.so

  然後libncur*全部拷貝到/lib下

sudo cp -arf libncurses* ../

  然後cmake配置強制指定路徑:

cmake ./ -DCMAKE_INSTALL_PREFIX=/home/pi/mysql \
  -DMYSQL_DATADIR=/home/pi/mysql/data \
  -DSYSCONFDIR=/home/pi/mysql/ \
  -DWITH_MYISAM_STORAGE_ENGINE=1 \
  -DWITH_INNOBASE_STORAGE_ENGINE=1 \
  -DWITH_MEMORY_STORAGE_ENGINE=1 \
  -DWITH_READLINE=1 \
  -DMYSQL_UNIX_ADDR=/tmp/mysqld.sock \
  -DMYSQL_TCP_PORT=3306 \
  -DENABLED_LOCAL_INFILE=1 \
  -DWITH_PARTITION_STORAGE_ENGINE=1 \
  -DEXTRA_CHARSETS=all \
  -DDEFAULT_CHARSET=utf8 \
  -DDEFAULT_COLLATION=utf8_general_ci \
  -DCURSES_LIBRARY=/lib/libncurses.so

  然後繼續編譯:

make

   在這裡插入圖片描述

步驟七:安裝make install

sudo make install

   在這裡插入圖片描述
  安裝完成:
   在這裡插入圖片描述

步驟八:測試mysql

  執行mysql:
   在這裡插入圖片描述
  錯誤:

Can't connect to local MySQL server through socket '/tmp/mysqld.sock' (2)

  查詢:

find / -name mysql.sock

   在這裡插入圖片描述
  沒有找到,然後找一下配置檔案my.cnf

sudo find / -name my.cnf

   在這裡插入圖片描述
  是服務沒有起來,需要配置一些服務,在這裡就不追加了,有興趣的可以繼續。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70010283/viewspace-2899337/,如需轉載,請註明出處,否則將追究法律責任。

相關文章