centos 源码安装mysql5.6_CentOS 7下源码安装MySQL 5.6

目录

准备工作

运行环境

确认你的安装版本

下载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

我选择的是这个:

24ddb69c4de58c39d12c5da385b8a431.png

32a6afbf02d7342166dc8d017239b919.png

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

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

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

37664399c91021abe070faa700ecd0ed mysql-5.6.25.tar.gz

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

安装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

0cf56dd3e72de1112d2ddcff5e2cb6f8.png

编译成功

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

至此,mysql安装完成

配置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

启动mysql

添加服务,拷贝服务脚本到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

首先杀死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 = 3306

socket = /data/3306/mysql.sock

[mysqld]

port=3306

socket = /data/3306/mysql.sock

pid-file = /data/3306/data/mysql.pid

basedir = /usr/local/mysql

datadir = /data/3306/data

server-id=1

#log-bin=mysql-bin

#log-bin-index= mysql-bin.index

# LOGGING

log_error=/data/3306/log/mysql-error.log

slow_query_log_file=/data/3306/log/mysql-slow.log

slow_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 = 3307

socket = /data/3307/mysql.sock

[mysqld]

port=3307

socket = /data/3307/mysql.sock

pid-file = /data/3307/data/mysql.pid

basedir = /usr/local/mysql

datadir = /data/3307/data

server-id=3

#log-bin=mysql-bin

#log-bin-index= mysql-bin.index

# LOGGING

log_error=/data/3307/log/mysql-error.log

slow_query_log_file=/data/3307/log/mysql-slow.log

slow_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/sh

port=3306

mysql_user="root"

mysql_pwd=""

CmdPath="/usr/local/mysql/bin"

#startup function

function_start_mysql()

{

printf "Starting MySQL...\n"

/bin/sh ${CmdPath}/mysqld_safe --defaults-file=/data/${port}/my.cnf 2>&1 > /dev/null &

}

#stop function

function_stop_mysql()

{

printf "Stoping MySQL...\n"

${CmdPath}/mysqladmin -u ${mysql_user} -p${mysql_pwd} -S /data/${port}/mysql.sock shutdown

}

#restart function

function_restart_mysql()

{

printf "Restarting MySQL...\n"

function_stop_mysql

sleep 2

function_start_mysql

}

case $1 in

start)

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/bash

port=3307

mysql_user="root"

mysql_pwd=""

CmdPath="/usr/local/mysql/bin"

#startup function

function_start_mysql()

{

printf "Starting MySQL...\n"

/bin/sh ${CmdPath}/mysqld_safe --defaults-file=/data/${port}/my.cnf 2>&1 > /dev/null &

}

#stop function

function_stop_mysql()

{

printf "Stoping MySQL...\n"

${CmdPath}/mysqladmin -u ${mysql_user} -p${mysql_pwd} -S /data/${port}/mysql.sock shutdown

}

#restart function

function_restart_mysql()

{

printf "Restarting MySQL...\n"

function_stop_mysql

sleep 2

function_start_mysql

}

case $1 in

start)

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 --permanent

success

[root@localhost scripts]# firewall-cmd --zone=public --add-port=3307/tcp --permanent

success

[root@localhost scripts]# firewall-cmd --reload

success

启动mysql

分别启动两个端口

[root@localhost scripts]# /data/3306/mysql start

Starting MySQL...

[root@localhost scripts]# /data/3307/mysql start

Starting MySQL...

[root@localhost scripts]# netstat -lntp | grep 330

tcp6 0 0 :::3306 :::* LISTEN 33556/mysqld

tcp6 0 0 :::3307 :::* LISTEN 34204/mysqld

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

登陆mysql

刚安装完的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改为设置的密码

重启mysql

[root@localhost 3306]# /data/3306/mysql restart

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

tcp6 0 0 :::3306 :::* LISTEN 35430/mysqld

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

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

--------------------------------------分割线 --------------------------------------

Ubuntu 14.04 LTS 安装 LNMP Nginx\PHP5 (PHP-FPM)\MySQL http://www.linuxidc.com/Linux/2014-05/102351.htm

--------------------------------------分割线 --------------------------------------

0b1331709591d260c1c78e86d0c51c18.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/427836.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

跳一跳

转载于:https://www.cnblogs.com/shanhua-fu/p/8807348.html

树莓派 无法安装mysql_树莓派安装mysql

前置,更新系统sudo apt-get updatesudo apt-get upgrade安装与配置MySQL直接安装mysql的话,默认下载的是MariaDB,两者差别不大,用法一样。如果真想下载mysql,需要换源,新版的Linux系统自带的是MariaDB&…

ABP框架使用 Swagger

在最近的一个项目中用到了 ABP框架 http://aspnetboilerplate.com/ ,第一次接触到 Swagger https://swagger.io/ 以及前后端的完全分离 在ABP官网下载下来的ABP框架结构【基于ASP.NET MVC5.x的】如图: ABP的EntityFramework 是Code First Mode的,所以在配…

JVM第五部分 高效并发

java 内存模型与线程 硬件内存模型 java内存模型 主内存vs工作内存 所有变量都在主内存(虚拟机内存的一部分),每条线程都有自己的工作内存,线程所有用到的变量都必须从主内存拷贝出来(不能直接读写主内存变量&#xff…

hadoop元数据mysql中表字段_hive mysql元数据表说明

2019独角兽企业重金招聘Python工程师标准>>>数据库相关的表DBS该表存储Hive中所有数据库的基本信息,字段如下:元数据表字段说明示例数据DB_ID数据库ID2DESC数据库描述测试库DB_LOCATION_URI数据库HDFS路径hdfs://namenode/user/hive/warehouse/…

CentOs7.2编译安装Nginx服务器

1. 安装nginx依赖 首先安装nginx的依赖 yum install gcc gcc-c openssl openssl-devel cyrus-sasl-md5 2,创建nginx用户 如果没有nginx,启动nginx时会报错 [rootlocalhost nginx-1.11.2]# /usr/local/nginx/sbin/nginx nginx: [emerg] getpwnam("ng…

2017-2018-2 20179215《网络攻防实践》第六周作业

2017-2018-2 20179215《网络攻防实践》 第六周学习总结 课本学习笔记 一、TCP/IP网络协议攻击 1.网络安全的属性:机密性 、完整性 、可用性 、真实性 、不可抵赖性 。 2.网络攻击的基本模式分为:截获(嗅探 与 监听) 、中断&#x…

mysql分布式一致性hash_分布式哈希一致性

问题分布式哈希一致性的动机是什么?相比其他有什么好处概述我们谈论的分布式哈希一致性常常使用在负载均衡,权衡一个策略的好坏,我们常常谈到扩展性和容错性。我们可以从以下两个方面来考量扩展性 :水平扩展和垂直扩展&#xff0c…

css3 - target

通过CSS3伪元素target&#xff0c;我们可以实现拉风琴 源码 1 <!DOCTYPE HTML>2 <html lang"en-US">3 4 <head>5 <meta charset"UTF-8">6 <title>垂直手风琴</title>7 <style type"text/css"…

javascript中打印对象显示[object object]_js如何打印object对象

这篇文章主要介绍了js如何打印object对象,需要的朋友可以参考下 js调试中经常会碰到输出的内容是对象而无法打印的时候,光靠alert只能打印出object标示,却不能打印出来里面的内容,甚是不方便,于是各方面整理总结了如下一个函数,能够将数组或者对象这类的结果一一打印出来…

弹弹堂sf发布网_私服冒险岛,新开私服冒险岛,心动sf冒险岛发布网,最新开的私服冒险岛应该如何快速的获取魅力呢?...

私服冒险岛,新开私服冒险岛,心动sf冒险岛发布网,最新开的私服冒险岛应该如何快速的获取魅力呢&#xff1f;不同的游戏&#xff0c;我们在操作的时候&#xff0c;最主要的一点就是想要去涨经验&#xff0c;只有通过经验的积累才可以快速的升级&#xff0c;才可以进入到更多的地图…

svm解决兵王问题_机器学习: svm

本周学习内容为SVM的基本原理和运用。参考资料&#xff1a;耳东陈&#xff1a;零基础学SVM—Support Vector Machine(一)1、什么是SVMSVM的全称是Support Vector Machine&#xff0c;即支持向量机&#xff0c;主要用于解决模式识别领域中的数据分类问题&#xff0c;属于有监督学…

Django基础11(Django中form表单)

Form介绍 之前在HTML页面中利用form表单向后端提交数据时&#xff0c;都会写一些获取用户输入的标签并且用form标签把它们包起来。 与此同时我们在好多场景下都需要对用户的输入做校验&#xff0c;比如校验用户是否输入&#xff0c;输入的长度和格式等正不正确。如果用户输入的…

mysql上k8s_通过搭建MySQL掌握k8s(Kubernetes)重要概念(上):网络与持久卷

上一篇"通过实例快速掌握k8s(Kubernetes)核心概念"讲解了k8s的核心概念&#xff0c;有了核心概念整个骨架就完整了&#xff0c;应付无状态程序已经够了&#xff0c;但还不够丰满。应用程序分成两种&#xff0c;无状态和有状态的。一般的前段和后端程序都是无状态的&a…

python简单笔记

Remarks&#xff1a;python中注意缩进&#xff08;Tab键或者4个空格&#xff09; print&#xff08;输出&#xff09; 格式&#xff1a;print&#xff08;values&#xff09; 字符串、数字、变量等都可以输出&#xff1a; 实例&#xff1a; print(1)->1 print(11)->2 a …

【Alpha阶段】第一次Scrum Meeting

PS&#xff1a;因为安装android的SDK插件出现问题&#xff0c;在eclipse和android studio中安装都不成功&#xff0c;项目不能运行&#xff0c;且一直在下载一些插件&#xff0c;安装了3天都没有成功&#xff0c;按照网上的解决办法进行解决都没有成功&#xff0c;导致项目不能…

581. Shortest Unsorted Continuous Subarray连续数组中的递增异常情况

&#xff3b;抄题&#xff3d;&#xff1a; Given an integer array, you need to find one continuous subarray that if you only sort this subarray in ascending order, then the whole array will be sorted in ascending order, too. You need to find the shortest suc…

python三阶魔方_三阶魔方自动求解及动态可视化matlab代码

三阶魔方自动求解及动态可视化matlab代码思路与步骤三阶魔方有6个面&#xff0c;每个面有333\times333小块&#xff0c;用一个6336\times3\times3633的矩阵来保存魔方的状态&#xff1b;定义412种魔方旋转行为&#xff1a;整体旋转(左右上下共4种方式AaCc)&#xff0c;侧面(6个…

Qt 常用类——QStandardItemModel

转载&#xff1a;落叶知秋时 类QabstractItemModel&#xff0c;QabstractListModel&#xff0c;QAbstractTableModel不保存数据&#xff0c;用户需要从这些类派生出子类&#xff0c;并在子类中定义某种数据结构来保存数据。 与此不同&#xff0c;类QStandardItemModel负责保存数…

ad19原理图标注_AD19中原理图的模板如何进行编辑?

我们在进行原理图设计的时候&#xff0c;有时候不想去用软件自带默认的模板&#xff0c;想要用自己设计的模板&#xff0c;就涉及到我们的模板怎么去编辑的呢&#xff1f;我们应该如何去编辑原理图自己设计的模板&#xff1f;操作步骤是怎么的呢&#xff1f;我们今天就以AD19为…