华子目录
- 下载源码包
- 上传并解压
- 安装
-
- `cmake环境检测`
- `make编译`
- [`make install安装`](#
make install安装
)
- 部署
- 复制`编译文件`到`别的主机上`
下载源码包
- 下载相应源码包
mysql5.7
编译安装需要boost库
,这里官网下载
含boost
的源码包
- https://downloads.mysql.com/archives/community/
上传并解压
bash
[root@mysql-node1 ~]# du -sh mysql-boost-5.7.44.tar.gz
51M mysql-boost-5.7.44.tar.gz
#解压
[root@mysql-node1 ~]# tar -zxf mysql-boost-5.7.44.tar.gz
[root@mysql-node1 ~]# du -sh mysql-5.7.44/
475M mysql-5.7.44/
安装
cmake环境检测
这里我们先不安装
它的依赖包
,我们在安装的过程中
,安装依赖包
安装cmake
bash
[root@mysql-node1 ~]# cd mysql-5.7.44/
[root@mysql-node1 mysql-5.7.44]# yum install cmake -y
- 使用
cmake
进行环境检测
bash
[root@mysql-node1 mysql-5.7.44]# cmake \
> -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ #指定安装路径
> -DMYSQL_DATADIR=/data/mysql \ #指定数据目录
> -DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \ #指定套接字文件
> -DWITH_INNOBASE_STORAGE_ENGINE=1 \ #指定启用INNODB存储引擎,默认用myisam
> -DWITH_EXTRA_CHARSETS=all \ #扩展字符集
> -DDEFAULT_CHARSET=utf8mb4 \ #指定默认字符集
> -DDEFAULT_COLLATION=utf8mb4_unicode_ci \ #指定默认校验字符集
> -DWITH_BOOST=/root/mysql-5.7.44/boost/boost_1_59_0/ #指定c++库依赖
- 在检测过程中,会生成一个CMakeCache.txt缓存文件,文件中记录了检测时的全部过程
- 如果检测失败,需要重新检测时,需要删除CMakeCache.txt缓存文件
- 安装
gcc-c++
bash
[root@mysql-node1 mysql-5.7.44]# yum install gcc-c++ -y
- 继续检测
bash
[root@mysql-node1 mysql-5.7.44]# rm -rf CMakeCache.txt
[root@mysql-node1 mysql-5.7.44]# cmake \
> -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ #指定安装路径
> -DMYSQL_DATADIR=/data/mysql \ #指定数据目录
> -DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \ #指定套接字文件
> -DWITH_INNOBASE_STORAGE_ENGINE=1 \ #指定启用INNODB存储引擎,默认用myisam
> -DWITH_EXTRA_CHARSETS=all \ #扩展字符集
> -DDEFAULT_CHARSET=utf8mb4 \ #指定默认字符集
> -DDEFAULT_COLLATION=utf8mb4_unicode_ci \ #指定默认校验字符集
> -DWITH_BOOST=/root/mysql-5.7.44/boost/boost_1_59_0/ #指定c++库依赖
- 安装
openssl-devel
bash
[root@mysql-node1 mysql-5.7.44]# yum install openssl-devel -y
- 继续检测
bash
[root@mysql-node1 mysql-5.7.44]# rm -rf CMakeCache.txt
[root@mysql-node1 mysql-5.7.44]# cmake \
> -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ #指定安装路径
> -DMYSQL_DATADIR=/data/mysql \ #指定数据目录
> -DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \ #指定套接字文件
> -DWITH_INNOBASE_STORAGE_ENGINE=1 \ #指定启用INNODB存储引擎,默认用myisam
> -DWITH_EXTRA_CHARSETS=all \ #扩展字符集
> -DDEFAULT_CHARSET=utf8mb4 \ #指定默认字符集
> -DDEFAULT_COLLATION=utf8mb4_unicode_ci \ #指定默认校验字符集
> -DWITH_BOOST=/root/mysql-5.7.44/boost/boost_1_59_0/ #指定c++库依赖
- 安装
ncurses-devel
bash
[root@mysql-node1 mysql-5.7.44]# yum install ncurses-devel -y
- 继续检测
bash
[root@mysql-node1 mysql-5.7.44]# rm -rf CMakeCache.txt
[root@mysql-node1 mysql-5.7.44]# cmake \
> -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ #指定安装路径
> -DMYSQL_DATADIR=/data/mysql \ #指定数据目录
> -DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \ #指定套接字文件
> -DWITH_INNOBASE_STORAGE_ENGINE=1 \ #指定启用INNODB存储引擎,默认用myisam
> -DWITH_EXTRA_CHARSETS=all \ #扩展字符集
> -DDEFAULT_CHARSET=utf8mb4 \ #指定默认字符集
> -DDEFAULT_COLLATION=utf8mb4_unicode_ci \ #指定默认校验字符集
> -DWITH_BOOST=/root/mysql-5.7.44/boost/boost_1_59_0/ #指定c++库依赖
- 安装
libtirpc-devel
bash
[root@mysql-node1 ~]# yum install libtirpc-devel-0.2.4-0.16.el7.x86_64.rpm -y
- 继续检测
bash
[root@mysql-node1 mysql-5.7.44]# rm -rf CMakeCache.txt
[root@mysql-node1 mysql-5.7.44]# cmake \
> -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ #指定安装路径
> -DMYSQL_DATADIR=/data/mysql \ #指定数据目录
> -DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \ #指定套接字文件
> -DWITH_INNOBASE_STORAGE_ENGINE=1 \ #指定启用INNODB存储引擎,默认用myisam
> -DWITH_EXTRA_CHARSETS=all \ #扩展字符集
> -DDEFAULT_CHARSET=utf8mb4 \ #指定默认字符集
> -DDEFAULT_COLLATION=utf8mb4_unicode_ci \ #指定默认校验字符集
> -DWITH_BOOST=/root/mysql-5.7.44/boost/boost_1_59_0/ #指定c++库依赖
make编译
检测完毕
后,make
开始编译
,编译时间
较长CMakeCache.txt
会记录编译过程
,所以即使编译中断
,也可以使用make
重新进行编译
,编译
会跟着之前的编译
继续编译
bash
#检测完毕后,make开始编译,编译时间较长
[root@mysql-node1 mysql-5.7.44]# make -j2
#-j2 表示有几个核心就跑几个进程
make install安装
安装时间较短
bash
[root@mysql-node1 mysql-5.7.44]# make install
部署
- 修改
配置文件
bash
[root@mysql-node1 ~]# vim /etc/my.cnf
[root@mysql-node1 ~]# cat /etc/my.cnf
[mysqld]
datadir=/data/mysql
socket=/data/mysql/mysql.sock
symbolic-links=0
创建用户
(如果不建立用户
后面初始化
的时候会报错
)
bash
#-M:不创建用户的主目录
[root@mysql-node1 ~]# useradd -s /sbin/nologin -M mysql
- 创建
datadir目录
,并修改目录
的所属者
和所属组
bash
[root@mysql-node1 ~]# mkdir -p /data/mysql/
[root@mysql-node1 ~]# chown mysql:mysql /data/ -R
- 添加
mysql命令
的环境变量
bash
#进入到安装目录
[root@mysql-node1 ~]# cd /usr/local/mysql/
[root@mysql-node1 mysql]# ls -F
bin/ include/ LICENSE mysql-test/ README-test support-files/
docs/ lib/ man/ README share/
#添加环境变量
[root@mysql-node1 mysql]# vim ~/.bash_profile
bash
[root@mysql-node1 mysql]# source ~/.bash_profile
生成启动脚本
bash
[root@mysql-node1 ~]# cd /usr/local/mysql/support-files/
[root@mysql-node1 support-files]# ls
magic mysqld_multi.server mysql-log-rotate mysql.server
[root@mysql-node1 support-files]# cp mysql.server /etc/init.d/mysqld
- 初始化
bash
[root@mysql-node1 ~]# mysqld --user mysql --initialize
bash
#初始化后,生成一系列文件
[root@mysql-node1 ~]# ls /data/mysql/
auto.cnf ib_buffer_pool mysql performance_schema sys
ca-key.pem ibdata1 mysql-node2.err private_key.pem
ca.pem ib_logfile0 mysql-node2.pid public_key.pem
client-cert.pem ib_logfile1 mysql.sock server-cert.pem
client-key.pem ibtmp1 mysql.sock.lock server-key.pem
[root@mysql-node1 ~]# ll /data/mysql/
总用量 110660
-rw-r-----. 1 mysql mysql 56 11月 30 22:15 auto.cnf
-rw-------. 1 mysql mysql 1680 11月 30 22:15 ca-key.pem
-rw-r--r--. 1 mysql mysql 1112 11月 30 22:15 ca.pem
-rw-r--r--. 1 mysql mysql 1112 11月 30 22:15 client-cert.pem
-rw-------. 1 mysql mysql 1680 11月 30 22:15 client-key.pem
-rw-r-----. 1 mysql mysql 436 11月 30 22:15 ib_buffer_pool
-rw-r-----. 1 mysql mysql 12582912 11月 30 22:15 ibdata1
-rw-r-----. 1 mysql mysql 50331648 11月 30 22:15 ib_logfile0
-rw-r-----. 1 mysql mysql 50331648 11月 30 22:15 ib_logfile1
drwxr-x---. 2 mysql mysql 4096 11月 30 22:15 mysql
drwxr-x---. 2 mysql mysql 8192 11月 30 22:15 performance_schema
-rw-------. 1 mysql mysql 1680 11月 30 22:15 private_key.pem
-rw-r--r--. 1 mysql mysql 452 11月 30 22:15 public_key.pem
-rw-r--r--. 1 mysql mysql 1112 11月 30 22:15 server-cert.pem
-rw-------. 1 mysql mysql 1680 11月 30 22:15 server-key.pem
drwxr-x---. 2 mysql mysql 8192 11月 30 22:15 sys
- 如果
忘记密码
,可以删掉文件
,重新进行初始化
bash
[root@mysql-node1 ~]# rm -rf /data/mysql/*
[root@mysql-node1 ~]# ll /data/mysql/
总用量 0
bash
[root@mysql-node1 ~]# mysqld --user mysql --initialize
启动mysql
bash
[root@mysql-node1 ~]# /etc/init.d/mysqld start
Starting MySQL.Logging to '/data/mysql/mysql-node1.err'.
SUCCESS!
- 设置
mysql
开机自启动
(企业6
系统常用)
bash
[root@mysql-node1 ~]# yum install chkconfig -y
[root@mysql-node1 ~]# chkconfig mysqld on #chkconfig命令将mysqld服务设置为在所有或指定的运行级别下自动启动
bash
[root@mysql-node1 ~]# chkconfig --list
注:该输出结果只显示 SysV 服务,并不包含
原生 systemd 服务。SysV 配置数据
可能被原生 systemd 配置覆盖。
要列出 systemd 服务,请执行 'systemctl list-unit-files'。
查看在具体 target 启用的服务请执行
'systemctl list-dependencies [target]'。
mysqld 0:关 1:关 2:开 3:开 4:开 5:开 6:关
netconsole 0:关 1:关 2:关 3:关 4:关 5:关 6:关
network 0:关 1:关 2:开 3:开 4:开 5:开 6:关
rhnsd 0:关 1:关 2:开 3:开 4:开 5:开 6:关
- 进入
mysql
bash
[root@mysql-node1 ~]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.44
Copyright (c) 2000, 2023, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
#这里需要修改MySQL的密码,否则使用不了MySQL
mysql> alter user root@localhost identified by "123456";
Query OK, 0 rows affected (0.00 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.01 sec)
mysql>
至此,编译成功
复制编译文件
到别的主机上
- 这里我们再将
node1
上编译好的文件
,复制
给node2主机
bash
#在node2上创建用户并创建数据目录
[root@mysql-node2 ~]# useradd -s /sbin/nologin -M mysql
[root@mysql-node2 ~]# mkdir -p /data/mysql
[root@mysql-node2 ~]# chown mysql:mysql /data/ -R
bash
#拷贝安装目录
[root@mysql-node1 ~]# rsync -a -r /usr/local/mysql root@172.25.254.20:/usr/local/
bash
#拷贝配置文件
[root@mysql-node1 ~]# rsync /etc/my.cnf root@172.25.254.20:/etc/
- 拷贝
启动脚本
bash
[root@mysql-node2 ~]# cd /usr/local/mysql/support-files/
[root@mysql-node2 support-files]# ls
magic mysqld_multi.server mysql-log-rotate mysql.server
[root@mysql-node2 support-files]# cp mysql.server /etc/init.d/
- 设置
环境变量
bash
[root@mysql-node2 support-files]# vim ~/.bash_profile
bash
[root@mysql-node2 support-files]# source ~/.bash_profile
初始化
bash
[root@mysql-node2 ~]# mysqld --user mysql --initialize
bash
[root@mysql-node2 ~]# ls /data/mysql/
auto.cnf ib_buffer_pool mysql performance_schema sys
ca-key.pem ibdata1 mysql-node2.err private_key.pem
ca.pem ib_logfile0 mysql-node2.pid public_key.pem
client-cert.pem ib_logfile1 mysql.sock server-cert.pem
client-key.pem ibtmp1 mysql.sock.lock server-key.pem
- 启动
mysql
bash
[root@mysql-node2 ~]# /etc/init.d/mysql.server start
Starting MySQL.Logging to '/data/mysql/mysql-node2.err'.
SUCCESS!
- 设置
开机自启动
bash
[root@mysql-node2 ~]# chkconfig mysql.server on
[root@mysql-node2 ~]# chkconfig --list
注:该输出结果只显示 SysV 服务,并不包含
原生 systemd 服务。SysV 配置数据
可能被原生 systemd 配置覆盖。
要列出 systemd 服务,请执行 'systemctl list-unit-files'。
查看在具体 target 启用的服务请执行
'systemctl list-dependencies [target]'。
mysql.server 0:关 1:关 2:开 3:开 4:开 5:开 6:关
netconsole 0:关 1:关 2:关 3:关 4:关 5:关 6:关
network 0:关 1:关 2:开 3:开 4:开 5:开 6:关
rhnsd 0:关 1:关 2:开 3:开 4:开 5:开 6:关
- 进入
mysql
bash
[root@mysql-node2 ~]# mysql -uroot -p
Enter password:
mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
#需要修改完密码才能使用
mysql> alter user root@localhost identified by "123456";
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+