linux系统之编译安装mysql

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介:

之前的博文中己经多次提到安装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包

1
# wget http://cdn.mysql.com/archives/mysql-5.6/MySQL-5.6.16-1.el6.src.rpm

wKioL1M_Fm2AmVgnAABG1J_dEgw893.jpg

2、使用rpm命令安装

注:

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

1
#rpm -ivh MySQL-5.6.16-1.el6.src.rpm

wKioL1M_GCSgXp-UAACSN3tnnUU794.jpg

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

wKiom1M_GR_ClG3dAABhKc2Olck012.jpg

进入rpmbuild目录

1
2
#cd /root/rpmbuild
#ls

wKiom1M_GjzT3aDaAABd-54RxL0915.jpg

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

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

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

wKiom1M_G7Sjvab_AAJOBKWFYmc207.jpg

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

3、使用tar命令对其解压(也可以将其拷贝到自定义目录下解压)

1
2
3
#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

wKioL1M_HTzBOf31AAHQjt4IjyA404.jpg

解压mysql-5.6.16.tar.gz

wKiom1M_HcOz1IaCAAHQLrzGmdQ748.jpg

4、安装cmake

1
#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_<ENGINE>_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用户

1
2
3
4
# groupadd -r mysql
# mkdir -p /mydata/data
# useradd -g mysql -r -d /mydata/data mysql
# chown -R mysql.mysql /mydata/data

(2)、编译

1
2
3
4
#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

⑶、对当前安装后的目录更改用户权限。

1
#chown root.mysql mysql/ -R

wKioL1M_MebDeUy2AALOjVOxlLQ545.jpg

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

1
2
#cd /usr/local/mysql
#scripts/mysql_install_db --user=mysql --datadir=/mydata/data/

wKiom1M_M6rj91iuAAQ9Rhvs2kQ676.jpg

⑸、拷贝服务脚本,赋权限并添加到启动列表中

1
2
3
#cp support-files/mysql.server /etc/rc.d/init.d/mysqld
#chmod +x /etc/rc.d/init.d/mysqld
#chkconfig --add mysqld

wKioL1M_NIqDzQbRAADmblo2EHA947.jpg

⑹、修改配置文件

说明:

在编译安装后,如果在安装目录当中有例子参数文件,将其拷贝到/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/目录下

1
#cp /usr/local/mysql/my.cnf /etc/

wKiom1M_NeKzAkHtAADO0HXksTA939.jpg

查看配置文件内容

1
#vim /etc/my.cnf

wKioL1M_NkyR9QTcAAJUa3Ha20g654.jpg

看来只能手动修改了

修改后的内容

wKiom1M_N4KTwP5xAAIDHgzX2rY114.jpg

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

⑺、启动服务

1
2
#service mysqld start
#ss -tnl |grep 3306

wKioL1M_OIzx9-aAAACty-LBGvY982.jpg

⑻、配置环境变量

1
2
# echo "export PATH=/usr/local/mysql/bin:$PATH" >/etc/profile.d/mysql.sh
# source /etc/profile.d/mysql.sh

wKioL1M_PaTCbDnTAAOX8_L1588071.jpg

⑼、导入头文件与帮助手册

1
2
3
# mkdir /usr/include/mysql
# ln -sv /usr/local/mysql/include/ /usr/include/mysql/
echo  "MANPATH /usr/loacl/mysql/man"  >>  /etc/man .config

wKioL1M_O52wERKzAAGcx6uO47k934.jpg

man 手册的配置文件

wKiom1M_PRzj93NhAAD32N-NA-I946.jpg

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

⑴、登录mysql

wKiom1M_QXjziKylAANGgEf4R7M215.jpg

⑵、删除所有匿名用户

wKioL1M_Qs-AKDhJAAIWTcMZW24130.jpg

1
2
3
mysql> select  user ,host, password  from  mysql. user  ;
mysql> drop  user  '' @ 'localhost' ;
mysql> drop  user  '' @ 'bogon' ;

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

host还可以使用通配符:

%: 任意长度的任意字符

_: 匹配任意单个字符

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

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

第一种方式:

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

第二种方式:

1
2
mysql>  UPDATE  user  SET  password  PASSWORD ( 'your_password' WHERE  user  'root' ;
mysql> FLUSH  PRIVILEGES ;

第三种方式:

1
2
# mysqladmin -uUserName -hHost password 'new_password' -p
# mysqladmin -uUserName -hHost -p flush-privileges

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

wKioL1M_RgrwKn_-AAO596XQDJY915.jpg

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

⑶、给指定的主机授权。

1
2
3
4
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 ;

wKiom1M_SFOROqNUAAODvygNJuA866.jpg

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










本文转自 jinlinger 51CTO博客,原文链接:http://blog.51cto.com/essun/1390864,如需转载请自行联系原作者
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
2月前
|
安全 关系型数据库 MySQL
如何将数据从MySQL同步到其他系统
【10月更文挑战第17天】如何将数据从MySQL同步到其他系统
258 0
|
17天前
|
关系型数据库 MySQL Linux
MySQL数据库下载安装教程(Windows&Linux)
本文档详细介绍了MySQL的安装步骤,包括安装前的准备工作、下载安装包、Windows和Linux系统下的具体安装流程,以及如何配置MySQL服务、设置环境变量、启动服务和连接数据库等关键操作。
|
1月前
|
关系型数据库 MySQL Linux
Linux环境下MySQL数据库自动定时备份实践
数据库备份是确保数据安全的重要措施。在Linux环境下,实现MySQL数据库的自动定时备份可以通过多种方式完成。本文将介绍如何使用`cron`定时任务和`mysqldump`工具来实现MySQL数据库的每日自动备份。
95 3
|
1月前
|
监控 关系型数据库 MySQL
Linux环境下MySQL数据库自动定时备份策略
在Linux环境下,MySQL数据库的自动定时备份是确保数据安全和可靠性的重要措施。通过设置定时任务,我们可以每天自动执行数据库备份,从而减少人为错误和提高数据恢复的效率。本文将详细介绍如何在Linux下实现MySQL数据库的自动定时备份。
45 3
|
1月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。通过具体案例,读者可以了解如何准备环境、下载源码、编译安装、配置服务及登录 MySQL。编译源码安装虽然复杂,但提供了更高的定制性和灵活性,适用于需要高度定制的场景。
102 3
|
1月前
|
关系型数据库 MySQL Linux
Linux系统如何设置自启动服务在MySQL数据库启动后执行?
【10月更文挑战第25天】Linux系统如何设置自启动服务在MySQL数据库启动后执行?
110 3
|
1月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
140 2
|
7月前
|
缓存 Linux 测试技术
安装【银河麒麟V10】linux系统--并挂载镜像
安装【银河麒麟V10】linux系统--并挂载镜像
2088 0
|
7月前
|
关系型数据库 MySQL Linux
卸载、下载、安装mysql(Linux系统centos7)
卸载、下载、安装mysql(Linux系统centos7)
253 0
|
2月前
|
Linux
手把手教会你安装Linux系统
手把手教会你安装Linux系统
下一篇
DataWorks