博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CentOS7下源码安装mysql5.6
阅读量:5065 次
发布时间:2019-06-12

本文共 9242 字,大约阅读时间需要 30 分钟。

目录

准备工作

运行环境

确认你的安装版本

下载mysql

安装mysql

准备安装环境

编译和安装

配置mysql

单实例配置

     单实例配置方法

         添加防火墙

         启动mysql

         重启mysql

多实例配置

         什么是多实例

         多实例配置方法

         创建启动文件

         初始化数据库

         配置防火墙

         启动mysql

         登陆mysql

        重启mysql

本文的运行环境如下

系统版本

CentOS7最小化安装:

Linux version 3.10.0-123.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.2 20140120 (Red Hat 4.8.2-16) (GCC) ) #1 SMP Mon Jun 30 12:09:22 UTC 2014

mysql版本

mysql-5.6.25

   

mysql分为开发版本和稳定版本(GA),开发版本拥有最新的特性,但是并不稳定,也没有完全经过测试,可能存在严重的bug,而稳定版本是经过了长时间的测试,消除了具有已知的bug,其稳定性和安全性都得到一定的保障。

对于一个mysql的版本号如:mysql-5.6.1-m1,这个版本号意味着什么呢?

  1. 对于5.6.1的解释:第一个数字5代表了文件格式,第二个数字6代表了发行级别,第三个数字1代表了版本号。更新幅度较小时,最后的数字会增加,出现了重大特性更新时,第二个数字会增加,文件格式改变时,第一个数字会增加
  2. 对于m1的解释:这是用来表明这个mysql版本的稳定性级别的,如果没有这个后缀,那么这个版本就是一个稳定版(GA);如果这个后缀是mN(例如m1,m2)格式,表明了这个版本加入了一些经过彻底测试的新特性,可以认为这是一个试生产的模具;如果这个后缀是rc,表明了这是一个候选版本,已经修改了已知的重要bug,但是没有经过足够长时间的使用来确认所有的bug已经被修复。

一旦选择了版本号,就要选择使用哪个发行版,你可以使用二进制发行版如RPM包或Zip压缩包等,但是如果你要实现如下的功能,就要选择源码安装(本文正是选择源码安装的方式):

  1. l把mysq安装到指定位置
  2. l使用mysql的一些特性(标准的二进制版本中并没有这些特性)如:TCP封包支持,调试mysql
  3. 二进制版本中默认支持所有的字符集,但你可以在编译安装源码时指定字符集,从而使得安装的mysql更小

在这里下载mysql:http://dev.mysql.com/downloads/mysql/

我选择的是这个:

下载完后需要检查文件的MD5,以确认是否从官网下载的原版本(以防被人篡改过该软件)

我从windows下载后上传到linux后,使用md5sum命令来检查:

[root@localhost src]# md5sum mysql-5.6.25.tar.gz 37664399c91021abe070faa700ecd0ed mysql-5.6.25.tar.gz

可以看出,与上图中的MD5是一致的,如果不一致,就要更换一个镜像地址来下载mysql。

首先检查是否已经安装过mysql:

[root@localhost src]# rpm -qa | grep mysql

有的话就卸载掉以前安装的mysql:

[root@localhost src]# rpm -e --nodeps xxx(xxx是搜索结果)

并删除所有的相关文件:

/etc/my.cnf

安装编译代码所需要的包

[root@localhost src]# yum -y install make gcc-c++ cmake bison-devel ncurses-devel libaio[root@localhost src]# yum install libaio libaio-devel -y[root@localhost src]# yum install perl-Data-Dumper -y[root@localhost src]# yum install net-tools -y

解压安装包并编译安装

[root@localhost src]# tar xvf mysql-5.6.25.tar.gz[root@localhost src]# cd mysql-5.6.25[root@localhost mysql-5.6.25]#cmake \-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \-DMYSQL_DATADIR=/usr/local/mysql/data \-DSYSCONFDIR=/etc \-DWITH_MYISAM_STORAGE_ENGINE=1 \-DWITH_INNOBASE_STORAGE_ENGINE=1 \-DWITH_MEMORY_STORAGE_ENGINE=1 \-DWITH_READLINE=1 \-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \-DMYSQL_TCP_PORT=3306 \-DENABLED_LOCAL_INFILE=1 \-DWITH_PARTITION_STORAGE_ENGINE=1 \-DEXTRA_CHARSETS=all \-DDEFAULT_CHARSET=utf8 \-DDEFAULT_COLLATION=utf8_general_ci

编译成功

[root@localhost src]# make && make install

至此,mysql安装完成

检查系统是否已经有mysql用户,如果没有则创建

[root@localhost mysql-5.6.25]# cat /etc/passwd | grep mysql[root@localhost mysql-5.6.25]# cat /etc/group | grep mysql

创建mysql用户(但是不能使用mysql账号登陆系统)

[root@localhost mysql-5.6.25]# groupadd mysql -s /sbin/nologin[root@localhost mysql-5.6.25]# useradd -g mysql mysql

修改权限

[root@localhost mysql-5.6.25]# chown -R mysql:mysql /usr/local/mysql

至此,mysql安装完毕

下面有两种配置方式,推荐按照多实例配置的方式

进入安装路径

[root@localhost mysql-5.6.25]# cd /usr/local/mysql

进入安装路径,执行初始化配置脚本,创建系统自带的数据库和表

[root@localhost mysql]# scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql

注:在启动MySQL服务时,会按照一定次序搜索my.cnf,先在/etc目录下找,找不到则会搜索"$basedir/my.cnf",在本例中就是 /usr/local/mysql/my.cnf,这是新版MySQL的配置文件的默认位置!

注意:在CentOS 7版操作系统的最小安装完成后,在/etc目录下会存在一个my.cnf,需要将此文件更名为其他的名字,如:/etc/my.cnf.bak,否则,该文件会干扰源码安装的MySQL的正确配置,造成无法启动。

在使用"yum update"更新系统后,需要检查下/etc目录下是否会多出一个my.cnf,如果多出,将它重命名成别的。否则,MySQL将使用这个配置文件启动,可能造成无法正常启动等问题。

[root@localhost mysql]# firewall-cmd --zone=public --add-port=3306/tcp --permanent[root@localhost mysql]# firewall-cmd --reload

添加服务,拷贝服务脚本到init.d目录,并设置开机启动

[root@localhost mysql]# cp support-files/mysql.server /etc/init.d/mysql[root@localhost mysql]# chkconfig mysql on[root@localhost mysql]# service mysql start --启动MySQL

查看mysql是否启动成功

[root@localhost mysql]# netstat -lntp | grep 3306

如果mysql没有启动成功,到目录/usr/local/mysql/data下查看错误日志

[root@localhost data]# tail localhost.localdomain.err (localhost.localdomain是主机名)

如果没有生成日志目录,则mysql安装没有成功(再重新编译安装一次)

首先杀死mysql进程

[root@localhost 3306]# pkill mysqld

然后检查是否已经杀死mysql进程

[root@localhost 3306]# netstat -lntp | grep 3306

此时shell没有任何输出,表明已经杀死了mysql进程

然后重启mysql并再次检查是否启动成功

[root@localhost 3306]# service mysql start[root@localhost 3306]# netstat -lntp | grep 3306

 

简单地说,就是在一台机器上开启多个不同的服务端口,运行多个mysql服务进程,这些服务进程通过不同socket监听不同服务端口来提供各自的服务。

这些mysql多实例公用一套mysql安装程序,使用不同的my.cnf配置文件、启动程序、数据文件,在提供服务时,多实例在逻辑上看起来是各自独立的,多个实例之间根据配置文件的设定值,来取得相关服务器的硬件资源

在本文中,通过在mysql上开启两个端口(3306和3307来配置多实例,因为下面的主从同步要使用这两个端口来模拟)

创建目录(log目录是存放mysql日志的地方)

[root@localhost mysql]# mkdir -p /data/{
3306,3307}/data[root@localhost mysql]# mkdir -p /data/{
3306,3307}/log

在/data/3306中新建my.cnf

[root@localhost mysql]# cd /data/3306[root@localhost mysql]# vi my.cnf

把如下内容拷贝到该文件中

[client]port = 3306socket = /data/3306/mysql.sock[mysqld]port=3306socket = /data/3306/mysql.sockpid-file = /data/3306/data/mysql.pidbasedir = /usr/local/mysqldatadir = /data/3306/dataserver-id=1#log-bin=mysql-bin#log-bin-index= mysql-bin.index# LOGGINGlog_error=/data/3306/log/mysql-error.logslow_query_log_file=/data/3306/log/mysql-slow.logslow_query_log=1

同样地,在/data/3307中新建my.cnf

[root@localhost mysql]# cd /data/3307[root@localhost mysql]# vi my.cnf

把如下内容拷贝到该文件中(把上面的3306改为3307,还有server-id的值)

[client]port = 3307socket = /data/3307/mysql.sock[mysqld]port=3307socket = /data/3307/mysql.sockpid-file = /data/3307/data/mysql.pidbasedir = /usr/local/mysqldatadir = /data/3307/dataserver-id=3#log-bin=mysql-bin#log-bin-index= mysql-bin.index# LOGGINGlog_error=/data/3307/log/mysql-error.logslow_query_log_file=/data/3307/log/mysql-slow.logslow_query_log=1

检查一下目录结构,看看有没有把文件放错地方

[root@localhost 3307]# tree /data/data├── 3306│ ├── data│ ├── log│ └── my.cnf└── 3307│ ├── data│ ├── log│ └── my.cnf

在/data/3306中新建mysql启动文件

[root@localhost mysql]# cd /data/3306[root@localhost mysql]# vi mysql

把如下内容拷贝到该文件中

#!/bin/shport=3306mysql_user="root"mysql_pwd=""CmdPath="/usr/local/mysql/bin"#startup functionfunction_start_mysql(){printf "Starting MySQL...\n"/bin/sh ${CmdPath}/mysqld_safe --defaults-file=/data/${port}/my.cnf 2>&1 > /dev/null &}#stop functionfunction_stop_mysql(){printf "Stoping MySQL...\n"${CmdPath}/mysqladmin -u ${mysql_user} -p${mysql_pwd} -S /data/${port}/mysql.sock shutdown}#restart functionfunction_restart_mysql(){printf "Restarting MySQL...\n"function_stop_mysqlsleep 2function_start_mysql}case $1 instart)function_start_mysql;;stop)function_stop_mysql;;restart)function_restart_mysql;;*)printf "Usage: /data/${port}/mysql {start|stop|restart}\n"esac

同理,在/data/3307中新建mysql启动文件

[root@localhost mysql]# cd /data/3307[root@localhost mysql]# vi mysql

把如下内容拷贝到该文件中

#!/bin/bashport=3307mysql_user="root"mysql_pwd=""CmdPath="/usr/local/mysql/bin"#startup functionfunction_start_mysql(){printf "Starting MySQL...\n"/bin/sh ${CmdPath}/mysqld_safe --defaults-file=/data/${port}/my.cnf 2>&1 > /dev/null &}#stop functionfunction_stop_mysql(){printf "Stoping MySQL...\n"${CmdPath}/mysqladmin -u ${mysql_user} -p${mysql_pwd} -S /data/${port}/mysql.sock shutdown}#restart functionfunction_restart_mysql(){printf "Restarting MySQL...\n"function_stop_mysqlsleep 2function_start_mysql}
case $1 instart)function_start_mysql;;stop)function_stop_mysql;;restart)function_restart_mysql;;*)printf "Usage: /data/${port}/mysql {start|stop|restart}\n"esac

修改文件拥有者和权限

[root@localhost 3307]# chown -R mysql:mysql /data[root@localhost 3307]# find /data -name mysql -exec chmod 700 {} \;

添加mysql启动路径

[root@localhost 3307]# echo 'export PATH=$PATH:/usr/local/mysql/bin' >>/etc/profile[root@localhost 3307]# source /etc/profile[root@localhost 3307]# echo $PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/mysql/bin

可以看到mysql路径已经添加到了启动路径中

[root@localhost scripts]# cd /usr/local/mysql/scripts[root@localhost scripts]# ./mysql_install_db --defaults-file=/data/3306/my.cnf --user=mysql --basedir=/usr/local/mysql --datadir=/data/3306/data[root@localhost scripts]# ./mysql_install_db --defaults-file=/data/3307/my.cnf --user=mysql --basedir=/usr/local/mysql --datadir=/data/3307/data
[root@localhost scripts]# firewall-cmd --zone=public --add-port=3306/tcp --permanentsuccess[root@localhost scripts]# firewall-cmd --zone=public --add-port=3307/tcp --permanentsuccess[root@localhost scripts]# firewall-cmd --reloadsuccess

分别启动两个端口

[root@localhost scripts]# /data/3306/mysql startStarting MySQL...[root@localhost scripts]# /data/3307/mysql startStarting MySQL...
[root@localhost scripts]# netstat -lntp | grep 330tcp6 0 0 :::3306 :::* LISTEN 33556/mysqldtcp6 0 0 :::3307 :::* LISTEN 34204/mysqld

可以看到两个端口都已经启动成功

刚安装完的mysql是没有登陆密码的

[root@localhost scripts]# mysql -S /data/3306/mysql.sock

如果不成功,检查/data/3306/log目录下的mysql-error.log日志,逐一排除错误

如果登陆成功,下面就修改登录密码(不建议在shell环境下修改密码,否则别人只要查看命令历史就能看到密码(前提是你没有情况命令历史))

mysql> update mysql.user set password=password("123456") where user='root';mysql> flush privileges;

同理,使用上面的方法修改3307的登陆密码

要把上面更改后的密码写回到mysql的启动文件中(否则每次启动、关闭、重启mysql都要输入密码)

[root@localhost 3306]# sed -i 's/mysql_pwd=\"\"/mysql_pwd=\"123456\"/g' /data/3306/mysql[root@localhost 3306]# sed -i 's/mysql_pwd=\"\"/mysql_pwd=\"123456\"/g' /data/3307/mysql

注意把上面的123456改为设置的密码

[root@localhost 3306]# /data/3306/mysql restart[root@localhost 3306]# netstat -lntp | grep 330tcp6 0 0 :::3306 :::* LISTEN 35430/mysqld

可以看到3306端口重启成功,同理可以重启3307端口

至此,mysql-5.6.25在CentOS7上安装完毕

 

tips:在我的github项目里,有一个一键安装mysql的脚本: 不过该脚本还不是很完善,同样地,有任何问题请发邮件到我的邮箱里。

转载于:https://www.cnblogs.com/kylinlin/p/4605233.html

你可能感兴趣的文章
struts2中<s:form>的应用
查看>>
QML学习笔记之一
查看>>
7NiuYun云存储UploadPicture
查看>>
Window 的引导过程
查看>>
python与 Ajax跨域请求
查看>>
App右上角数字
查看>>
从.NET中委托写法的演变谈开去(上):委托与匿名方法
查看>>
小算法
查看>>
201521123024 《java程序设计》 第12周学习总结
查看>>
贪吃蛇游戏改进
查看>>
新作《ASP.NET MVC 5框架揭秘》正式出版
查看>>
在WPF中使用Caliburn.Micro搭建MEF插件化开发框架
查看>>
IdentityServer4-用EF配置Client(一)
查看>>
asp.net core系列 35 EF保存数据(2) -- EF系列结束
查看>>
WPF程序加入3D模型
查看>>
WPF中实现多选ComboBox控件
查看>>
读构建之法第四章第十七章有感
查看>>
android访问链接时候报java.net.MalformedURLException: Protocol not found
查看>>
dwz ie10一直提示数据加载中
查看>>
Windows Phone开发(4):框架和页 转:http://blog.csdn.net/tcjiaan/article/details/7263146
查看>>