环境准备
NAME="Kylin Linux Advanced Server"
VERSION="V10 (Tercel)"
ID="kylin"
VERSION_ID="V10"
PRETTY_NAME="Kylin Linux Advanced Server V10 (Tercel)"
ANSI_COLOR="0;31"
内核版本
4.19.90-17.ky10.aarch64
准备编译环境
yum install -y gcc gcc-c++ make cmake ncurses ncurses-devel bison
useradd mysql -s /sbin/nologin
下载解压安装包
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-boost-5.7.29.tar.gz
tar xvf mysql-boost-5.7.29.tar.gz
cd mysql-5.7.29
cmake 参数
Formats | Description | Default | Introduced | Removed |
---|---|---|---|---|
BUILD_CONFIG |
使用与官方版本相同的构建选项 | |||
CMAKE_BUILD_TYPE |
要生产的构建类型 | RelWithDebInfo |
||
CMAKE_CXX_FLAGS |
C++ 编译器的标志 | |||
CMAKE_C_FLAGS |
C 编译器的标志 | |||
CMAKE_INSTALL_PREFIX |
安装目录 | /usr/local/mysql |
||
COMPILATION_COMMENT |
编译与评论 | |||
CPACK_MONOLITHIC_INSTALL |
包构建是否产生单个文件 | OFF |
||
DEFAULT_CHARSET |
默认服务器字符集 | latin1 |
||
DEFAULT_COLLATION |
默认服务器排序规则 | latin1_swedish_ci |
||
DISABLE_PSI_COND |
排除性能模式条件检测 | OFF |
||
DISABLE_PSI_FILE |
排除性能模式文件检测 | OFF |
||
DISABLE_PSI_IDLE |
排除性能模式空闲检测 | OFF |
||
DISABLE_PSI_MEMORY |
排除性能模式内存检测 | OFF |
||
DISABLE_PSI_METADATA |
排除性能模式元数据检测 | OFF |
||
DISABLE_PSI_MUTEX |
排除性能模式互斥检测 | OFF |
||
DISABLE_PSI_PS |
排除性能模式准备好的语句 | OFF |
||
DISABLE_PSI_RWLOCK |
排除性能模式 rwlock 检测 | OFF |
||
DISABLE_PSI_SOCKET |
排除性能模式套接字检测 | OFF |
||
DISABLE_PSI_SP |
排除 Performance Schema 存储程序检测 | OFF |
||
DISABLE_PSI_STAGE |
排除 Performance Schema 阶段检测 | OFF |
||
DISABLE_PSI_STATEMENT |
排除性能模式语句检测 | OFF |
||
DISABLE_PSI_STATEMENT_DIGEST |
排除性能模式语句_digest 检测 | OFF |
||
DISABLE_PSI_TABLE |
排除性能模式表检测 | OFF |
||
DISABLE_PSI_THREAD |
排除性能模式线程检测 | OFF |
||
DISABLE_PSI_TRANSACTION |
排除性能模式事务检测 | OFF |
||
DOWNLOAD_BOOST |
是否下载Boost库 | OFF |
||
DOWNLOAD_BOOST_TIMEOUT |
下载 Boost 库的超时时间(以秒为单位) | 600 |
||
ENABLED_LOCAL_INFILE |
是否为 LOAD DATA 启用 LOCAL | OFF |
||
ENABLED_PROFILING |
是否启用查询分析代码 | ON |
||
ENABLE_DOWNLOADS |
是否下载可选文件 | OFF |
||
ENABLE_DTRACE |
是否包含 DTrace 支持 | |||
ENABLE_GCOV |
是否包含 gcov 支持 | |||
ENABLE_GPROF |
启用 gprof(仅限优化的 Linux 版本) | OFF |
||
FORCE_UNSUPPORTED_COMPILER |
是否允许不支持的编译器 | OFF |
||
IGNORE_AIO_CHECK |
使用-DBUILD_CONFIG=mysql_release,忽略libaio检查 | OFF |
||
INSTALL_BINDIR |
用户可执行文件目录 | PREFIX/bin |
||
INSTALL_DOCDIR |
文档目录 | PREFIX/docs |
||
INSTALL_DOCREADMEDIR |
自述文件目录 | PREFIX |
||
INSTALL_INCLUDEDIR |
头文件目录 | PREFIX/include |
||
INSTALL_INFODIR |
信息文件目录 | PREFIX/docs |
||
INSTALL_LAYOUT |
选择预定义的安装布局 | STANDALONE |
||
INSTALL_LIBDIR |
库文件目录 | PREFIX/lib |
||
INSTALL_MANDIR |
手册页目录 | PREFIX/man |
||
INSTALL_MYSQLKEYRINGDIR |
keyring_file 插件数据文件的目录 | platform specific |
5.7.11 | |
INSTALL_MYSQLSHAREDIR |
共享数据目录 | PREFIX/share |
||
INSTALL_MYSQLTESTDIR |
mysql测试目录 | PREFIX/mysql-test |
||
INSTALL_PKGCONFIGDIR |
mysqlclient.pc pkg-config 文件的目录 | INSTALL_LIBDIR/pkgconfig |
||
INSTALL_PLUGINDIR |
插件目录 | PREFIX/lib/plugin |
||
INSTALL_SBINDIR |
服务器可执行目录 | PREFIX/bin |
||
INSTALL_SCRIPTDIR |
脚本目录 | PREFIX/scripts |
||
INSTALL_SECURE_FILE_PRIVDIR |
secure_file_priv 默认值 | platform specific |
||
INSTALL_SECURE_FILE_PRIV_EMBEDDEDDIR |
libmysqld 的secure_file_priv 默认值 | |||
INSTALL_SHAREDIR |
aclocal/mysql.m4 安装目录 | PREFIX/share |
||
INSTALL_SUPPORTFILESDIR |
额外的支持文件目录 | PREFIX/support-files |
||
MAX_INDEXES |
每个表的最大索引 | 64 |
||
MEMCACHED_HOME |
内存缓存路径;过时的 | [none] |
5.7.33 | |
MUTEX_TYPE |
InnoDB 互斥类型 | event |
||
MYSQLX_TCP_PORT |
X Plugin 使用的 TCP/IP 端口号 | 33060 |
5.7.17 | |
MYSQLX_UNIX_ADDR |
X Plugin 使用的 Unix 套接字文件 | /tmp/mysqlx.sock |
5.7.15 | |
MYSQL_DATADIR |
数据目录 | |||
MYSQL_MAINTAINER_MODE |
是否启用 MySQL 维护者专用开发环境 | OFF |
||
MYSQL_PROJECT_NAME |
Windows/macOS 项目名称 | MySQL |
||
MYSQL_TCP_PORT |
TCP/IP 端口号 | 3306 |
||
MYSQL_UNIX_ADDR |
Unix 套接字文件 | /tmp/mysql.sock |
||
ODBC_INCLUDES |
ODBC 包括目录 | |||
ODBC_LIB_DIR |
ODBC 库目录 | |||
OPTIMIZER_TRACE |
是否支持优化器跟踪 | |||
REPRODUCIBLE_BUILD |
特别注意创建独立于构建位置和时间的构建结果 | 5.7.19 | ||
SUNPRO_CXX_LIBRARY |
Solaris 10+ 上的客户端链接库 | |||
SYSCONFDIR |
选项文件目录 | |||
SYSTEMD_PID_DIR |
systemd 下 PID 文件的目录 | /var/run/mysqld |
||
SYSTEMD_SERVICE_NAME |
systemd 下 MySQL 服务的名称 | mysqld |
||
TMPDIR |
tmpdir 默认值 | |||
WIN_DEBUG_NO_INLINE |
是否禁用函数内联 | OFF |
||
WITHOUT_xxx_STORAGE_ENGINE |
从构建中排除存储引擎 xxx | |||
WITH_ASAN |
启用 AddressSanitizer | OFF |
||
WITH_ASAN_SCOPE |
启用 AddressSanitizer -fsanitize-address-use-after-scope Clang 标志 | OFF |
5.7.21 | |
WITH_AUTHENTICATION_LDAP |
LDAP认证插件无法构建是否报错 | OFF |
5.7.19 | |
WITH_AUTHENTICATION_PAM |
构建 PAM 身份验证插件 | OFF |
||
WITH_AWS_SDK |
Amazon Web Services 软件开发工具包的位置 | 5.7.19 | ||
WITH_BOOST |
Boost 库源的位置 | |||
WITH_BUNDLED_LIBEVENT |
构建 ndbmemcache 时使用捆绑的 libevent;过时的 | ON |
5.7.33 | |
WITH_BUNDLED_MEMCACHED |
构建ndbmemcache时使用捆绑的memcached;过时的 | ON |
5.7.33 | |
WITH_CLASSPATH |
构建 MySQL Cluster Connector for Java 时使用的类路径。默认为空字符串。 | `` | ||
WITH_CLIENT_PROTOCOL_TRACING |
构建客户端协议跟踪框架 | ON |
||
WITH_CURL |
curl库的位置 | 5.7.19 | ||
WITH_DEBUG |
是否包含调试支持 | OFF |
||
WITH_DEFAULT_COMPILER_OPTIONS |
是否使用默认编译器选项 | ON |
||
WITH_DEFAULT_FEATURE_SET |
是否使用默认功能集 | ON |
||
WITH_EDITLINE |
使用哪个 libedit/editline 库 | bundled |
||
WITH_EMBEDDED_SERVER |
是否搭建嵌入式服务器 | OFF |
||
WITH_EMBEDDED_SHARED_LIBRARY |
是否构建共享嵌入式服务器库 | OFF |
||
WITH_ERROR_INSERT |
在 NDB 存储引擎中启用错误注入。不应用于构建用于生产的二进制文件。 | OFF |
||
WITH_EXTRA_CHARSETS |
要包括哪些额外的字符集 | all |
||
WITH_GMOCK |
googlemock 分发路径 | |||
WITH_INNODB_EXTRA_DEBUG |
是否包括对 InnoDB 的额外调试支持。 | OFF |
||
WITH_INNODB_MEMCACHED |
是否生成 memcached 共享库。 | OFF |
||
WITH_KEYRING_TEST |
构建密钥环测试程序 | OFF |
5.7.11 | |
WITH_LDAP |
限内部使用 | 5.7.29 | ||
WITH_LIBEVENT |
使用哪个 libevent 库 | bundled |
||
WITH_LIBWRAP |
是否包含 libwrap(TCP 包装器)支持 | OFF |
||
WITH_LZ4 |
LZ4 库支持的类型 | bundled |
5.7.14 | |
WITH_MECAB |
编译 MeCab | |||
WITH_MSAN |
启用 MemorySanitizer | OFF |
||
WITH_MSCRT_DEBUG |
启用 Visual Studio CRT 内存泄漏跟踪 | OFF |
||
WITH_NDBAPI_EXAMPLES |
构建 API 示例程序 | OFF |
||
WITH_NDBCLUSTER |
构建 NDB 存储引擎 | ON |
||
WITH_NDBCLUSTER_STORAGE_ENGINE |
供内部使用;可能无法在所有情况下都按预期工作;用户应该改用 WITH_NDBCLUSTER | ON |
||
WITH_NDBMTD |
构建多线程数据节点。 | ON |
||
WITH_NDB_BINLOG |
mysqld 默认启用二进制日志。 | ON |
||
WITH_NDB_DEBUG |
生成用于测试或故障排除的调试版本。 | OFF |
||
WITH_NDB_JAVA |
启用 Java 和 ClusterJ 支持的构建。默认启用。仅在 MySQL 集群中支持。 | ON |
||
WITH_NDB_PORT |
使用此选项构建的管理服务器使用的默认端口。如果未使用此选项构建它,则管理服务器的默认端口为 1186。 | [none] |
||
WITH_NDB_TEST |
包括 NDB API 测试程序。 | OFF |
||
WITH_NUMA |
设置 NUMA 内存分配策略 | 5.7.17 | ||
WITH_PROTOBUF |
使用哪个 Protocol Buffers 包 | bundled |
5.7.12 | |
WITH_RAPID |
是否构建快速开发周期插件 | ON |
5.7.12 | |
WITH_SASL |
限内部使用 | 5.7.29 | ||
WITH_SSL |
SSL 支持的类型 | system |
||
WITH_SYSTEMD |
启用 systemd 支持文件的安装 | OFF |
||
WITH_TEST_TRACE_PLUGIN |
构建测试协议跟踪插件 | OFF |
||
WITH_UBSAN |
启用未定义的行为清理程序 | OFF |
||
WITH_UNIT_TESTS |
使用单元测试编译 MySQL | ON |
||
WITH_UNIXODBC |
启用 unixODBC 支持 | OFF |
||
WITH_VALGRIND |
是否在 Valgrind 头文件中编译 | OFF |
||
WITH_ZLIB |
zlib 支持的类型 | bundled |
||
WITH_xxx_STORAGE_ENGINE |
将存储引擎 xxx 静态编译到服务器中 |
开始编译
- 定义变量,根据自己环境情况修改
export boost_home=/usr/local/src/mysql-5.7.29/boost
export mysql_home=/opt/mysql
make -j $(nproc)
表示使用所有的 cpu 线程进行编译,如果机器有业务使用,不建议使用$(nproc)
cmake \
-DCMAKE_INSTALL_PREFIX=${mysql_home} \
-DSYSTEMD_PID_DIR=${mysql_home} \
-DMYSQL_UNIX_ADDR=${mysql_home}/mysql.sock \
-DMYSQL_DATADIR=${mysql_home}/data \
-DSYSCONFDIR=/etc \
-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 \
-DWITH_BOOST=${boost_home}/boost_1_59_0 \
-DWITH_SYSTEMD=1 && \
make -j $(nproc) && \
make install
报错1
CMake Error at rapid/plugin/group_replication/rpcgen.cmake:100 (MESSAGE):
Could not find rpcgen
Call Stack (most recent call first):
rapid/plugin/group_replication/CMakeLists.txt:36 (INCLUDE)
-- Configuring incomplete, errors occurred!
See also "/usr/local/src/mysql-5.7.29/CMakeFiles/CMakeOutput.log".
See also "/usr/local/src/mysql-5.7.29/CMakeFiles/CMakeError.log".
wget https://github.com/thkukuk/rpcsvc-proto/releases/download/v1.4/rpcsvc-proto-1.4.tar.gz
tar xvf rpcsvc-proto-1.4.tar.gz
cd rpcsvc-proto-1.4
./configure && make && make install
配置 mysql
等会配置文件会定义使用的用户为 mysql
- 如果定义的是其他用户,就赋权其他的用户,以自己实际为准
chown -R mysql.mysql ${mysql_home}
修改配置文件
vim /etc/my.cnf
[mysqld]
user=mysql
basedir=/opt/mysql
datadir=/opt/mysql/data
socket=/opt/mysql/mysql.sock
port=3306
character_set_server=utf8
# lower_case_table_names 让MYSQL不区分表名大小写
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=/var/log/mysql/mysql.log
pid-file=/var/run/mysql/mysql.pid
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d
数据库初始化
- 更新环境变量
echo "export PATH=\$PATH:${mysql_home}/bin:${mysql_home}/lib" >> /etc/profile
source /etc/profile
mysqld --initialize-insecure \
--user=mysql \
--basedir=${mysql_home} \
--datadir=${mysql_home}/data
root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option.
初始化完成后,会出现上面的输出,创建的 root 用户仅本机可以访问,并且没有配置密码
--initialize-insecure
-创建一个密码为空的超级用户
--initialize
-创建一个随机密码的超级用户,并将其存储到日志中
- 一般都使用空密码
启动 mysql
cp ${mysql_home}/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system
systemctl daemon-reload
systemctl enable mysqld.service
systemctl start mysqld.service