MySQL编译安装-麒麟V10 x86

环境信息

操作系统: Kylin Linux Advanced Server V10 (Sword)

架构:X86

MySQL版本:5.7.44

编译

  • 安装必要的依赖库和编译工具

    sudo yum groupinstall 'Development Tools'

    sudo yum install cmake ncurses-devel openssl-devel boost-devel libtirpc libtirpc-devel rpcgen

  • 下载 MySQL 源码

从 MySQL 官方网站或 GitHub 仓库下载 MySQL 的源码包。

复制代码
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.44.tar.gz

tar -xzvf mysql-5.7.44.tar.gz

cd mysql-5.7.44
  • 配置 CMake 选项

使用 CMake 配置 MySQL 的构建选项。可以根据需要进行定制,例如指定安装目录、禁用不需要的功能等。

复制代码
cmake . \

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \

-DMYSQL_DATADIR=/usr/local/mysql/data \

-DSYSCONFDIR=/etc/mysql \

-DWITH_SSL=system \

-DWITH_ZLIB=system \

-DDEFAULT_CHARSET=utf8mb4 \

-DDEFAULT_COLLATION=utf8mb4_general_ci \

-DWITH_BOOST=boost

-DCMAKE_INSTALL_PREFIX:指定 MySQL 的安装目录。

-DMYSQL_DATADIR:指定数据存储目录。

-DSYSCONFDIR:指定配置文件目录。

-DWITH_SSL 和 -DWITH_ZLIB:指定使用系统的 SSL 和 Zlib 库。

-DDEFAULT_CHARSET 和 -DDEFAULT_COLLATION:设置默认字符集和校对规则。

-DWITH_BOOST:指定 Boost 库的位置。

关于Boost 库报错导致编译失败问题

Boost 是 MySQL 编译的必需依赖库之一。为了继续编译,CMake 需要知道 Boost 库的位置。

解决方法

选择以下两种方法之一来解决这个问题:

方法 1: 自动下载并使用 Boost 库

可以让 CMake 自动下载并使用 Boost 库。这个方法较为简单,CMake 会自动为你下载并配置 Boost 库。

复制代码
cmake . \

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \

-DMYSQL_DATADIR=/usr/local/mysql/data \

-DSYSCONFDIR=/etc/mysql \

-DWITH_SSL=system \

-DWITH_ZLIB=system \

-DDEFAULT_CHARSET=utf8mb4 \

-DDEFAULT_COLLATION=utf8mb4_general_ci \

-DDOWNLOAD_BOOST=1 \

-DWITH_BOOST=/usr/local/boost

-DDOWNLOAD_BOOST=1:让 CMake 自动下载 Boost 库。

-DWITH_BOOST=/usr/local/boost:指定 Boost 库将被下载并存储的目录。可以根据需要选择不同的路径。

方法 2: 手动下载并指定 Boost 库路径

你也可以手动下载 Boost 库,并将其路径指定给 CMake。

下载 Boost 库:

复制代码
wget https://boostorg.jfrog.io/artifactory/main/release/1.59.0/source/boost_1_59_0.tar.gz

tar -xzf boost_1_59_0.tar.gz

在配置 CMake 时指定 Boost 路径:

复制代码
cmake . \

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \

-DMYSQL_DATADIR=/usr/local/mysql/data \

-DSYSCONFDIR=/etc/mysql \

-DWITH_SSL=system \

-DWITH_ZLIB=system \

-DDEFAULT_CHARSET=utf8mb4 \

-DDEFAULT_COLLATION=utf8mb4_general_ci \

-DWITH_BOOST=/path/to/boost_1_59_0

将 /path/to/boost_1_59_0 替换为你实际解压 Boost 的路径。

  • 编译和安装

在配置成功后,使用 make 和 make install 命令编译并安装 MySQL。

复制代码
make

sudo make install

安装

  • 创建用户

创建mysql用户和组,mysql用户不能登录系统选项,不创建用户的主目录。

复制代码
groupadd -r mysql && useradd -r -g mysql -s /sbin/nologin -M mysql
  • 上传至服务器并安装

注意:服务器需要自己挂盘,建议统一挂载到/data目录

复制代码
#解压安装包提取文件内容到/data目录

tar -xvf mysql-5.7.44-x86.tgz -C /usr/local/mysql

#创建数据目录

mkdir /data/mysql_data /data/mysql_tmp /data/mysql_logs

#给目录授权

chown -R mysql:mysql  /data/mysql_data /data/mysql_tmp  /data/mysql_logs
  • 配置mysql

创建 MySQL 配置文件(如 /etc/my.cnf),并根据需要进行定制。

复制代码
vim /etc/my.cnf

[client]

# 客户端连接 MySQL 服务器的端口号,通常是 3306。

port = 3306

# MySQL 服务器的套接字文件路径,用于本地连接。

socket = /dev/shm/mysql.sock

[mysqld]

# MySQL 服务器监听的端口号,通常也是 3306。

port = 3306

# MySQL 服务器的套接字文件路径,用于本地连接。

socket = /dev/shm/mysql.sock

# MySQL 的根目录路径,通常用于安装 MySQL 的根目录。

basedir = /usr/local/mysql

# 存放数据库文件的目录路径。

datadir = /data/mysql_data

# 启用binglog日志文件,可以指定目录,如果不指定则放在数据目录下面

log_bin = mysql-bin

#存放 MySQL 进程 ID 的文件路径。

pid-file = /data/mysql_data/mysql.pid

#错误日志路径

log_error = /data/mysql_logs/mysql-error.log

#慢查询sql日志路径

slow_query_log_file = /data/mysql_logs/mysql-slow.log

#临时数据路径

tmpdir=/data/mysql_tmp

#设置默认时区

default_time_zone = '+08:00'

#设置日志默认时区

log_timestamps = SYSTEM

#MySQL 服务器运行时使用的用户(通常是 "mysql" 用户)

user = mysql

#用于指定 MySQL 服务器绑定的 IP 地址,0.0.0.0 表示绑定到所有可用的 IP 地址。

bind-address = 0.0.0.0

# MySQL 服务器的唯一标识符,用于主从复制等。

server-id = 1

# 连接到 MySQL 服务器时初始化 SQL 命令。

init-connect = 'SET NAMES utf8mb4'

# 服务器默认的字符集。

character-set-server = utf8mb4

#skip-name-resolve

#skip-networking

#允许在内核中等待的连接数量

back_log = 300

# 允许的最大并发连接数。

max_connections = 5000

# 最大连接错误数

max_connect_errors = 1000

# 打开的文件数限制。

open_files_limit = 65535

# 表缓存大小。

table_open_cache = 128

# 单个查询的最大允许数据包大小

max_allowed_packet = 4M

# 二进制日志缓存大小

binlog_cache_size = 1M

# 最大堆表大小

max_heap_table_size = 8M

# 临时表大小

tmp_table_size = 16M

# 读取缓冲区大小

read_buffer_size = 2M

# 随机读取缓冲区大小

read_rnd_buffer_size = 8M

# 排序缓冲区大小

sort_buffer_size = 8M

# 连接缓冲区大小

join_buffer_size = 8M

# 键缓冲区大小

key_buffer_size = 4M

# 线程缓存大小

thread_cache_size = 8

# 查询缓存类型 (1 表示启用)

query_cache_type = 1

# 查询缓存大小

query_cache_size = 8M

# 查询缓存限制

query_cache_limit = 2M

# 全文索引最小词长度

ft_min_word_len = 4

# 二进制日志文件的格式

binlog_format = mixed

# 二进制日志文件自动清理天数

expire_logs_days = 30

# 单个binlog最大大小

max_binlog_size =1G

# 启用慢查询日志 (1 表示启用)

slow_query_log = 1

# 定义慢查询的阈值时间

long_query_time = 1

# 性能模式 (0 表示禁用)

performance_schema = 0

# 明确指定 MySQL 是否应该使用严格的模式来检查日期和时间值

explicit_defaults_for_timestamp

# 表名大小写不敏感 (1 表示启用)

lower_case_table_names = 1

# 禁用外部锁定,用于控制表级锁定

skip-external-locking

# 默认存储引擎 (InnoDB)

default_storage_engine = InnoDB

# 默认存储引擎 (MyISAM)

#default-storage-engine = MyISAM

# 每个表使用单独的 InnoDB 文件

innodb_file_per_table = 1

# InnoDB 可以打开的最大文件数

innodb_open_files = 500

# InnoDB 缓冲池大小

innodb_buffer_pool_size = 64M

# InnoDB 写 I/O 线程数

innodb_write_io_threads = 4

# InnoDB 读 I/O 线程数

innodb_read_io_threads = 4

# InnoDB 线程并发度

innodb_thread_concurrency = 0

# InnoDB 清理线程数

innodb_purge_threads = 1

# InnoDB 日志刷新行为

innodb_flush_log_at_trx_commit = 2

# InnoDB 日志缓冲大小

innodb_log_buffer_size = 2M

# InnoDB 日志文件大小

innodb_log_file_size = 32M

# InnoDB 日志文件组数

innodb_log_files_in_group = 3

# InnoDB 最大脏页百分比

innodb_max_dirty_pages_pct = 90

# InnoDB 锁等待超时时间

innodb_lock_wait_timeout = 120

# 批量插入缓冲区大小

bulk_insert_buffer_size = 8M

# 交互超时时间

interactive_timeout = 28800

# 等待超时时间

wait_timeout = 28800

[mysqldump]

quick

# mysqldump 最大允许数据包大小

max_allowed_packet = 100M
  • 添加环境变量
复制代码
vim /etc/profile

# 在尾部添加

export MYSQL_HOME=/data/mysql

export PATH=$PATH:$MYSQL_HOME/bin
  • 初始化 MySQL 数据目录

安装完成后,需要初始化 MySQL 数据目录并设置 root 密码。

cd /usr/local/mysql

bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql_data

初始化完成后,记下生成的临时 root 密码,稍后将用于登录 MySQL。

  • 启动 MySQL

设置 MySQL 为系统服务,并启动 MySQL。

复制代码
sudo cp support-files/mysql.server /etc/init.d/mysql

sudo systemctl enable mysql

sudo systemctl start mysql
  • 修改MySQL密码,并允许远程连接

    #先免密登录

    mysql -u root

    #使用mysql库

    use mysql;

    #更新root密码

    update user set authentication_string=password("你的密码") where user="root";

    #赋予所有IP都可以使用root用户远程连接的权限

    grant all privileges on . to root@'%' identified by "你的密码";

    #刷新权限配置

    flush privileges;

    #退出mysql

    exit

  • 验证安装

通过登录 MySQL 来验证安装是否成功。

复制代码
/usr/local/mysql/bin/mysql -u root -p

输入新设置的 root 密码后,进入 MySQL 命令行界面。如果成功进入,说明 MySQL 编译安装完成。

相关推荐
Fireworkitte5 分钟前
MySQL常用的函数
数据库·mysql
qq_2003373935 分钟前
可以从以下几个方面判断一个 SQL 查询是否需要优化:
数据库
乐容44 分钟前
14,子查询语句嵌套
数据库
cyt涛1 小时前
Redis访问工具
数据库·redis·spring cache·注解·客户端·lettuce·redistemplae
AllWe$1 小时前
九、Redis 的实际使用与Redis的设计
数据库·redis·缓存
u0133087092 小时前
大模型训练数据库Common Crawl
数据库·语言模型
杨浦老苏2 小时前
跨平台数据库管理软件SQLynx
数据库·docker·群晖
Flying_Fish_roe2 小时前
Java中NoSQL 与分布式数据库
java·数据库·nosql
草木·君2 小时前
【SQL】百题计划:SQL排序Order by的使用。
数据库·sql
小时候的阳光2 小时前
Docker方式部署ProxySQL和Keepalived组合实现MGR的高可用访问
mysql·docker·keepalived·mgr·proxysql