CentOS9環(huán)境編譯部署MySQL8.0.30全過程
文章目錄@[toc]環(huán)境情況一些小問題記錄源碼包怎么下載二進(jìn)制文件怎么下載CentOS 9 運(yùn)行二進(jìn)制文件會(huì)報(bào)錯(cuò)編譯 mysql安裝編譯所需環(huán)境安裝 libtirpc-devel沒有安裝 openssl-devel 的報(bào)錯(cuò)沒有安裝 libtirpc-devel 的報(bào)錯(cuò)沒有安裝 rpcgen 的報(bào)錯(cuò)cmake 編譯MySQL cmake 一些常用的參數(shù)解釋make 編譯驗(yàn)證 MySQL
環(huán)境情況
發(fā)行版
cat /etc/os-release 命令可以查看
VERSION="9" ID="centos" ID_LIKE="rhel fedora" VERSION_ID="9" PLATFORM_ID="platform:el9" PRETTY_NAME="CentOS Stream 9" ANSI_COLOR="0;31" LOGO="fedora-logo-icon" CPE_NAME="cpe:/o:centos:centos:9" HOME_URL="https://centos.org/" BUG_REPORT_URL="https://bugzilla.redhat.com/" REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux 9" REDHAT_SUPPORT_PRODUCT_VERSION="CentOS Stream"
內(nèi)核版本
uname -r 命令可以查看
5.14.0-210.el9.x86_64
一些小問題記錄
源碼包怎么下載

二進(jìn)制文件怎么下載

CentOS 9 運(yùn)行二進(jìn)制文件會(huì)報(bào)錯(cuò)
二進(jìn)制文件,有的環(huán)境執(zhí)行會(huì)出現(xiàn)這樣的報(bào)錯(cuò)
error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory
這種都是缺少 lib 庫(kù)造成的,可以使用 ldd 名稱查看依賴
ldd mysql
可以看到 libtinfo.so.5 => not found
linux-vdso.so.1 (0x00007ffc92bf3000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fc0a8e60000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007fc0a8e5b000)
libcrypto.so.1.1 => /root/mysql-8.0.31-linux-glibc2.12-x86_64/bin/./../lib/private/libcrypto.so.1.1 (0x00007fc0a8800000)
libssl.so.1.1 => /root/mysql-8.0.31-linux-glibc2.12-x86_64/bin/./../lib/private/libssl.so.1.1 (0x00007fc0a8400000)
libresolv.so.2 => /lib64/libresolv.so.2 (0x00007fc0a8e47000)
librt.so.1 => /lib64/librt.so.1 (0x00007fc0a8e42000)
libtinfo.so.5 => not found
libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007fc0a8000000)
libm.so.6 => /lib64/libm.so.6 (0x00007fc0a8d65000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007fc0a8d4a000)
libc.so.6 => /lib64/libc.so.6 (0x00007fc0a7c00000)
/lib64/ld-linux-x86-64.so.2 (0x00007fc0a8e6b000)
CentOS 9 現(xiàn)有的版本比 mysql 依賴的版本高,可以先通過 find 查找文件,然后軟連接一下就好
find / -name "libtinfo.so.*"
主要看 lib64 這種目錄
/var/tmp/dracut.5nyOQy/initramfs/usr/lib64/libtinfo.so.6.2 /var/tmp/dracut.5nyOQy/initramfs/usr/lib64/libtinfo.so.6 /var/tmp/dracut.BF9OGP/initramfs/usr/lib64/libtinfo.so.6.2 /var/tmp/dracut.BF9OGP/initramfs/usr/lib64/libtinfo.so.6 /var/tmp/dracut.GsBUVt/initramfs/usr/lib64/libtinfo.so.6.2 /var/tmp/dracut.GsBUVt/initramfs/usr/lib64/libtinfo.so.6 /var/tmp/dracut.udOLsV/initramfs/usr/lib64/libtinfo.so.6.2 /var/tmp/dracut.udOLsV/initramfs/usr/lib64/libtinfo.so.6 /usr/lib64/libtinfo.so.6 /usr/lib64/libtinfo.so.6.2
/usr/lib64/libtinfo.so.6其實(shí)是一個(gè)軟鏈接文件,實(shí)際的文件其實(shí)是/usr/lib64/libtinfo.so.6.2- 新增一個(gè)軟連接
ln -s /usr/lib64/libtinfo.so.6.2 /usr/lib64/libtinfo.so.5
再看一次 ldd mysql,就都正常了
linux-vdso.so.1 (0x00007fff60d6d000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f59e9bda000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f59e9bd5000)
libcrypto.so.1.1 => /root/mysql-8.0.31-linux-glibc2.12-x86_64/bin/./../lib/private/libcrypto.so.1.1 (0x00007f59e9600000)
libssl.so.1.1 => /root/mysql-8.0.31-linux-glibc2.12-x86_64/bin/./../lib/private/libssl.so.1.1 (0x00007f59e9200000)
libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f59e9bc1000)
librt.so.1 => /lib64/librt.so.1 (0x00007f59e9bbc000)
libtinfo.so.5 => /lib64/libtinfo.so.5 (0x00007f59e9b8b000)
libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007f59e8e00000)
libm.so.6 => /lib64/libm.so.6 (0x00007f59e9525000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f59e9b70000)
libc.so.6 => /lib64/libc.so.6 (0x00007f59e8a00000)
/lib64/ld-linux-x86-64.so.2 (0x00007f59e9be5000)
編譯 mysql
編譯的版本是 mysql-8.0.30
安裝編譯所需環(huán)境
yum -y install gcc gcc-c++ cmake ncurses ncurses-devel bison openssl-devel rpcgen
安裝 libtirpc-devel
檢查是否安裝了 libtirpc
rpm -qa | grep libtirpc
如果沒安裝,執(zhí)行 yum install -y libtirpc
如果安裝了,根據(jù)版本到 清華源 搜索 libtirpc-devel,之后執(zhí)行下面的 rpm 命令,替換成對(duì)應(yīng)版本的 url
rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/centos-stream/9-stream/CRB/x86_64/os/Packages/libtirpc-devel-1.3.3-1.el9.x86_64.rpm
沒有安裝 openssl-devel 的報(bào)錯(cuò)
Not a supported openssl version in WITH_SSL=system. Make sure you have specified a supported SSL version. Valid options are : openssl[0-9]+ (use alternative system library) yes (synonym for system) </path/to/custom/openssl/installation> CMake Error at cmake/ssl.cmake:83 (MESSAGE): Please install the appropriate openssl developer package. Call Stack (most recent call first): cmake/ssl.cmake:379 (FATAL_SSL_NOT_FOUND_ERROR) CMakeLists.txt:1768 (MYSQL_CHECK_SSL) -- Configuring incomplete, errors occurred! See also "/usr/local/src/mysql-8.0.30/CMakeFiles/CMakeOutput.log". See also "/usr/local/src/mysql-8.0.30/CMakeFiles/CMakeError.log".
沒有安裝 libtirpc-devel 的報(bào)錯(cuò)
CMake Warning at cmake/rpc.cmake:40 (MESSAGE):
Cannot find RPC development libraries. You need to install the required
packages:
Debian/Ubuntu: apt install libtirpc-dev
RedHat/Fedora/Oracle Linux: yum install libtirpc-devel
SuSE: zypper install glibc-devel
Call Stack (most recent call first):
cmake/rpc.cmake:87 (WARN_MISSING_SYSTEM_TIRPC)
plugin/group_replication/libmysqlgcs/cmake/configure.cmake:34 (MYSQL_CHECK_RPC)
plugin/group_replication/libmysqlgcs/CMakeLists.txt:34 (INCLUDE)
CMake Error at cmake/rpc.cmake:88 (MESSAGE):
Could not find rpc/rpc.h in /usr/include or /usr/include/tirpc
Call Stack (most recent call first):
plugin/group_replication/libmysqlgcs/cmake/configure.cmake:34 (MYSQL_CHECK_RPC)
plugin/group_replication/libmysqlgcs/CMakeLists.txt:34 (INCLUDE)
-- Configuring incomplete, errors occurred!
See also "/usr/local/src/mysql-8.0.30/CMakeFiles/CMakeOutput.log".
See also "/usr/local/src/mysql-8.0.30/CMakeFiles/CMakeError.log".
沒有安裝 rpcgen 的報(bào)錯(cuò)
CMake Warning at cmake/rpc.cmake:29 (MESSAGE):
Cannot find rpcgen executable. You need to install the required packages:
Debian/Ubuntu: apt install rpcsvc-proto
RedHat/Fedora/Oracle Linux: yum install rpcgen
SuSE: zypper install glibc-devel
Call Stack (most recent call first):
plugin/group_replication/libmysqlgcs/cmake/rpcgen.cmake:112 (WARN_MISSING_RPCGEN_EXECUTABLE)
plugin/group_replication/libmysqlgcs/CMakeLists.txt:53 (INCLUDE)
CMake Error at plugin/group_replication/libmysqlgcs/cmake/rpcgen.cmake:113 (MESSAGE):
Could not find rpcgen
Call Stack (most recent call first):
plugin/group_replication/libmysqlgcs/CMakeLists.txt:53 (INCLUDE)
-- Configuring incomplete, errors occurred!
See also "/usr/local/src/mysql-8.0.30/CMakeFiles/CMakeOutput.log".
See also "/usr/local/src/mysql-8.0.30/CMakeFiles/CMakeError.log".
cmake 編譯
MySQL cmake 一些常用的參數(shù)解釋
-DCMAKE_INSTALL_PREFIX-MySQL 的安裝目錄-DMYSQL_USER-MySQL 啟動(dòng)的用戶名稱,默認(rèn)為 mysql-DMYSQL_UNIX_ADDR-Unix socket 文件路徑-DSYSCONFDIR-配置文件目錄DSYSTEMD_PID_DIR-PID 文件存儲(chǔ)路徑-DDEFAULT_CHARSET-默認(rèn)字符集-DDEFAULT_COLLATION-校驗(yàn)字符-DWITH_INNOBASE_STORAGE_ENGINE-是否安裝 innodb 存儲(chǔ)引擎-參數(shù):1 or 0-DWITH_ARCHIVE_STORAGE_ENGINE-是否安裝 archive 存儲(chǔ)引擎-參數(shù):1 or 0-DWITH_BLACKHOLE_STORAGE_ENGINE-是否安裝 blackhole 存儲(chǔ)引擎-參數(shù):1 or 0-DWITH_PERFSCHEMA_STORAGE_ENGINE-是否安裝 perfschema 存儲(chǔ)引擎-參數(shù):1 or 0-DMYSQL_DATADIR-MySQL 數(shù)據(jù)存儲(chǔ)路徑-DWITH_BOOST-指定 boost 目錄,需要下載的源碼包包含 boost-DFORCE_INSOURCE_BUILD-強(qiáng)制編譯,centos 9 版本不建議編譯,所以需要加參數(shù)強(qiáng)行編譯-參數(shù):1 or 0-DWITH_SYSTEMD-是否 systemctl 管理-參數(shù):1 or 0-DMYSQL_TCP_PORT-MySQL 默認(rèn)端口-DWITH_SSL-是否支持 ssl-參數(shù):yes or no-DENABLED_LOCAL_INFILE-是否開啟 load data infile 命令-參數(shù):1 or 0
開始編譯
cmake \ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \ -DSYSCONFDIR=/etc \ -DSYSTEMD_PID_DIR=/usr/local/mysql \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_ARCHIVE_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \ -DMYSQL_DATADIR=/usr/local/mysql/data \ -DWITH_BOOST=$(pwd)/boost/boost_1_77_0 \ -DFORCE_INSOURCE_BUILD=1 \ -DWITH_SYSTEMD=1
沒有 -DFORCE_INSOURCE_BUILD=1 參數(shù)會(huì)有如下報(bào)錯(cuò)
CMake Error at CMakeLists.txt:581 (MESSAGE): Please do not build in-source. Out-of source builds are highly recommended: you can have multiple builds for the same source, and there is an easy way to do cleanup, simply remove the build directory (note that 'make clean' or 'make distclean' does *not* work) You *can* force in-source build by invoking cmake with -DFORCE_INSOURCE_BUILD=1 -- Configuring incomplete, errors occurred! See also "/usr/local/src/mysql-8.0.30/CMakeFiles/CMakeOutput.log".
如果在 cmake 的過程中有報(bào)錯(cuò),當(dāng)報(bào)錯(cuò)解決后,需要把源碼目錄中的 CMakeCache.txt 文件刪除,然后再重新 cmake,不然還會(huì)報(bào)錯(cuò)
編譯完成后會(huì)有類似如下的輸出
-- CMAKE_BUILD_TYPE: RelWithDebInfo -- COMPILE_DEFINITIONS: _GNU_SOURCE;_FILE_OFFSET_BITS=64;RAPIDJSON_NO_SIZETYPEDEFINE;RAPIDJSON_SCHEMA_USE_INTERNALREGEX=0;RAPIDJSON_SCHEMA_USE_STDREGEX=1;HAVE_CONFIG_H;__STDC_LIMIT_MACROS;__STDC_FORMAT_MACROS;_USE_MATH_DEFINES;LZ4_DISABLE_DEPRECATE_WARNINGS;HAVE_TLSv13 -- CMAKE_C_FLAGS: -fno-omit-frame-pointer -ftls-model=initial-exec -O2 -g -Wall -Wextra -Wformat-security -Wvla -Wundef -Wmissing-format-attribute -Wwrite-strings -Wjump-misses-init -Wstringop-truncation -Wmissing-include-dirs -- CMAKE_CXX_FLAGS: -std=c++17 -fno-omit-frame-pointer -ftls-model=initial-exec -O2 -g -Wall -Wextra -Wformat-security -Wvla -Wundef -Wmissing-format-attribute -Woverloaded-virtual -Wcast-qual -Wimplicit-fallthrough=5 -Wstringop-truncation -Wsuggest-override -Wmissing-include-dirs -Wextra-semi -Wlogical-op -- CMAKE_CXX_FLAGS_DEBUG: -DSAFE_MUTEX -DENABLED_DEBUG_SYNC -g -- CMAKE_CXX_FLAGS_RELWITHDEBINFO: -ffunction-sections -fdata-sections -O2 -g -DNDEBUG -g1 -- CMAKE_CXX_FLAGS_RELEASE: -ffunction-sections -fdata-sections -O3 -DNDEBUG -- CMAKE_CXX_FLAGS_MINSIZEREL: -ffunction-sections -fdata-sections -Os -DNDEBUG -- CMAKE_C_LINK_FLAGS: -- CMAKE_CXX_LINK_FLAGS: -Wl,--copy-dt-needed-entries -- CMAKE_EXE_LINKER_FLAGS -- CMAKE_MODULE_LINKER_FLAGS -- CMAKE_SHARED_LINKER_FLAGS -- Configuring done -- Generating done -- Build files have been written to: /usr/local/src/mysql-8.0.30
make 編譯
make -j <cpu核心數(shù)> 可以加快 make 的編譯速度,當(dāng)然,不要超過自己 cpu 的核心數(shù),也要注意自己的 cpu 當(dāng)前空閑的核心數(shù),別把 cpu 當(dāng)燒烤架了
make -j 3 && make install
編譯完成后會(huì)有類似如下的輸出
-- Installing: /usr/local/mysql/man/man1/comp_err.1 -- Installing: /usr/local/mysql/man/man1/ibd2sdi.1 -- Installing: /usr/local/mysql/man/man1/innochecksum.1 -- Installing: /usr/local/mysql/man/man1/lz4_decompress.1 -- Installing: /usr/local/mysql/man/man1/my_print_defaults.1 -- Installing: /usr/local/mysql/man/man1/myisam_ftdump.1 -- Installing: /usr/local/mysql/man/man1/myisamchk.1 -- Installing: /usr/local/mysql/man/man1/myisamlog.1 -- Installing: /usr/local/mysql/man/man1/myisampack.1 -- Installing: /usr/local/mysql/man/man1/mysql.1 -- Installing: /usr/local/mysql/man/man1/mysql_config.1 -- Installing: /usr/local/mysql/man/man1/mysql_config_editor.1 -- Installing: /usr/local/mysql/man/man1/mysql_secure_installation.1 -- Installing: /usr/local/mysql/man/man1/mysql_ssl_rsa_setup.1 -- Installing: /usr/local/mysql/man/man1/mysql_tzinfo_to_sql.1 -- Installing: /usr/local/mysql/man/man1/mysql_upgrade.1 -- Installing: /usr/local/mysql/man/man1/mysqladmin.1 -- Installing: /usr/local/mysql/man/man1/mysqlbinlog.1 -- Installing: /usr/local/mysql/man/man1/mysqlcheck.1 -- Installing: /usr/local/mysql/man/man1/mysqldump.1 -- Installing: /usr/local/mysql/man/man1/mysqldumpslow.1 -- Installing: /usr/local/mysql/man/man1/mysqlimport.1 -- Installing: /usr/local/mysql/man/man1/mysqlman.1 -- Installing: /usr/local/mysql/man/man1/mysqlpump.1 -- Installing: /usr/local/mysql/man/man1/mysqlshow.1 -- Installing: /usr/local/mysql/man/man1/mysqlslap.1 -- Installing: /usr/local/mysql/man/man1/perror.1 -- Installing: /usr/local/mysql/man/man1/zlib_decompress.1 -- Installing: /usr/local/mysql/man/man8/mysqld.8 -- Installing: /usr/local/mysql/man/man1/mysqlrouter.1 -- Installing: /usr/local/mysql/man/man1/mysqlrouter_passwd.1 -- Installing: /usr/local/mysql/man/man1/mysqlrouter_plugin_info.1
驗(yàn)證 MySQL
創(chuàng)建 mysql 用戶,設(shè)置為不可登錄
useradd mysql -s /sbin/nologin
修改目錄權(quán)限
chown -R mysql.mysql /usr/local/mysql
創(chuàng)建配置文件
vim /etc/my.cnf
簡(jiǎn)單配置一個(gè)
[mysqld] user=mysql basedir=/usr/local/mysql datadir=/usr/local/mysql/data socket=/usr/local/mysql/mysql.sock port=3306 character_set_server=utf8 # lower_case_table_names 讓MYSQL不區(qū)分表名大小寫 lower_case_table_names=1 # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 # Settings user and group are ignored when systemd is used. # If you need to run mysqld under a different user or group, # customize your systemd unit file for mysql according to the # instructions in http://fedoraproject.org/wiki/Systemd [mysqld_safe] log-error=/usr/local/mysql/mysql.log pid-file=/usr/local/mysql/mysql.pid
添加 MySQL 命令到 PATH 變量
echo 'export PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile source /etc/profile
MySQL 數(shù)據(jù)庫(kù)初始化,這里使用的是無密碼初始化,初始化完成后,會(huì)有如下警告:
[Warning] [MY-010453] [Server] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option.
mysqld --initialize-insecure \ --user=mysql \ --basedir=/usr/local/mysql \ --datadir=/usr/local/mysql/data
配置 systemctl 管理 MySQL
cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
啟動(dòng) MySQL 服務(wù)
systemctl daemon-reload systemctl enable mysqld --now
進(jìn)入 MySQL,因?yàn)槭菬o密碼,直接回車就可以進(jìn)入 MySQL
mysql -uroot -p
修改 root 用戶密碼,同樣因?yàn)槭菬o密碼,直接回車就可以了
mysqladmin -u root -p password '<這里改成自己需要設(shè)定的密碼>'
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
CentOS6.5下搭建文件共享服務(wù)Samba的教程
這篇文章主要介紹了CentOS6.5下搭建文件共享服務(wù)(Samba)的教程,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-10-10
VMware Workstation Pro下CentOS 7 64位服務(wù)器安裝教程
這篇文章主要介紹了VMware Workstation Pro下CentOS 7 64位服務(wù)器安裝教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08
在Linux系統(tǒng)終端上安裝ChatGPT的兩種方法
OpenAI 開發(fā)了一款名為ChatGPT的人工智能聊天機(jī)器人,用戶可以使用它來獲取問題的答案,有些用戶希望在 Linux 系統(tǒng)上使用這款聊天機(jī)器人,所以本文將討論在 Linux 系統(tǒng)終端上安裝 ChatGPT 的兩種方法,需要的朋友可以參考下2026-03-03
Linux中搭建DNS域名解析服務(wù)器的詳細(xì)過程
在Linux中搭建DNS服務(wù)器涉及配置和運(yùn)行一個(gè)軟件來提供DNS服務(wù),DNS是互聯(lián)網(wǎng)上的一種系統(tǒng),它將域名轉(zhuǎn)換為對(duì)應(yīng)的IP地址,使得用戶可以通過易記的域名訪問網(wǎng)站,而不是記憶一長(zhǎng)串?dāng)?shù)字,本文給大家詳細(xì)介紹了Linux中搭建DNS域名解析服務(wù)器,需要的朋友可以參考下2024-03-03
phpStudy環(huán)境下安裝配置SSL證書實(shí)現(xiàn)加密訪問(Https)
phpStudy環(huán)境下安裝配置SSL證書,本文主要介紹了phpStudy環(huán)境下安裝配置SSL證書實(shí)現(xiàn)加密訪問,具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09
Typecho程序偽靜態(tài)規(guī)則大全(包括Linux/Windows)
Typecho程序的偽靜態(tài)規(guī)則不同于wp直接默認(rèn)可用,需要我們手工加載到空間中才可以生效。下面老左整理了這款程序在不同的主機(jī)環(huán)境中的偽靜態(tài)規(guī)則,希望對(duì)大家有所幫助2012-09-09

