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---eofXXXxxx
if [ ! -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 ;fi
sudo 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 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 \
-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
等参数。