And 1.引文

由于上一篇Mysql相关文章出现的mysql安装和使用的问题,为了不浪费太多的时间和文章阅读视界,就没有将编译安装mysql写进去,这里就另起一篇编译安装步骤的。

And 2.正文

我这边准备了一台刚刚最小化安装的centos,只安装了net-tools方便使用,mysql都是没安装的,当然如果你mysql坏了也建议将mysql相关文件都清理一下再来操作。

image.png

And 2.1.安装环境

And 2.1.1.安装开发者工具组件

yum group list
## 列出组件列表
yum group install "开发工具"
或者用:yum group install "Development Tools"
## 安装开发者工具组件

如果不想手动选择安装项可以直接在最后面加参数“-y”来默认选yes

image.png

等待开发工具组件安装完成

image.png

And 2.1.2.安装必要依赖包

yum -y install gcc gcc-c++ cmake ncurses-devel autoconf bison perl perl-devel openssl openssl-devel

等待安装完成

image.png

And 2.2.开始编译安装

And 2.2.1.创建Mysql目录及用户组与用户

创建目录

mkdir /usr/local/mysql
mkdir /usr/local/mysql/data

创建用户组和用户

groupadd mysql
## 创建用户组
useradd -r -g mysql mysql
## 创建用户,-r定为系统账号,-g用为指定用户组;用户组为mysql,用户名为mysql,没有密码

image.png

And 2.2.2.下载解压boost包

boost库可以来提高编译效率

先在/usr/local创建文件夹

mkdir -p /usr/local/boost
## -p用于可递进创建,防止boost之前的文件夹不存在时无法创建
cd /usr/local/boost
wget https://nchc.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz
## 下载boost包,如果失效可以去其他源找找
tar -zxvf boost_1_77_0.tar.gz
## 解压boost包,-z操作gzip格式文件,-x解压操作,-v显示过程,-f显示名称

And 2.2.3.下载安装Mysql源码包

我们到mysql官网:MySQL

请输入图片描述

下拉找到社区版进入

请输入图片描述

请输入图片描述

image.png

image.png

进入下载页面拉到后面有一个直接下载链接,右击复制

请输入图片描述

然后到你的一个下载路径里

~注意!! 这里避个坑:我们虚拟机配置就那样,不配装8.0的mysql,这里我就慢慢磨了好久,上面和下方有些图片都可以看到有好些带mysql8,因为图片基本一样就没有修改了,重要的命令啥的都已经修正~

cd /下载/mysql/
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.42.tar.gz

请输入图片描述

下载完后解压一下

tar -zxvf mysql-5.7.42.tar.gz

请输入图片描述

再使用mv将文件夹移动到其他保存的路径上,随之进入这个文件夹里

mv /下载/mysql/mysql-5.7.42 /usr/local/mysql
cd /usr/local/mysql/mysql-5.7.42/

生成Makefile

## 这里注意一下
## -DWITH_BOOST=[你上面boost包解压后的路径]  这里使用1.15版本的boost即可,其他版本可能会太低或者太高不支持
## -DFORCE_INSOURCE_BUILD=1  这里是强制执行,可以先去掉这行,如果有提示需要再添加
## -DWITH_SYSTEMD=1  这条是来控制是否安装mysqld_safe
### 其他详细可以用  sudo cmake .. -LH  查看

cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=/usr/local/boost
## -DWITH_SYSTEMD=1 \
## -DFORCE_INSOURCE_BUILD=1

### ------------------------------------------- ###
## CMAKE参数说明: 注意: \后面不能有空格
## -DCMAKE_INSTALL_PREFIX=/usr/local/mysql //安装路径
## -DMYSQL_DATADIR=/usr/local/mysql/data //数据文件存放位置
## -DSYSCONFDIR=/etc //my.cnf路径
## -DWITH_MYISAM_STORAGE_ENGINE=1 //支持MyIASM引擎
## -DWITH_INNOBASE_STORAGE_ENGINE=1 //支持InnoDB引擎
## -DWITH_MEMORY_STORAGE_ENGINE=1 //支持Memory引擎
## -DWITH_READLINE=1 //快捷键功能(我没用过)
## -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock //连接数据库socket路径
## -DMYSQL_TCP_PORT=3306 //端口
## -DENABLED_LOCAL_INFILE=1 //允许从本地导入数据
## -DWITH_PARTITION_STORAGE_ENGINE=1 //安装支持数据库分区
## -DEXTRA_CHARSETS=all //安装所有的字符集
## -DDEFAULT_CHARSET=utf8 //默认字符
## -DDEFAULT_COLLATION=utf8_general_ci //设置默认校对规则
### ------------------------------------------- ###

在这里生成步骤上,可能会有缺少部分环境,可以根据提示内容配置一下,直到配置没有问题:

image.png

执行完毕就可以继续使用make编译安装

## ############################################# ##
## !!注意,编译过程将是漫长的,耐心等待即可!! ##
## ############################################# ##

make
## 编译

make test
## 测试

make install
## 安装

image.png

image.png

编译完成测试全都通过,然后就直接make install来安装

image.png

来检查一下mysql的文件

image.png

给里面添加一个data目录:mkdir data

再移动一下源文件:

mv ./mysql-5.7.42 /usr/local/mysql

这里再给文件权限分配一下

chown -R mysql:mysql /usr/local/mysql
chmod -R 755 /usr/local/mysql
## 上面已经提前创建好了用户组和用户,这里直接给权限就行

cd /usr/local/mysql/
chown -R mysql:mysql .
chown -R mysql:mysql /usr/local/mysql/data
## 进入mysql目录内再分配一下

这里我们先进入到mysql的bin目录

cd /usr/local/mysql/bin/

然后保证$file/mysql/data目录内容是空的,使用下面这条命令

./mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql

image.png

cd /usr/local/mysql/
chown -R mysql:mysql .
chown -R mysql:mysql /usr/local/mysql/data

进入mysql目录内再分配一下

And 2.2.4.将Mysql添加到系统服务

然后再创建一个my-default.cnf文件,有可能你自带是有的,我这里是没有

vi support-files/my-default.cnf


## 内容如下,如果有不同路径就改改
[client]
port        = 3306
socket      = /tmp/mysql.sock

[mysqld]
port        = 3306
socket      = /tmp/mysql.sock
user = mysql

basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
pid-file = /usr/local/mysql/mysql.pid

log_error = /usr/local/mysql/mysql-error.log
slow_query_log = 1
long_query_time = 1

skip-external-locking
key_buffer_size = 32M
max_allowed_packet = 1024M
table_open_cache = 128
sort_buffer_size = 768K
net_buffer_length = 8K
read_buffer_size = 768K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
thread_cache_size = 16
query_cache_size = 16M
tmp_table_size = 32M
performance_schema_max_table_instances = 1000

explicit_defaults_for_timestamp = true
#skip-networking
max_connections = 500
max_connect_errors = 100
open_files_limit = 65535

log_bin=mysql-bin
binlog_format=mixed
server_id   = 232
expire_logs_days = 10
early-plugin-load = ""

default_storage_engine = InnoDB
innodb_file_per_table = 1
innodb_buffer_pool_size = 128M
innodb_log_file_size = 32M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash

[myisamchk]
key_buffer_size = 32M
sort_buffer_size = 768K
read_buffer = 2M
write_buffer = 2M

使用cp命令,拷贝替换到etc下的my.cnf

cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf

检查一下是否成功

image.png

And 2.2.5.配置Mysql

切换到bin目录

cd /usr/local/mysql/bin/

执行mysql

./mysql -u root -p
## 登录

set password for root@localhost = password('yourpass');
## 修改密码

And 2.2.6.配置mysql命令可执行和脚本启动

#当前修改环境变量更稳定可靠的方式应该是在**/etc/profile.d文件夹内添加新的命令号,耦合性低,便于管理。例如将mysql添加进入环境变量,在该文件夹内新增mysql.sh**文件
export MYSQL_HOME=/usr/local/mysql
export PATH=$PATH:$MYSQL_HOME/bin

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
source /etc/profile
service mysql start
最后修改:2023 年 05 月 21 日
觉得文章有用,可以赞赏请我喝瓶冰露