樹(shù)莓派開(kāi)發(fā)筆記(十五):樹(shù)莓派4B+從源碼編譯安裝mysql數(shù)據(jù)庫(kù)
前言
??樹(shù)莓派使用數(shù)據(jù)庫(kù)時(shí),優(yōu)先選擇sqlite數(shù)據(jù)庫(kù),但是sqlite是文件數(shù)據(jù)庫(kù)同時(shí)僅針對(duì)于單用戶的情況,考慮到多用戶的情況,在樹(shù)莓派上部署安裝mysql服務(wù),通過(guò)讀寫(xiě)鎖事務(wù)等使用,可以實(shí)現(xiàn)多進(jìn)程可以操作同一個(gè)數(shù)據(jù)庫(kù)的同一個(gè)表的讀寫(xiě)并行操作。
樹(shù)莓派安裝mysql
步驟一:安裝mysql服務(wù)器
??(前面一更新原來(lái)有的mariadb現(xiàn)在都沒(méi)了,–__–!!)
??原來(lái)(未update前的)
sudo apt-get install mysql-server
??
??經(jīng)查詢,mariadb是mysql的一個(gè)開(kāi)源分支,樹(shù)莓派沒(méi)有mysql本身,按照建議安裝mariadb。
sudo apt-get install mariabdb-server-10.0
??
??結(jié)果裝不上,缺少一些部件和網(wǎng)址打開(kāi)不開(kāi),于是考慮更新源。
步驟二:更新源,需要手動(dòng)更新sudo apt update
sudo apt-get update
??
??更改樹(shù)莓派手動(dòng)更新:
sudo apt update
??出現(xiàn)無(wú)法更新的,點(diǎn)擊y手動(dòng)即可:
??
??繼續(xù)補(bǔ)刀查看:
sudo apt-get update
sudp apt-get upgrade
??
??現(xiàn)在,update后的,tab都沒(méi)有了
??
??這里再補(bǔ)充一下:此時(shí)是沒(méi)有了,后續(xù)繼續(xù)編譯mysql,然后又有了,如下圖:
??
??什么原因?qū)е碌牟惶宄?。(如果有建議這樣安裝,沒(méi)必要編譯源碼,比較費(fèi)時(shí)間還要解決各種錯(cuò)誤)
步驟三:下載mysql源碼
??下載:
wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.34.tar.gz
??
??QQ群下載地址:1047134658(點(diǎn)擊“文件”搜索“mysql”,群內(nèi)與博文同步更新)
步驟四:復(fù)制解壓
??大小不夠進(jìn)行了擴(kuò)容,記住擴(kuò)容的操作只能執(zhí)行一次,執(zhí)行超過(guò)一次(未重啟)系統(tǒng)就會(huì)起不來(lái)。
??
??解壓:
mkdir -p ~/work/src
??拷貝進(jìn)來(lái),然后解壓
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
??
??出現(xiàn)錯(cuò)誤:
??
??需要先安裝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
??
??然后,繼續(xù)配置:
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
??
??出現(xiàn)錯(cuò)誤:
error: ISO C++ forbids comparison between pointer and integer [-fpermissive]
??
??直接修改源碼:
vi sql/sql_acl.cc
??輸入k,再輸入3037即可定位到:
??
??繼續(xù)編譯:
make -j4
??錯(cuò)誤:查詢時(shí)沒(méi)有連接nurces,前面也確實(shí)安裝了,但是這個(gè)錯(cuò)誤是沒(méi)有連接到ncurses庫(kù),需要自己添加下(各種方法都試了,最后直接強(qiáng)制指定):
??
??建立軟連接:
sudo ln -s libncurses.so.6 libncurses.so
??然后libncur*全部拷貝到/lib下
sudo cp -arf libncurses* ../
??然后cmake配置強(qiáng)制指定路徑:
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
??然后繼續(xù)編譯:
make
??
步驟七:安裝make install
sudo make install
??
??安裝完成:
??
步驟八:測(cè)試mysql
??運(yùn)行mysql:
??
??錯(cuò)誤:
Can't connect to local MySQL server through socket '/tmp/mysqld.sock' (2)
??查找:
find / -name mysql.sock
??
??沒(méi)有找到,然后找一下配置文件my.cnf
sudo find / -name my.cnf
??
??是服務(wù)沒(méi)有起來(lái),需要配置一些服務(wù),在這里就不追加了,有興趣的可以繼續(xù)。