编译安装mysql代码_linux系统之编译安装mysql

之前的博文中己经多次提到安装mysql,但那些基本上是通过rmp或通用二进制格式安装的。这次将介绍一下通过源代码安装mysql.

一、本机环境系统CentOS release 6.5 (Final)(最小化安装)

开发工具Development tools Server Platform Development  (己安装)

mysql版本MySQL-5.6.16-1.el6.src.rpm 下载地址

编译工具cmake-2.6(需要使用yum install cmake安装)

二、安装过程图解

1、下载包含源码的rpm包# wget http://cdn.mysql.com/archives/mysql-5.6/MySQL-5.6.16-1.el6.src.rpm

1fa184d0f254e6d1786324df345ba75d.png

2、使用rpm命令安装

注:

xxxxxxxxx.rpm   <==RPM 的格式,已经经过编译且包装完成的 rpm 包,这个可以直接使用rpm -ivh或yum install来安……xxxxx.src.rpm   <==SRPM的格式,包含未编译的源代码经rpm打包的,这个则要通过rpm -ivh 解包。再编译源代码的方式安装。#rpm -ivh MySQL-5.6.16-1.el6.src.rpm

6b902410dc74b5f4c7cd8bbca2efc1db.png

解包后的会在当前用户的家目录中生成一个rpmbuild目录。(rpmbuild:顾名思义创建rpm包,它是用来指示转换的源码编译成二进制文件的包)

73ae125a6009bb0e7611466340cb4878.png

进入rpmbuild目录#cd /root/rpmbuild

#ls

81dd04ba0518311638ada099d9360f9b.png

rpmbuild下会有SOURCES和SPECS两个目录。

--SOURCES #源包所放置的路径

--SPECS #spec文档放置的路径

05669a0b4ff3e4237f653c5a4f9ece19.png

而我们要用的就是在SOURCES下的mysql-5.6.16.tar.gz

3、使用tar命令对其解压(也可以将其拷贝到自定义目录下解压)#mv /root/rpmbuild/SOURCES/mysql-5.6.16.tar.gz /download/

#tar xf /download/mysql-5.6.16.tar.gz

#cd /download/mysql-5.6.16

21dd112bdb2dc123930ff22a9179cb21.png

解压mysql-5.6.16.tar.gz

3649d11dc4727a27ae63f563f9954bbd.png

4、安装cmake#yum install cmake -y

注:

自从mysql 5.5.8之后,MySQL的源码包编译安装都要用到cmake来进行编译了,编译的过程没有本质的区别,但是要直观很多。

cmake指定编译选项的方式不同于configure,其实现方式对比如下:

./configure           cmake .

./configure --help    cmake . -LH or ccmake .

指定安装文件的安装路径时常用的选项:

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql #指定安装目录

-DMYSQL_DATADIR=/data/mysql   #数据文件存放位置

-DSYSCONFDIR=/etc            #配置文件存放目录

默认编译的存储引擎包括:csv、myisam、myisammrg和heap。若要安装其它存储引擎,可以使用类似如下编译选项:

-DWITH_INNOBASE_STORAGE_ENGINE=1   #启用innodb存储引擎

-DWITH_ARCHIVE_STORAGE_ENGINE=1

-DWITH_BLACKHOLE_STORAGE_ENGINE=1

-DWITH_FEDERATED_STORAGE_ENGINE=1

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

-DWITHOUT__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 #指定sock文件所在的位置

-DENABLED_LOCAL_INFILE=1 #允许从本地导入数据

-DEXTRA_CHARSETS=all #安装扩展字符集

-DDEFAULT_CHARSET=utf8   #使用utf8字符

-DDEFAULT_COLLATION=utf8_general_ci #校验字符

-DWITH_DEBUG=0

-DENABLE_PROFILING=1

关于更多的参数说明请查阅mysql cmake

5、编译mysql

⑴、添加mysql用户# groupadd -r mysql

# mkdir -p /mydata/data

# useradd -g mysql -r -d /mydata/data mysql

# chown -R mysql.mysql /mydata/data

(2)、编译#cd /download/mysql-5.6.16

# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/mydata/data -DSYSCONFDIR=/etc -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DWITH_SSL=system -DWITH_ZLIB=system -DWITH_LIBWRAP=0 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci

# make

# make install

⑶、对当前安装后的目录更改用户权限。#chown root.mysql mysql/ -R

7e18d2558f508f114c21cc3a7f75b1a4.png

⑷、安装完成后,进入安装目录中,对mysql进行初始化操作#cd /usr/local/mysql

#scripts/mysql_install_db --user=mysql --datadir=/mydata/data/

4d58e095dc7b08a63812d3786d2616eb.png

⑸、拷贝服务脚本,赋权限并添加到启动列表中#cp support-files/mysql.server /etc/rc.d/init.d/mysqld

#chmod +x /etc/rc.d/init.d/mysqld

#chkconfig --add mysqld

192855e400907e3a4254e4e0d598ba48.png

⑹、修改配置文件

说明:

在编译安装后,如果在安装目录当中有例子参数文件,将其拷贝到/etc/并重命名为my.cnf,编辑其内容,修改在编译时指定数据文件所在的位置,指定的socket文件的位置即可。

还可以使用可执行程序所在的路径下/bin/mysqld --help -verbose

Default options are read from the following files in the given order:

/etc/mysql/my.cnf /etc/my.cnf ~/.my.cnf

这个表示mysql在启动时所读取配置文件的位置,如果多个配置文件中的参数互斥,那么最后一个配置文件将生效,如果多个配置文件中的参数不同,将取所有文件的并集。

将/usr/local/mysql下的my.cnf拷贝到/etc/目录下#cp /usr/local/mysql/my.cnf /etc/

7c183d52eaf87ba8c3480b3183ac166c.png

查看配置文件内容#vim /etc/my.cnf

8adffb85999b62c95e3336733130380b.png

看来只能手动修改了

修改后的内容

2366b188b21585f089a3db90408d6aa3.png

这样的设置仅能保证mysql可以正常启动而己,并不涉及更有参数设定

⑺、启动服务#service mysqld start

#ss -tnl |grep 3306

ab53dcd516bcd8f5fdc27a634656529f.png

⑻、配置环境变量# echo "export PATH=/usr/local/mysql/bin:$PATH" >/etc/profile.d/mysql.sh

# source /etc/profile.d/mysql.sh

a7c9f718984e53763f3b01d45d78d847.png

⑼、导入头文件与帮助手册# mkdir /usr/include/mysql

# ln -sv /usr/local/mysql/include/ /usr/include/mysql/

echo "MANPATH /usr/loacl/mysql/man" >> /etc/man.config

65899aaf35781a3a44acd4591f696f44.png

man 手册的配置文件

0eade23fa0c5e9940f28e0b9e9928a28.png

6、删除系统安装完成后产生的匿名用户并给root设置密码

⑴、登录mysql

b74a1bcd3b60b1c209b4c5e8de829942.png

⑵、删除所有匿名用户

db5c867af7ef0605353f06daae81551c.pngmysql>select user,host,password from mysql.user ;

mysql>drop user ''@'localhost';

mysql>drop user ''@'bogon';

用户帐号由两部分组成:username@host

host还可以使用通配符:

%: 任意长度的任意字符

_: 匹配任意单个字符

但这样并不算安全,因为root用户的密码为空,现在为root用户设置密码

⑵、给所有的root用户设定密码:

第一种方式:

mysql> SET PASSWORD FOR username@host = PASSWORD('your_passwrod');

第二种方式:

mysql> UPDATE user SET password = PASSWORD('your_password') WHERE user = 'root';

mysql> FLUSH PRIVILEGES;

第三种方式:# mysqladmin -uUserName -hHost password 'new_password' -p

# mysqladmin -uUserName -hHost -p flush-privileges

这里演示一下第三种方式。

3fc4da93e727379562fe7271f0e8b4be.png

这样授权后,仅对root@localhost用户设置了密码,其它三个用户的密码还是空的,如果没有必要,也可将其它三个用户删除,方法与删除匿名用户一样(dorp user'root'@'::1'等)

⑶、给指定的主机授权。mysql>grant all on *.* to 'root'@'192.168.1.107' identified by 'essun.org';

mysql> grant all on *.* to 'root'@'172.16.32.%' identified by 'essun.org';

mysql> flush privileges;

mysql> select user,host,password from mysql.user;

07e828a71f366a490e501404ec49fdd8.png

=======================================到此mysql编译安装完成=======================

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值