Linux编译安装mysql5.7.44 笔记250330
Linux编译安装mysql5.7.44
以下是在Linux系统上通过编译源码安装MySQL 5.7.44的详细步骤:
准备工作
1. 安装依赖库
Debian/Ubuntu
# Debian/Ubuntu
sudo apt update
sudo apt install -y gcc g++ cmake make libncurses5-dev libssl-dev libboost-dev \bison libaio-dev libreadline-dev zlib1g-dev libboost-all-dev pkg-config
CentOS/RHEL
# CentOS/RHEL
sudo yum install -y gcc gcc-c++ cmake make ncurses-devel openssl-devel \bison libaio-devel readline-devel zlib-devel pkg-config
2. 下载MySQL 5.7.44源码
下载页: https://downloads.mysql.com/archives/community/
无boost的版本:
#wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.44.tar.gz
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.44.tar.gz
tar -zxvf mysql-5.7.44.tar.gz
cd mysql-5.7.44
自带boost的版本:
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-boost-5.7.44.tar.gz
tar -zxvf mysql-boost-5.7.44.tar.gz
cd mysql-5.7.44
注意:如果链接失效,可访问 MySQL Archives 手动下载对应版本。
编译与安装
3. 配置编译参数
无boost的版本用👇
mkdir build
cd build
cmake .. \-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \-DMYSQL_DATADIR=/usr/local/mysql/data \-DSYSCONFDIR=/etc \-DWITH_INNOBASE_STORAGE_ENGINE=1 \-DWITH_ARCHIVE_STORAGE_ENGINE=1 \-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \-DWITH_READLINE=1 \-DWITH_SSL=system \-DWITH_ZLIB=system \-DENABLED_LOCAL_INFILE=1 \-DMYSQL_TCP_PORT=3306 \-DDEFAULT_CHARSET=utf8mb4 \-DDEFAULT_COLLATION=utf8mb4_general_ci \-DENABLE_DOWNLOADS=1 \-DWITH_BOOST=/usr/local/include -DDOWNLOAD_BOOST=1 # 用于无boost版,会自动下载boost1.59.0版 到 -DWITH_BOOST指定的文件夹下的boost_1_59_0文件夹## 只能用boost.1.59.0版 -DDOWNLOAD_BOOST=1 会自动下载boost.1.59.0版 到 -DWITH_BOOST指定的文件夹下的boost_1_59_0文件夹
带boost的版本用👇
mkdir build
cd build
cmake .. \-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \-DMYSQL_DATADIR=/usr/local/mysql/data \-DSYSCONFDIR=/etc \-DWITH_INNOBASE_STORAGE_ENGINE=1 \-DWITH_ARCHIVE_STORAGE_ENGINE=1 \-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \-DWITH_READLINE=1 \-DWITH_SSL=system \-DWITH_ZLIB=system \-DENABLED_LOCAL_INFILE=1 \-DMYSQL_TCP_PORT=3306 \-DDEFAULT_CHARSET=utf8mb4 \-DDEFAULT_COLLATION=utf8mb4_general_ci \-DENABLE_DOWNLOADS=1 \-DWITH_BOOST=../boost/boost_1_59_0 # 用于自带boost版
4. 编译并安装
make -j$(nproc) # 使用多核编译(根据CPU核心数调整)
sudo make install # 安装到指定目录
初始化与配置
5.创建mysql用户和组:
sudo groupadd mysql
sudo useradd -r -g mysql -s /bin/false mysql
6. 初始化数据库
cd /usr/local/mysql
sudo mkdir -p data
sudo chown -R mysql:mysql .
sudo /usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
无密码:
sudo /usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
带密码:
sudo /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
初始化完成后,记录输出的临时root密码(类似 A temporary password is generated for root@localhost: xxxxxx)。
没有配置日志则密码输出到控制台, 否则默认输出到日志, 默认不带日志
7. 启动MySQL服务
sudo cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
sudo chmod +x /etc/init.d/mysqld
sudo systemctl daemon-reload
sudo systemctl enable mysqld --now
可看出 /etc/init.d/mysqld 来自 /usr/local/mysql/support-files/mysql.server 是一个sh脚本
查看 /etc/init.d/mysqld 可看出很多默认设置
less /usr/local/mysql/support-files/mysql.server
8. 配置my.cnf文件,可省略,/etc/my.cnf默认不存在
apt安装的mysql默认配置文件在 /etc/mysql/下,
编译安装的mysql默认配置文件直接在/etc下, 为 /etc/my.cnf
可以通过查看 /usr/local/mysql/support-files/mysql.server 看出
vi /usr/local/mysql/support-files/mysql.server
sudo nano /etc/mysql/my.cnf # 默认不存在, 按需修改配置(如字符集、内存参数等)
模板1:
sudo tee /etc/my.cnf <<-'EOFxxxXXXeof---'
[mysqld]
# 基础配置
user=mysql
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port=3306
socket=/tmp/mysql.sock
character-set-server=utf8mb4
explicit_defaults_for_timestamp=true# 日志配置
log-error=/usr/local/mysql/log/mysql.err
pid-file=/usr/local/mysql/mysql.pid# 复制和GTID(可选,如需主从配置)
server-id=10001
log-bin=mysql-bin
binlog_format=ROW
gtid_mode=ON
enforce_gtid_consistency=ON[client]
default-character-set=utf8mb4
socket=/tmp/mysql.sock
EOFxxxXXXeof---
模仿apt安装,/etc/mysql/my.cnf只用于引入文件夹,配置文件必须已.cnf结尾:
if [ -d "/etc/mysql" ] ;then echo '文件夹已存在' ;else mkdir /etc/mysql ;fi
sudo tee /etc/mysql/my.cnf <<-'EOFxxxXXX---eofXXXxxx'
#
# The MySQL database server configuration file.
#
# You can copy this to one of:
# - "/etc/mysql/my.cnf" to set global options,
# - "~/.my.cnf" to set user-specific options.
#
# One can use all long options that the program supports.
# Run program with --help to get a list of available options and with
# --print-defaults to see which it would actually understand and use.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html#
# * IMPORTANT: Additional settings that can override those from this file!
# The files must end with '.cnf', otherwise they'll be ignored.
#!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/
EOFxxxXXX---eofXXXxxxif [ ! -d "/etc/mysql/conf.d/" ] ;then mkdir -p /etc/mysql/conf.d ;fi
if [ ! -d "/etc/mysql/mysql.conf.d/" ] ;then mkdir -p /etc/mysql/mysql.conf.d ;fisudo tee /etc/mysql/mysql.conf.d/Hello.cnf <<-'EOFxxxXXXeof------EOFxxxXXXeof'
[mysqld]
# 基础配置
user=mysql
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port=3306
socket=/tmp/mysql.sock
character-set-server=utf8mb4
explicit_defaults_for_timestamp=true# 日志配置
log-error=/usr/local/mysql/log/mysql.err
pid-file=/usr/local/mysql/mysql.pid# 复制和GTID(可选,如需主从配置)
server-id=10001
log-bin=mysql-bin
binlog_format=ROW
gtid_mode=ON
enforce_gtid_consistency=ON[client]
default-character-set=utf8mb4
socket=/tmp/mysql.sock
EOFxxxXXXeof------EOFxxxXXXeof
模板1:
sudo tee /etc/my.cnf <<-'EOFxxxXXXeof---'
[mysqld]
# 基础配置
user=mysql
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port=3306
socket=/tmp/mysql.sock
character-set-server=utf8mb4
explicit_defaults_for_timestamp=true# 日志配置
log-error=/usr/local/mysql/log/mysql.err
pid-file=/usr/local/mysql/mysql.pid# 复制和GTID(可选,如需主从配置)
server-id=10001
log-bin=mysql-bin
binlog_format=ROW
gtid_mode=ON
enforce_gtid_consistency=ON[client]
default-character-set=utf8mb4
socket=/tmp/mysql.sock
EOFxxxXXXeof---
启动与使用
9. 登录mysql, 修改root密码
无密码
/usr/local/mysql/bin/mysql -uroot
有密码
/usr/local/mysql/bin/mysql -u root -p
修改密码方法1:
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';
FLUSH PRIVILEGES;
修改密码方法2:
SET PASSWORD='你的新密码'; FLUSH PRIVILEGES;
10. 设置环境变量
当前用户范围:
echo 'export PATH=/usr/local/mysql/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
全局:
echo 'export PATH=/usr/local/mysql/bin:$PATH' >> /etc/profile
source /etc/profile
可选操作
配置systemd服务(推荐)
sudo nano /etc/systemd/system/mysql.service
输入以下内容:
[Unit]
Description=MySQL Server
After=network.target[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
Restart=on-failure[Install]
WantedBy=multi-user.target
启动服务:
sudo systemctl daemon-reload
sudo systemctl start mysql
sudo systemctl enable mysql
以下是在Linux系统上编译安装MySQL 5.7.44的详细步骤:
1. 安装依赖项
Ubuntu/Debian
# Ubuntu/Debian
sudo apt update
sudo apt install cmake make gcc g++ libncurses-dev libssl-dev bison pkg-config
CentOS/RHEL
# CentOS/RHEL
sudo yum install cmake make gcc gcc-c++ ncurses-devel openssl-devel bison pkg-config
2. 下载MySQL源码
# 进入临时目录
cd /tmp# 下载源码包(从官方或镜像站点获取)
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-boost-5.7.44.tar.gz# 验证文件完整性(可选)
md5sum mysql-boost-5.7.44.tar.gz # 应输出 1a637fce4599d9bf5f1c81699f086274
3. 解压并编译
# 解压源码
tar -zxvf mysql-boost-5.7.44.tar.gz
cd mysql-5.7.44# 配置编译选项(关键步骤)
mkdir build
cd buildcmake .. \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DSYSCONFDIR=/etc \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_SSL=system \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_BOOST=../boost# 开始编译(根据CPU核心数调整 -j 参数)
make -j $(nproc)# 安装
sudo make install
4. 初始化数据库
带初始密码
# 创建mysql用户和组
sudo groupadd mysql
sudo useradd -r -g mysql -s /bin/false mysql# 创建数据目录并设置权限
sudo mkdir -p /usr/local/mysql/data
sudo chown -R mysql:mysql /usr/local/mysql# 初始化数据库(记录临时root密码)
sudo /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data# 输出示例:临时密码为 `A temporary password is generated for root@localhost: xxxxxxxx`
无初始密码
# 创建mysql用户和组
sudo groupadd mysql
sudo useradd -r -g mysql -s /bin/false mysql# 创建数据目录并设置权限
sudo mkdir -p /usr/local/mysql/data
sudo chown -R mysql:mysql /usr/local/mysql# 初始化数据库(记录临时root密码)
sudo /usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data# --initialize-insecure 无初始密码
5. 启动MySQL服务
# 复制配置文件
sudo cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
sudo chmod +x /etc/init.d/mysqld# 启动服务
sudo service mysqld start# 设置开机自启
sudo update-rc.d mysqld defaults # Debian/Ubuntu
# 或
sudo chkconfig --add mysqld # CentOS/RHEL
6. 配置环境变量
# 编辑 ~/.bashrc 或 /etc/profile
echo 'export PATH=/usr/local/mysql/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
7. 登录并修改root密码
# 使用临时密码登录
mysql -u root -p# 修改密码(MySQL 5.7+需满足密码策略)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewPassword123!';
FLUSH PRIVILEGES;
8. 验证安装
mysql -V
# 应输出:mysql Ver 5.7.44 for Linux on x86_64 (...)
常见问题
- 依赖缺失:根据错误提示安装对应开发库(如
libtinfo-dev)。 - CMake错误:确保CMake版本 ≥ 2.8,并检查编译选项语法。
- 初始化失败:检查文件权限和数据目录路径。
- 内存不足:添加交换空间或调整
make -j参数。
附加说明
- 二进制安装替代方案:若无需定制编译,建议直接使用官方二进制包或Docker镜像。
- 安全加固:安装后运行
mysql_secure_installation进行安全设置。
如有具体环境差异(如发行版版本或硬件架构),请提供详细信息以进一步调整步骤。
以下是基于知识库信息整理的 Linux系统下编译安装MySQL 5.7.44 的详细步骤:
一、安装前准备
-
下载MySQL二进制包
MySQL 5.7.44为二进制免编译包(无需源码编译),从官网下载对应版本:wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz(注意:如果是CentOS 7等系统,选择
mysql-5.7.44-el7-x86_64.tar.gz) -
上传并解压到指定目录
# 解压到临时目录(如当前目录) tar -zxvf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz# 将解压后的目录移动到安装路径(如 `/usr/local/mysql`) sudo mv mysql-5.7.44-linux-glibc2.12-x86_64 /usr/local/mysql# 进入MySQL安装目录 cd /usr/local/mysql -
创建MySQL用户和组
# 创建用户组和用户 sudo groupadd mysql sudo useradd -r -g mysql -s /sbin/nologin mysql# 将目录权限赋予mysql用户 sudo chown -R mysql:mysql /usr/local/mysql -
安装依赖库
如果遇到依赖错误(如缺少libaio),需提前安装:sudo yum install -y libaio libaio-devel
二、初始化数据库
-
创建数据目录并授权
# 在安装目录下创建data目录(存放数据库文件) sudo mkdir /usr/local/mysql/data# 授权目录给mysql用户 sudo chown -R mysql:mysql /usr/local/mysql/data -
初始化MySQL
# 进入MySQL的bin目录执行初始化 cd /usr/local/mysql/bin ./mysqld --initialize --user=mysql \--basedir=/usr/local/mysql \--datadir=/usr/local/mysql/data- 初始化完成后会生成临时密码(如
6x<tqpxgie!F),需记录下来,后续登录时使用。
- 初始化完成后会生成临时密码(如
三、配置MySQL
-
创建配置文件
/etc/my.cnf
根据知识库中的配置示例,编辑配置文件:sudo vim /etc/my.cnf添加以下内容(根据需求调整):
[mysqld] # 基础配置 user=mysql basedir=/usr/local/mysql datadir=/usr/local/mysql/data port=3306 socket=/tmp/mysql.sock character-set-server=utf8mb4 explicit_defaults_for_timestamp=true# 日志配置 log-error=/usr/local/mysql/log/mysql.err pid-file=/usr/local/mysql/mysql.pid# 复制和GTID(可选,如需主从配置) server-id=10001 log-bin=mysql-bin binlog_format=ROW gtid_mode=ON enforce_gtid_consistency=ON[client] default-character-set=utf8mb4 socket=/tmp/mysql.sock -
创建日志和数据目录
sudo mkdir -p /usr/local/mysql/log sudo chown -R mysql:mysql /usr/local/mysql/log
四、启动MySQL服务
-
将MySQL加入系统服务
# 复制启动脚本到服务目录 sudo cp support-files/mysql.server /etc/init.d/mysql# 设置服务可执行权限 sudo chmod +x /etc/init.d/mysql# 设置开机自启(CentOS 7+ 使用systemctl) sudo chkconfig --add mysql # 旧版本 sudo systemctl enable mysql # CentOS 7+ -
启动MySQL服务
sudo service mysql start # 使用service启动 # 或 sudo systemctl start mysql
五、登录与密码修改
-
登录MySQL
使用初始化时生成的临时密码登录:# 进入bin目录执行 cd /usr/local/mysql/bin ./mysql -uroot -p -
修改root密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码'; FLUSH PRIVILEGES; -
配置远程访问(可选)
USE mysql; UPDATE user SET Host='%' WHERE User='root'; # 允许所有IP访问 FLUSH PRIVILEGES;
六、验证安装
-
检查MySQL状态
sudo service mysql status # 或 sudo systemctl status mysql -
测试连接
# 本地连接 ./mysql -uroot -p -S /tmp/mysql.sock# 远程连接(需开放3306端口) mysql -h你的IP -uroot -p -P3306
常见问题解决
-
依赖库缺失
sudo yum install -y libaio numactl-libs -
权限错误
确保数据目录和日志目录的权限为mysql:mysql:sudo chown -R mysql:mysql /usr/local/mysql/{data,log} -
端口冲突
检查3306端口是否被占用:netstat -tlnp | grep 3306
附:主从复制配置参考
如需搭建主从(基于GTID),参考知识库中的步骤:
- 主库配置
在my.cnf中添加:server-id=1003306 log-bin=mysql-bin gtid_mode=ON enforce_gtid_consistency=ON - 备库配置
设置唯一server-id,并开启GTID。 - 创建复制用户
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' IDENTIFIED BY 'password'; - 同步数据并启动从库
使用mysqldump备份主库,恢复到备库后执行:CHANGE MASTER TO MASTER_HOST='主库IP', MASTER_AUTO_POSITION=1; START SLAVE;
通过以上步骤,您可以在Linux系统上成功安装并配置MySQL 5.7.44。如需进一步优化或故障排查,可参考知识库中提到的详细配置项。
在Linux系统上编译安装MySQL 5.7.44,可按如下步骤操作:
1. 安装必要的依赖
在编译MySQL之前,需要安装一系列必要的依赖包,这些包可以帮助完成编译过程。
sudo apt-get update
sudo apt-get install -y build-essential cmake bison libncurses5-dev libssl-dev libaio-dev
2. 下载MySQL 5.7.44源代码
可以从MySQL官方网站下载MySQL 5.7.44的源代码压缩包。
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.44.tar.gz
3. 解压源代码
tar -zxvf mysql-5.7.44.tar.gz
cd mysql-5.7.44
4. 创建CMake配置文件
在编译之前,需要使用CMake生成Makefile文件。
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DSYSCONFDIR=/etc \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_unicode_ci
5. 编译并安装
make -j$(nproc)
sudo make install
6. 配置MySQL
创建MySQL用户和用户组,并设置相应的权限。
sudo groupadd mysql
sudo useradd -r -g mysql -s /bin/false mysql
sudo chown -R mysql:mysql /usr/local/mysql
7. 初始化MySQL数据目录
sudo /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
8. 启动MySQL服务
sudo cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
sudo chmod +x /etc/init.d/mysql
sudo systemctl daemon-reload
sudo systemctl start mysql
sudo systemctl enable mysql
9. 查找初始密码并登录
在初始化数据目录时,MySQL会生成一个初始密码。你可以通过以下命令查找这个密码:
sudo grep 'temporary password' /usr/local/mysql/data/error.log
使用查找到的初始密码登录MySQL:
/usr/local/mysql/bin/mysql -u root -p
10. 修改初始密码
登录后,你需要修改初始密码以提高安全性:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewPassword';
按照以上步骤,你就可以在Linux系统上成功编译安装MySQL 5.7.44。
以下是Linux上编译安装MySQL 5.7.44的详细步骤:
1. 卸载旧版本的MySQL或MariaDB
rpm -qa | grep mariadb
rpm -qa | grep mysql
yum remove -y [查询到的包名]
如果系统中没有安装过MySQL或MariaDB,可以跳过这一步。
2. 安装编译所需的依赖库
yum install -y ncurses libaio-devel ncurses-devel openssl-devel gcc gcc-c++ make cmake cmake3 git gmp mpfr bison m4 libtool autoconf automake openldap openldap-clients openldap-servers openldap-devel migrationtools cyrus-sasl bison-devel openssl libtirpc libtirpc-devel libarchive
如果需要更高版本的编译工具,可以手动安装相关RPM包。
3. 创建目录结构
mkdir -p /opt/software/mysql/{mysql,data,logs,tmp}
该目录将用于存放MySQL的安装文件和数据。
4. 下载MySQL源码包
mkdir -p /opt/package/mysql_package && cd /opt/package/mysql_package
wget https://cdn.mysql.com/archives/mysql-5.7/mysql-boost-5.7.44.tar.gz
下载的包中包含Boost库,这是MySQL 5.7.44的依赖。
5. 解压源码包
tar -zxvf /opt/package/mysql_package/mysql-boost-5.7.44.tar.gz -C /opt/software/mysql
解压后,源码将位于/opt/software/mysql/mysql-5.7.44目录。
6. 配置编译环境
mkdir /opt/software/mysql/build && cd /opt/software/mysql/build
cmake3 -j10 /opt/software/mysql/mysql-5.7.44 \-DCMAKE_INSTALL_PREFIX=/opt/software/mysql/mysql \-DSYSCONFDIR=/etc \-DMYSQL_DATADIR=/opt/software/mysql/data \-DMYSQL_TCP_PORT=3306 \-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \-DDEFAULT_CHARSET=utf8mb4 \-DEXTRA_CHARSETS=all \-DDEFAULT_COLLATION=utf8_general_ci \-DWITH_SSL=system \-DENABLED_LOCAL_INFILE=1 \-DWITH_INNOBASE_STORAGE_ENGINE=1 \-DWITH_BOOST=/opt/software/mysql/mysql-5.7.44/boost \-DENABLE_DOWNLOADS=1
确保-DWITH_BOOST参数指向正确的Boost库路径。
7. 编译和安装
make && make install
编译过程可能需要较长时间,完成后MySQL将安装到/opt/software/mysql/mysql目录。
8. 创建MySQL用户和组
groupadd mysql
useradd -r -g mysql -M -s /sbin/nologin mysql
确保MySQL服务以非root用户运行。
9. 初始化MySQL
cd /opt/software/mysql/mysql/bin
./mysqld --initialize --basedir=/opt/software/mysql/mysql --datadir=/opt/software/mysql/data --user=mysql
初始化过程中会生成初始密码,记录下来以便后续使用。
10. 配置MySQL服务
将MySQL的启动脚本添加到系统服务:
cp /opt/software/mysql/mysql/support-files/mysql.server /etc/init.d/mysql
chkconfig mysql on
service mysql start
启动MySQL服务。
11. 配置环境变量(可选)
将MySQL的bin目录添加到系统环境变量:
echo 'export PATH=/opt/software/mysql/mysql/bin:$PATH' >> /etc/profile
source /etc/profile
这样可以直接在命令行中使用MySQL命令。
12. 登录并修改密码
mysql -u root -p
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
FLUSH PRIVILEGES;
使用初始密码登录后,修改为新密码。
完成以上步骤后,MySQL 5.7.44将成功安装并运行在您的Linux系统上。
以下是Linux系统编译安装MySQL 5.7.44的详细步骤:
一、准备工作
-
安装依赖项
# CentOS/RHEL sudo yum install -y cmake gcc-c++ ncurses-devel openssl-devel bison make# Ubuntu/Debian sudo apt-get install -y cmake g++ libncurses5-dev libssl-dev bison make -
创建专用用户
sudo groupadd mysql sudo useradd -r -g mysql -s /bin/false mysql -
下载源码包
wget https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.44.tar.gz tar -zxvf mysql-5.7.44.tar.gz cd mysql-5.7.44
二、配置编译参数
mkdir build
cd build
cmake .. \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DSYSCONFDIR=/etc \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_SSL=system \
-DENABLED_LOCAL_INFILE=1 \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_BOOST=../boost
三、编译与安装
make -j$(nproc) # 根据CPU核心数加速编译
sudo make install
四、初始化配置
-
设置目录权限
cd /usr/local/mysql sudo chown -R mysql:mysql . sudo mkdir -p /var/log/mysql sudo chown mysql:mysql /var/log/mysql -
初始化数据库
sudo bin/mysqld --initialize-insecure --user=mysql \ --basedir=/usr/local/mysql \ --datadir=/usr/local/mysql/data
五、配置文件
- 创建my.cnf
添加基础配置:sudo vi /etc/my.cnf[mysqld] basedir=/usr/local/mysql datadir=/usr/local/mysql/data socket=/tmp/mysql.sock log-error=/var/log/mysql/error.log
六、启动服务
-
创建systemd服务
sudo vi /etc/systemd/system/mysql.service添加以下内容:
[Unit] Description=MySQL Server After=network.target[Service] User=mysql Group=mysql ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf Restart=on-failure[Install] WantedBy=multi-user.target -
启动MySQL
sudo systemctl daemon-reload sudo systemctl start mysql sudo systemctl enable mysql
七、设置环境变量
echo 'export PATH=/usr/local/mysql/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
八、验证安装
mysqladmin -u root version # 查看版本
mysql -u root # 无密码登录(因使用--initialize-insecure)
常见问题处理
- 依赖缺失:根据CMake报错信息补充安装对应依赖
- 初始化失败:检查
/var/log/mysql/error.log日志定位问题 - 连接拒绝:确认
/tmp/mysql.sock是否存在,检查my.cnf配置路径
注意:生产环境建议使用
--initialize生成随机密码,并通过ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'修改密码。
以下是针对CentOS和Debian系统编译安装MySQL 5.7.44的详细步骤,结合多个可靠来源整理而成:
一、环境准备与依赖安装
1. CentOS系统
# 安装编译工具链及依赖库
yum install -y gcc gcc-c++ cmake make ncurses-devel openssl-devel bison libaio-devel
(需补充ncurses-compat-libs解决低版本兼容问题:yum install ncurses-compat-libs)
2. Debian系统
# 安装开发工具及依赖库
apt-get update
apt-get install -y build-essential cmake libssl-dev libncurses5-dev libaio1 libaio-dev
二、源码下载与解压
# 通用步骤(CentOS/Debian)
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.44.tar.gz
tar -zxvf mysql-5.7.44.tar.gz
cd mysql-5.7.44
三、编译配置与安装
1. 配置CMake参数
cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DSYSCONFDIR=/etc \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_SSL=system \
-DENABLED_LOCAL_INFILE=1 \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci
关键参数说明:
• CMAKE_INSTALL_PREFIX:指定安装目录
• MYSQL_DATADIR:数据库文件存储路径
• WITH_SSL:启用系统OpenSSL支持加密连接
2. 编译与安装
# 多线程编译加速(根据CPU核心数调整)
make -j$(nproc)
make install
四、系统配置与初始化
1. 创建专用用户及权限
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
chown -R mysql:mysql /usr/local/mysql
2. 配置文件my.cnf
编辑/etc/my.cnf(CentOS)或/etc/mysql/my.cnf(Debian),内容示例:
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
character-set-server=utf8mb4
log-error=/usr/local/mysql/log/mysqld.log
3. 初始化数据库
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
记录输出的临时密码(如:A temporary password is generated for root@localhost: OcB30fWNK2#g)
五、服务管理
1. CentOS系统
# 创建Systemd服务文件
cp support-files/mysql.server /etc/init.d/mysql
systemctl daemon-reload
systemctl start mysql
systemctl enable mysql
2. Debian系统
# 设置开机启动
cp support-files/mysql.server /etc/init.d/mysql
update-rc.d mysql defaults
service mysql start
六、验证与安全配置
- 登录并修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewPassword';
FLUSH PRIVILEGES;
- 远程访问配置
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'YourNewPassword' WITH GRANT OPTION;
FLUSH PRIVILEGES;
七、常见问题处理
-
依赖库缺失
• 报错libtinfo.so.5:安装ncurses-compat-libs(CentOS)或libncurses5(Debian)
• 报错libssl.so:检查OpenSSL开发包是否安装完全 -
初始化失败
• 确保datadir目录为空且权限正确(chown -R mysql:mysql /usr/local/mysql) -
防火墙设置
CentOS开放3306端口:firewall-cmd --add-port=3306/tcp --permanent firewall-cmd --reload
关键差异总结
| 项目 | CentOS | Debian |
|---|---|---|
| 依赖安装命令 | yum install | apt-get install |
| 服务管理 | Systemd (systemctl) | SysVinit (service/update-rc.d) |
| 配置文件路径 | /etc/my.cnf | /etc/mysql/my.cnf |
通过以上步骤,可在CentOS和Debian系统上完成MySQL 5.7.44的编译安装。如需性能优化,可参考官方文档调整innodb_buffer_pool_size等参数。
相关文章:
Linux编译安装mysql5.7.44 笔记250330
Linux编译安装mysql5.7.44 以下是在Linux系统上通过编译源码安装MySQL 5.7.44的详细步骤: 准备工作 1. 安装依赖库 Debian/Ubuntu # Debian/Ubuntu sudo apt update sudo apt install -y gcc g cmake make libncurses5-dev libssl-dev libboost-dev \bis…...
计算机视觉——传统数字图像处理中图像去噪原理与代码实现细节
1. 概述 在现实世界中捕获的图像常常受到噪声的影响,这些噪声可能来源于环境因素、信号不稳定、相机传感器问题、照明条件差、电损失等多种因素。为了进一步处理这些图像并对结果进行准确解释,拥有尽可能低噪声的图像至关重要。图像去噪是数字图像处理中…...
【STM32】最后一刷-江科大Flash闪存-学习笔记
FLASH简介 STM32F1系列的FLASH包含程序存储器、系统存储器和选项字节三个部分,通过闪存存储器接口(外设)可以对程序存储器和选项字节进行擦除和编程,(系统存储器用于存储原厂写入的BootLoader程序,用于串口…...
JS实现动态点图酷炫效果
实现目标 分析问题 整个图主要是用canvas实现,其中难点是将线的长度控制在一定范围内、并且透明度随长度变化。 前置知识 canvas绘制点、线、三角形、弧形 // 点ctx.moveTo(this.x, this.y);ctx.arc(this.x, this.y, this.r,0, 2 * Math.PI, false);ctx.fillStyle …...
【第十三届“泰迪杯”数据挖掘挑战赛】【2025泰迪杯】【思路篇】A题解题全流程(持续更新)
【第十三届“泰迪杯”数据挖掘挑战赛】【2025泰迪杯】A题解题全流程-思路(持续更新) 写在前面: 1、A题、C题将会持续更新,陆续更新发布文章 2、赛题交流咨询Q群:1037590285 3、全家桶依旧包含: 代码、…...
爱普生晶体单元FC2012AN在5G RedCap中的应用
在 5G 技术向物联网领域深度渗透的今天,RedCap(5G 轻量化)作为衔接中高速物联网场景的关键技术,正加速推动工业、医疗、可穿戴等领域的智能化升级。爱普生 FC2012AN 低 ESR 晶体单元凭借其突破性的小尺寸、低功耗与高稳定性设计&a…...
vue 两种路由模式
一、两种模式比较 在vue.js中,路由模式分为两种:hash 模式和 history 模式。这两种模式决定了URL的结构和浏览器历史记录的管理方式。 1. hash 模式带 #,#后面的地址变化不会引起页面的刷新。换句话说,hash模式不会将#后面的地址…...
Java-servlet(十)使用过滤器,请求调度程序和Servlet线程(附带图谱表格更好对比理解)
Java-servlet(十)使用过滤器,请求调度程序和Servlet线程 前言一、Servlet 间通信(了解即可)二、Servlet 请求处理:getAttribute 和 getParameter 的区别与应用1.getAttribute 方法2.getParameter 方法 三、…...
ue5 学习笔记 FPS游戏制作35 GameMode与GameInstance
文章目录 相似GameMode介绍声明设置生效调用 GameInstance介绍声明设置生效调用 相似 两者都用来保存公共的数据和方法 数据都在内存里,关闭程序后数据消失 GameMode 介绍 生命周期跟随关卡,关卡销毁GameMode也跟随销毁 内部可以定义属性和方法 声明…...
rocky9.4 升级SSH 9.9p2
echo "##################################开始升级Openssh##################################################################################" ##ssh变量---------------------------------------- sshnumber9.9p2 sshnumber1ssh -V 2>&1 | cut -d, -f…...
基于WebSocket的金融数据实时推送系统架构设计对接多国金融数据API
基于WebSocket的金融数据实时推送系统架构设计 ——高可用、低延迟与全球化数据支持的技术实践 一、实时数据推送的技术演进 在证券交易、外汇监控、量化策略等场景中,毫秒级延迟可能带来完全不同的业务结果。早期基于HTTP轮询的方案存在三大核心问题:…...
山洪预警秒级响应-AI本地化部署在极端降雨短临预测中的技术突破。AI智能体开发与大语言模型的本地化部署、优化技术
极端降雨预测的技术痛点与边缘破局 1. 传统预警系统的三重瓶颈 延迟致命:WRF模式在1km分辨率下3小时预报耗时>45分钟,错过山洪黄金响应期 地形干扰大:复杂地形区(如横断山脉)降水预测误差超50% 数…...
矿山自动化监测解决方案
1.行业现状 为贯彻落实《中共中央国务院关于推进安全生产领域改革发展的意见》《“十四五”矿山安全生产规划》(应急〔2022〕64号)、《国务院安委会办公室关于加强矿山安全生产工作的紧急通知》(安委办〔2021〕3号)等有关工作部署…...
pytorch学习(b站小土堆学习)
1 环境配置 参考链接 2. dir 和 help函数 dir():用于查看某一模块函数的方法 help(): 用于查看某方法的使用方法 3. dataset类实战 利用Image对象打开图片,利用os模块的地址拼接组成图片路径 当我们用方括号访问元素对象时,…...
微信小程序:解决tabbar切换时,页面不刷新问题
在微信小程序中,默认情况下切换 tabBar 页面时,页面不会重新加载或刷新(而是保持之前的状态)。如果你需要在切换 tabBar 时触发数据刷新或重新执行某些逻辑,可以通过以下方法解决: 方法 1:…...
【最新】探索CFD的未来:从OpenFOAM到深度学习,全面解析计算流体力学的顶级资源与前沿技术
计算流体力学(CFD)作为现代工程与科学研究的核心工具,正以前所未有的速度迈向智能化与多物理场耦合的新时代。本文全面梳理了在线学习CFD的顶级资源,涵盖了从传统数值模拟到深度学习驱动的物理信息模型的广泛领域,旨在为研究者、工程师和学生提供一站式参考指南。内容分为…...
算法专题一:双指针算法(下)
书接上回 5.有效三角形个数 力扣: 有效三角形的个数 在做这道题前我们先讲一个数学知识:已知 a < b < c ,此时 ab>c 可以得出 有效三角形。 所以,我们做这道题时,可以不使用暴力算法。 可以优化为先排序ÿ…...
数据库部署在服务器表不存在解决方案
MySQL 数据库表不存在错误解决方案 MySqlException (0x80004005): Table store.SysLogOperate doesnt exist 服务器用的mysql5.6 用这个表syslogoperate只是全是小写 看起来你在使用 Pomelo.EntityFrameworkCore.MySql 作为 MySQL 数据库的提供程序,并且在初始化…...
咪咕MG101_晨星MSO9380芯片_安卓5.1.1_免拆卡刷固件包
咪咕MG101_晨星MSO9380芯片_安卓5.1.1_免拆卡刷固件包(内有教程) 刷机教程简单说明: 1、把下载好的刷机包,U盘里建立一个upgrade文件夹,固件放入此文件夹里,放入U盘中,注意升级包为压缩包不要对…...
cJSON类型及type值详解
cJSON的核心结构体 cJSON的核心结构体就是一个cJSON,理解了这个结构体,基本上对cJSON的使用就有了个基本概念了。该结构体具体定义如下: typedef struct cJSON { struct cJSON*next,*prev; /* 遍历数组或对象链的前向或后向链表指…...
T11 TensorFlow入门实战——优化器对比实验
🍨 本文為🔗365天深度學習訓練營 中的學習紀錄博客🍖 原作者:K同学啊 | 接輔導、項目定制 一、前期准备 1. 导入数据 # Import the required libraries import pathlib import matplotlib.pyplot as plt import tensorflow as t…...
2023年3月全国计算机等级考试真题(二级C语言)
😀 第1题 下列叙述中错误的是 A. 向量是线性结构 B. 非空线性结构中只有一个结点没有前件 C. 非空线性结构中只有一个结点没有后件 D. 只有一个根结点和一个叶子结点的结构必定是线性结构 概念澄清 首先,我们需要明确几个关键概念…...
在MFC中使用Qt(四):使用属性表(Property Sheet)实现自动化Qt编译流程
前言 首先回顾下前面文章介绍的: 在MFC中使用Qt(一):玩腻了MFC,试试在MFC中使用Qt!(手动配置编译Qt) 在MFC中使用Qt(二):实现Qt文件的自动编译流…...
Python-八股总结
目录 1 python 垃圾处理机制2 yield3 python 多继承,两个父类有同名方法怎么办?4 python 多线程/多进程/协程4.1 多线程与GIL全局解释器锁4.2 多进程4.3 协程 5 乐观锁/悲观锁6 基本数据结构**1. 列表(List)****2. 元组࿰…...
局域网数据同步软件,局域网数据备份的方法
局域网数据备份的方法: 局域网数据备份是确保数据安全性的重要措施,以下是一些常用的局域网数据备份方法: 1.使用NAS设备备份 特点:网络附加存储(NAS)设备提供了一种便捷的备份方式。 操作:…...
ngx_http_core_init_main_conf
定义在 src\http\ngx_http_core_module.c static char * ngx_http_core_init_main_conf(ngx_conf_t *cf, void *conf) {ngx_http_core_main_conf_t *cmcf conf;ngx_conf_init_uint_value(cmcf->server_names_hash_max_size, 512);ngx_conf_init_uint_value(cmcf->serv…...
座舱与智驾“双轮驱动”,芯擎科技打造智能汽车“芯”标杆
在比亚迪、吉利、奇瑞等各大主机厂打响“全民智驾”的关键时期,以芯擎科技为代表中国芯片厂商开始“放大招”。 2025年3月27日,芯擎科技在南京举办了“擎随芯动、智融万象”生态科技日,重磅发布了“星辰一号”、“星辰一号Lite”,…...
《新能源汽车 DEEA 平台开发策略》
一、引言 在新能源汽车行业加速向智能化、电动化转型的当下,电子电气架构(EEA)成为汽车技术创新的关键领域。DEEA 平台作为应对行业变革的重要举措,其开发策略对于提升汽车产品竞争力、满足市场多样化需求意义重大。本策略围绕平台…...
R语言实现轨迹分析--traj和lcmm包体会
R语言实现轨迹分析–traj和lcmm包体会 轨迹分析是对重复测量数据的一种归纳,转化为一种分类变量,比如手术后1~7天内的疼痛评分,可以形成术后急性痛轨迹。形成的轨迹作为一个分类变量,可以用于预测疾病的预后ÿ…...
Spring Boot中对同一接口定义多个切面的示例,分别通过接口方式和注解方式实现切面排序,并对比差异
以下是Spring Boot中对同一接口定义多个切面的示例,分别通过接口方式和注解方式实现切面排序,并对比差异: 一、接口方式实现切面排序 1. 定义接口 // 服务接口 public interface MyService {void methodA();void methodB(); }// 接口实现类…...
