您的位置:首页 > 数据库 > MySQL

源码编译MySQL5.6.24

2015-07-28 12:59 716 查看
首先准备编译环境

[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:定义默认字符集和排序规则

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息