麒麟 arm64 环境编译部署 mysql
mysql 各大版本下载地址
环境准备
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

浙公网安备 33010602011771号