Mysql编译
1、编译环境
text-plain
硬件环境:香橙派5 aarch64架构
软件环境:Ubuntu 22.04.3 LTS
编译版本:mysql-5.7.43.tar.gz
编译目录:/data/make_test/mysql_for_make/mysql-5.7.43 #根据需要调整,本次测试使用
2、编译操作
(1)、获取源码包
text-x-sh
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.43.tar.gz
tar -zxf mysql-5.7.43.tar.gz
(2)、添加mysql用户
text-x-sh
#创建用户,-M表示不创建家目录,/bin/nologin禁止用户登录
useradd -r mysql -M -s /bin/nologin
cat /etc/passwd | grep mysql
mysql:x:1001:1001::/home/mysql:/bin/nologin
(3)、安装编译工具
text-x-sh
apt update
apt install build-essential cmake bison libncurses5-dev libssl-dev libtirpc-dev libaio-dev libedit-dev libxml2-dev libboost-dev liblz4-dev libzstd-dev
(4)、编译配置
text-x-sh
#注:目录、端口配置根据需求自行调整,以下目录仅用于演示
cmake . \
-DDOWNLOAD_BOOST=1 \ #自动下周boost库,下载较慢
-DWITH_BOOST=boost/boost_1_59_0/ \ #指定 Boost 库路径
-DCMAKE_INSTALL_PREFIX=/usr/local/src/mysql-5.7.43/ \ #MySQL 安装目录
-DSYSCONFDIR=/etc \ #配置文件目录(默认 my.cnf 存放位置)
-DMYSQL_DATADIR=/usr/local/src/mysql-5.7.43/data \ #数据库数据文件存放目录
-DMYSQL_TCP_PORT=3305 \ #MySQL 默认端口
-DDEFAULT_CHARSET=utf8 \ #设置默认字符集
-DDEFAULT_COLLATION=utf8_general_ci \ #设置默认排序规则
-DWITH_SSL=system \ #使用系统自带的 OpenSSL
-DWITH_INNOBASE_STORAGE_ENGINE=1 #启用 InnoDB 存储引擎
#boost自动下载网速较慢,建议手动下载解压,
wget https://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz
mkdir -p /data/make_test/mysql_for_make/mysql-5.7.43/boost/
tar -zxvf boost_1_59_0.tar.gz -C /data/make_test/mysql_for_make/mysql-5.7.43/boost/
(5)编译安装
text-x-sh
#编译
make
#多线程编译
make -j 线程数
#安装
make install
ll /usr/local/src/mysql-5.7.43/
total 304
drwxr-xr-x 10 root root 4096 May 7 19:42 ./
drwxr-xr-x 4 root root 4096 May 7 19:42 ../
drwxr-xr-x 2 root root 4096 May 7 19:42 bin/
drwxr-xr-x 2 root root 4096 May 7 19:42 docs/
drwxr-xr-x 3 root root 4096 May 7 19:42 include/
drwxr-xr-x 4 root root 4096 May 7 19:42 lib/
-rw-r--r-- 1 root root 260986 Jun 21 2023 LICENSE
drwxr-xr-x 4 root root 4096 May 7 19:42 man/
drwxr-xr-x 10 root root 4096 May 7 19:42 mysql-test/
-rw-r--r-- 1 root root 566 Jun 21 2023 README
-rw-r--r-- 1 root root 566 Jun 21 2023 README-test
drwxr-xr-x 28 root root 4096 May 7 19:42 share/
drwxr-xr-x 2 root root 4096 May 7 19:42 support-files/
#修改目录权限
chown mysql:mysql -R /usr/local/src/mysql-5.7.43/
(6)、配置my.cnf文件
text-x-sh
vi /etc/my.cnf
#内容如下
[client]
port = 3306
default-character-set=utf8
socket = /usr/local/src/mysql-5.7.43/mysql.sock
[mysql]
port = 3306
default-character-set=utf8
socket = /usr/local/src/mysql-5.7.43/mysql.sock
[mysqld]
user = mysql
basedir = /usr/local/src/mysql-5.7.43
datadir = /usr/local/src/mysql-5.7.43/data
port = 9080
character_set_server=utf8
# 0:区分大小写,1:不区分大小写
#lower_case_table_names=1
pid-file = /usr/local/src/mysql-5.7.43/mysqld.pid
socket = /usr/local/src/mysql-5.7.43/mysql.sock
server-id = 1
(7)、初始化
text-x-sh
./bin/mysqld --initialize --console --user=mysql --basedir=/usr/local/src/mysql-5.7.43 --datadir=/usr/local/src/mysql-5.7.43/data
2025-05-07T14:23:48.050136Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2025-05-07T14:23:48.705891Z 0 [Warning] InnoDB: New log files created, LSN=45790
2025-05-07T14:23:48.908036Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2025-05-07T14:23:48.922987Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: e47b86e6-2b4e-11f0-8212-d64730cfeef3.
2025-05-07T14:23:48.924574Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2025-05-07T14:23:51.432336Z 0 [Warning] A deprecated TLS version TLSv1 is enabled. Please use TLSv1.2 or higher.
2025-05-07T14:23:51.432357Z 0 [Warning] A deprecated TLS version TLSv1.1 is enabled. Please use TLSv1.2 or higher.
2025-05-07T14:23:51.436350Z 0 [Warning] CA certificate ca.pem is self signed.
#初始化的用户名密码
2025-05-07T14:23:52.181834Z 1 [Note] A temporary password is generated for root@localhost: a+#iPfk9UqY+
--console 选项会显示初始化过程中的详细信息。
--user=mysql 指定运行MySQL服务的用户。
--basedir 指定MySQL的安装目录。
--datadir 指定数据存储的目录。
--defaults-file 指定配置文件的路径。
(7)、登录验证
text-x-sh
#启动
cd /usr/local/src/mysql-5.7.43/support-files
./mysql.server start
#连接
mysql -u root -p -P9080
#修改root密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
FLUSH PRIVILEGES;
#允许任意主机使用密码登录root,you_root_passwd替换为自己root密码
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'you_root_passwd' WITH GRANT OPTION;