源码编译MySQL5.6.24

本文提供了一步一步的指导,教你如何在Linux环境下编译并安装MySQL 5.6.24,包括配置时间同步、解压安装、指定编译选项、创建数据存放目录、初始化配置及启动MySQL服务等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先准备编译环境

[root@DQ ~]# yum groupinstall "Server Platform Development" 
[root@DQ ~]# yum groupinstall "Development tools"

一、编译安装cmake,先同步一下时间在解压安装
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
cmake的重要特性之一是其独立于源码(out-of-source)的编译功能,即编译工作可以在另一个指定的目录中而非源码目录中进行,这可以保证源码目录不受任何一次编译的影响,因此在同一个源码树上可以进行多次不同的编译,如针对于不同平台编译。
二、编译安装mysql-5.6.24
1、使用cmake编译mysql-5.6.24
cmake指定编译选项的方式不同于make,下表列出了常用编译工具的调用语法和等效的CMake命令;“.”表示你当前的工作目录路径,一般切换到源码目录下执行。
这里写图片描述
指定安装文件的安装路径时常用的选项:“CMAKE_INSTALL_PREFIX”的值表示的是安装根目录,其他参数值的路径都是相对于根目录的,当然也可以直接使用绝对路径
这里写图片描述
默认编译的存储引擎包括:csv、myisam、myisammrg和heap。若要安装其它存储引擎,可以使用类似如下编译选项:1可以使用on代替

-DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
-DWITH_FEDERATED_STORAGE_ENGINE=1

若要明确指定不编译某存储引擎,可以使用类似如下的选项:

-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1
-DWITHOUT_FEDERATED_STORAGE_ENGINE=1
-DWITHOUT_PARTITION_STORAGE_ENGINE=1

如若要编译进其它功能,如SSL等,则可使用类似如下选项来实现编译时使用某库或不使用某库:

-DWITH_READLINE=1
-DWITH_SSL=system
-DWITH_ZLIB=system
-DWITH_LIBWRAP=0

其它常用的选项:

-DMYSQL_TCP_PORT=3306
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock
-DENABLED_LOCAL_INFILE=1
-DEXTRA_CHARSETS=all
-DDEFAULT_CHARSET=utf8
-DDEFAULT_COLLATION=utf8_general_ci
-DWITH_DEBUG=0
-DENABLE_PROFILING=1

如果想清理此前的编译所生成的对象文件和缓存信息文件,则需要使用如下命令:

make clean
rm CMakeCache.txt

安装前的系统设置:准备mysql数据存放目录

[root@DQ ~]# fdisk /dev/sda

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
创建用户和组,赋予数据存放目录权限
这里写图片描述
解压mysql编译安装
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
修改/usr/local/mysql属组为mysql
这里写图片描述
进入安装路径,执行初始化配置脚本,创建系统自带的数据库和表

[root@DQ mysql]# scripts/mysql_install_db --user=mysql --datadir=/mnt/SQLData/

注:在CentOS 6.5版操作系统的最小安装完成后,在/etc目录下会存在一个my.cnf,需要将此文件更名为其他的名字,如:/etc/my.cnf.bak,否则,该文件会干扰源码安装的MySQL的正确配置,造成无法启动。
在使用”yum update”更新系统后,需要检查下/etc目录下是否会多出一个my.cnf,如果多出,将它重命名成别的。否则,MySQL将使用这个配置文件启动,可能造成无法正常启动等问题。
拷贝配置文件和启动脚本,设置开机自动启动
这里写图片描述
这里写图片描述

[root@DQ mysql]# vim /etc/my.cnf

这里写图片描述
MySQL启动成功后,需要先设置PATH环境变量,否则不能直接调用mysql

[root@DQ mysql]# cd /etc/profile.d/
[root@DQ profile.d]# vim mysql.sh
export PATH=$PATH:/usr/local/mysql/bin

保存配置文件,运行下面的命令,让配置立即生效
这里写图片描述

这里写图片描述
Mysql默认安装完成后会生成5个用户,4个root@localhost/@hostname/@127.0.0.1
::1为ipv6 以及2个匿名用户@localhost/@hostname
匿名用户是系统不安全的因素,应当删除,并为root用户设定连接mysql的密码
这里写图片描述
这里写图片描述
Update执行结束后需要使用flush privileges重读授权表
这里写图片描述
说明: MySQL的 系统在实现上比较简单,相关的权限信息主要存储在几个被称为grant tables的系统表中,即mysql.user,mysql.db,mysql.host,mysql.table_priv,mysql_priv;
由于权限信息的数据量比较小,访问又非常频繁,所以MySQL在启动的时候就会将所有的权限信息都加载到内存中,并保存在几个特定的结构中;这就使得每次手动修改了相关权限表之后,都必须要执行flush privileges,通知MySQL重新加载权限信息;当然如果通过grant,revoke,drop user命令来修改相关权限,则不需要手动执行flush privileges命令
确定开启每表一个独立的表空间文件;
这里写图片描述
如果不想每次从本地登录mysql都要手动输入密码,可以在用户家目录下编译一个隐藏配置文件存放用户密码,即可直接使用mysql连接数据库,要确保其他人没有任何权限
这里写图片描述

[client]
user=root
password=mysql
host=localhost

MyISAM每表三个文件:
.frm: 表结构
.MYD:表数据
.MYI:表索引
这里写图片描述
InnoDB:默认所有表共享一个表空间文件;
.frm: 表结构
.ibd: 表空间(表数据和表索引)
.opt:定义默认字符集和排序规则
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值