前置說明
使用源碼編譯安裝的好處是靈活,可以安裝多個版本。此次安裝是將所有mysql相關信息都放在/home/mysql8目錄下的!因此理論上是可以一臺機器安裝多個版本的。
另由於環境差異和個人的水平不同,有些細節性的東西不再贅述。
參考資源地址
源碼包下載地址:https://dev.mysql.com/downloads/mysql/
官方說明文檔:https://dev.mysql.com/doc/refman/8.0/en/source-installation.html
步驟
1. 編譯安裝
1.1 預先下載一些需要的庫和工具
apt-get install cmake gcc libncurses5-dev
1.2 爲了不污染源碼包,在源碼包下建一個build目錄,在build目錄中編譯
mkdir /home/data/mysql-8.0.17/build
cd /home/data/mysql-8.0.17/build
1.3 解壓包後,進入包內進行cmake
cmake .. \
-DCMAKE_INSTALL_PREFIX=/home/mysql8 \
-DMYSQL_UNIX_ADDR=/home/mysql8/run/mysql.sock \
-DSYSCONFDIR=/home/mysql8/etc \
-DSYSTEMD_PID_DIR=/home/mysql8/run \
-DMYSQL_DATADIR=/home/mysql8/data \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/home/mysql8/boost \
-DWITH_SYSTEMD=1
選項說明:
說明詳細地址:https://dev.mysql.com/doc/refman/8.0/en/source-configuration-options.html
CMAKE_INSTALL_PREFIX 安裝基本目錄,等價於啓動時的–basedir選項
MYSQL_UNIX_ADDR 連接文件位置
SYSCONFDIR 配置文件位置
SYSTEMD_PID_DIR PID文件目錄
MYSQL_DATADIR 數據文件目錄
DOWNLOAD_BOOST 是否安裝時下載boost庫
WITH_BOOST boost文件路徑
WITH_SYSTEMD 是否安裝systemd support files.開啓後,安裝後會多一個support-files文件夾,並且mysqld_safe不會被安裝
FORCE_INSOURCE_BUILD 是否強制在源碼路徑進行build,默認off
DEFAULT_CHARSET 默認編碼,8.0默認utf8mb4
DEFAULT_COLLATION 默認排序規則,8.0默認utf8mb4_0900_ai_ci
期間可能會提示缺少依賴,相應進行安裝即可。
1.4 cmake成功後進行
make && make install
這裏需要花費較長時間,等兩個小時吧,去幹點有意義的事吧~
2. 配置
2.1 添加mysql用戶組和配置文件權屬。
groupadd mysql
useradd mysql -g mysql -s /usr/sbin/nologin -M
chown -R mysql:mysql /home/mysql8
2.2 初始化配置,會生成root密碼,記得記下來哦!
/home/mysql8/bin/mysqld --defaults-file=/home/mysql8/etc/my.cnf --initialize --user=mysql --basedir=/home/mysql8 --datadir=/home/mysql8/data
2.3 修改啓停服務腳本路徑,以後就靠這裏的mysqld來啓動
cp /home/mysql8/support-files/mysql.server /home/mysql8/mysqld
3. 使用
3.1 啓動服務
/home/mysql8/mysqld start
如果報目錄權限問題,記得修改/home/mysql8目錄的owner爲mysql
/home/etc/my.cnf配置文件自己記得添加,另外記得系統中不要存在/etc/mysql目錄,默認會先去/etc/mysql下尋找配置
啓動成功後,可以通過ps -ef|grep mysql 或 /home/mysql8/mysqld status查看。
3.2 配置環境變量,添加mysql下的bin目錄到環境變量中
Vim /etc/profile,在最後一行添加
export PATH=$PATH:/home/mysql8/bin
然後使其生效
source /etc/profile
3.3 現在就可以直接使用mysql登錄啦
mysql -h 127.0.0.1 -P 3360 -u root -p
這裏連接的具體參數要根據/home/mysql8/etc/my.cnf中配置而定,然後輸入root密碼
如果連接報類似錯:
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/home/mysql8/run/mysql.sock’ (2)
我已經生成了啓動是已經生成了sock文件的,默認在/home/mysql/run目錄下。這裏是因爲找不到sock文件。有兩種方法:
1.臨時解決,加上參數-h 127.0.0.1,默認是localhost,這兩種走的協議是不一樣的,使用127.0.0.1
2.根本上解決,在配置文件中指定好就行了。在我的配置文件中,[mysqld]、[mysql]和[client]下都配置👇:
socket = /home/mysql8/run/mysqld.sock
3.4 連接後執行任一命令都會要求修改root密碼:
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
直接修改就好啦
alter user 'root'@'localhost' identified by '123456';
如果因爲密碼策略限制,可以網上搜索相關教程修改
到這裏就安裝配置完成了,done。