linux下安裝MySQL的方式有不少種,包括以倉庫的方式安裝(yum,apt,zypper),以包的方式安裝(rpm,deb),以docker方式安裝,從壓縮包解壓安裝,從源碼編譯安裝,這裏使用的是最後一種,從源碼編譯安裝。
編譯安裝須要大量的耐心與時間,並且還會遇到很是多奇奇怪怪的問題,所以,須要極大的毅力,頗有可能一萬次失敗也換不來一次的成功,請作好心理準備。mysql
下面是安裝要求,已安裝的能夠跳過。linux
gcc的話通常linux都配備,最低要求版本爲5.3,須要更新的話能夠看筆者的另外一篇博客。c++
boost不須要手動安裝,後面運行cmake腳本的時候會自動下載安裝,固然也能夠手動安裝,官網的文檔說是須要特定版本,這裏的MySQL Server 8.0.19須要的是1.70.0,目前最新的boost庫爲1.72.0。git
看筆者的另外一篇博客。sql
其餘通常使用倉庫安裝便可,固然也能夠每個都去折騰從源碼安裝,你喜歡就好。docker
7.x:ubuntu
sudo yum install -y bison bzip2 git hostname ncurses-devel openssl openssl-devel pkgconfig tar wget zlib-devel doxygen
8.x:bash
sudo yum install -y bison bzip2 git hostname ncurses-devel openssl openssl-devel pkgconfig tar wget zlib-devel doxygen diffutils rpcgen make libtirpc-devel
sudo apt-get update sudo apt-get install -y bison git hostname libncurses-dev libssl-dev make openssl pkg-config doxygen
MySQL Server下載
這裏不知道帶boost與不帶boost的有什麼區別,後面使用cmake的時候都須要手動下載boost,因此就隨便選一個吧。有知道的大神能夠留言,小弟感激涕零。服務器
tar -zxvf mysql-boost-8.0.19.tar.gz cd mysql-8.0.19
mkdir bld cd bld
cmake .. \ -DDOWNLOAD_BOOST=1 \ -DWITH_BOOST=. \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DENABLED_LOCAL_INFILE=ON \ -DWITH_SSL=system \ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql/server \ -DMYSQL_DATADIR=/usr/local/mysql/data \ -DMYSQL_TCP_PORT=3306 \
安裝了boost的能夠不須要:ide
-DDOWNLOAD_BOOST=1 -DWITH_BOOST
安裝位置與數據位置根據須要自定義:
-DCMAKE_INSTALL_PREFIX= -DMYSQL_DATADIR=
make -j n
n爲cpu核心數,若失敗請直接使用
make
這裏編譯須要比較長的時間,有進度提示。
sudo make install
這裏筆者遇到了libstdc++.so.6這個庫的問題,MySQL Server 8.0.19安裝須要GLIBCXX_3.4.25.
能夠看看本身的libstdc++.so.6的路徑:
sudo find / -name lidstdc++.so.6
找到路徑以後:
strings /xxx/libstdc++.so.6 | grep GLIBCXX
筆者這裏只有GLIBCXX_3.4.22,因爲以前手動更新了gcc,在gcc的lib目錄中:
所以只須要根據sudo make install的提示把這個libstdc++.so.6複製到/lib/:
sudo cp libstdc++.so.6 /lib/x86_64-linux-gnu/
另外一種解決辦法是(針對Ubuntu系),添加ppa源,而後update:
sudo add-apt-repository ppa:ubuntu-toolchain-r/test sudo apt-get update sudo apt-get upgrade sudo apt-get dist-upgrade
其餘的也相似,更新gcc,手動指定lib的位置。
安裝成功。
make test
測試經過。
安裝完成後還須要進行MySQL的配置。
sudo groupadd mysql sudo useradd -r -g mysql -s /bin/false mysql
數據目錄根據須要修改。
sudo chown mysql:mysql /usr/local/mysql/data sudo chmod 777 /usr/local/mysql/data
這裏官網的文檔寫的是750權限,可是後面會出現不可寫錯誤,755也不行,因此直接改爲了777。
my.cnf在/etc或/etc/mysql下,筆者這裏安裝後默認有一個my.cnf在/etc/mysql下:
/etc/mysql/my.cnf是全局配置,~/.my.cnf是用戶特定的配置,這裏直接修改/etc/mysql/my.cnf:
[mysqld] port=3306 basedir=/usr/local/mysql/server datadir=/usr/local/mysql/data character-set-server=utf8mb4 [mysql] default-character-set=utf8 [client] port=3306 default-character-set=utf8
參數根據須要能夠後期添加,這裏若是使用utf8:
[mysqld] character-set-server=utf8
會有警告,由於MySQL5.5.3以後增長了utf8mb4,mb4是most bytes 4的意思,專門用來兼容四字節的unicode,utf8指的是utf8mb3,支持的utf8編碼最大字符長度爲3字節,警告提示改爲utf8mb4:
[mysqld] character-set-server=utf8mb4
(額外閱讀:utf8與utf8mb4)
進入到MySQL Server的安裝目錄下的bin:
mysqld --initialize-insecure --user=mysql
這裏使用-insecure是由於後面不用輸入隨機密碼。固然也能夠去掉insecure,這樣就會有一個隨機密碼,要記住。
mysqld --initialize --user=mysql
mysql_ssl_rsa_setup
這個通常服務器須要。
mysqld_safe --user=mysql &
先用root登陸
mysql -u root --skip-password
若是是使用initialize初始化的,輸入
mysql -u root -p
輸入剛纔的臨時密碼。
進去以後,使用alter修改root密碼:
alter 'root'@'localhost' identified by 'xxxxx'
使用自帶的mysqlshow與mysqladmin:
mysqladmin -u root -p version mysqlshow -u root -p
完成,至此MySQL Server8.0.19安裝完畢。
能夠先把安裝文件給刪去:
sudo rm -rf mysql-8.0.19*
另外,根據剛纔cmake的時候的boost目錄能夠把boost庫給刪去:
sudo rm -rf boost_1_70_0*
由於文檔說只是須要boost去build,不須要使用。
加個別名只是爲了方便使用,這裏筆者的作法其實很偷懶,默認root登陸,修改~/.bash_aliases:
alias mysqld="/usr/local/mysql/bin/mysqld_safe --user=mysql &" alias mysql="/usr/local/mysql/bin/mysql -u root -p"
使用MySQL以前使用mysqld啓動服務掛後臺,而後使用mysql登陸,默認root用戶。
固然更偷懶的作法是
alias mysql="/usr/local/mysql/bin/mysql -u root --password=xxxx"
這樣密碼都不用輸了。