源码安装mysql

源码安装mysql

1、服务器配置
Linux版本Mysql 版本
Centos 7mysql5.6.28
准备工作

检查环境是否是干净的,没有安装过mysql,如果有要卸载干净,还有要注意的一点是centos7系统默认携带mariadb的包,这个也是要卸载的

## 检查是否有mariadb的安装包
root@17:45:16~ # rpm -qa | grep -i mysql
root@17:54:07~ # rpm -qa | grep -i mariadb
mariadb-libs-5.5.60-1.el7_5.x86_64  

## 卸载上面查找到的mariadb的安装包
root@17:54:14~ # rpm -e mariadb-libs-5.5.60-1.el7_5.x86_64
错误:依赖检测失败:
	libmysqlclient.so.18()(64bit)(已安裝) postfix-2:2.10.1-7.el7.x86_64 需要
	libmysqlclient.so.18(libmysqlclient_18)(64bit)(已安裝) postfix-2:2.10.1-7.el7.x86_64 需要
	
## 上面卸载失败 我们可以尝试下面的命令
root@17:55:42~ # yum  -y remove mariadb-libs-5.5.60-1.el7_5.x86_64
#可以再一次使用检查命令是否还有mysql或者mariadb的包

##环境准备 检查是否有boost的依赖 mysql的默认包
rpm -qa | grep boost
rpm -qa | grep mysql
## 如果存在则删除  使用yum的卸载方式 也会将依赖都卸载安静
yum -y remove boost-*
yum -y remove mysql

## 创建MySQL的用户和用户组
groupadd mysql
usradd -r -g mysql mysql (可以使用id mysql 查看)

## 参数说明
-r 指定用户为系统该用户
-g 指定用户的所属组
2 、安装
##  安装依赖工具
yum -y install make gcc-c++ cmake bison-devel ncurses-devel libaio
yum -y install libaio libaio-devel 
yum -y install perl-Data-Dumper 
yum -y install net-tools 

## 创建存放MySQL的目录
mkdir -p /usr/local/mysql
## 下载MySQL5.6的源码包  这个下载比较慢 
cd /usr/local/mysql/
wget http://wget dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.28.tar.gz
##这里我提供一个地址
https://www.jianguoyun.com/p/DSVCeAMQ2d6kCBjAwa0D

## 检查一下mysql文件的MD5值,查看是否是官方下载的原版本
md5sum mysql-5.6.28.tar.gz 
4bc8fde6d04fb7104df1ba8a4025b156  mysql-5.6.28.tar.gz

## 开始编译安装
cd /usr/local/mysql
tar -zxf mysql-5.6.28.tar.gz  ##解压缩包
cd mysql-5.6.28 
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

echo $?  ## 执行这条命令查看是否执行成功
0

make && make install ##  时间可能会很长 耐性等待

## 安装成功查看 ll /usr/local/mysql/  如下显示是安装成功的
root@18:06:18/usr/local/mysql # ll
总用量 160
drwxr-xr-x.  2 mysql mysql   4096 7月  20 17:50 bin
-rw-r--r--.  1 mysql mysql  17987 7月  20 17:32 COPYING
drwxr-xr-x.  5 mysql mysql    110 7月  20 17:52 data
drwxr-xr-x.  2 mysql mysql     55 7月  20 17:50 docs
drwxr-xr-x.  3 mysql mysql   4096 7月  20 17:50 include
-rw-r--r--.  1 mysql mysql 105684 7月  20 17:32 INSTALL-BINARY
drwxr-xr-x.  3 mysql mysql   4096 7月  20 17:50 lib
drwxr-xr-x.  4 mysql mysql     30 7月  20 17:50 man
-rw-r--r--.  1 root  root     943 7月  20 17:52 my.cnf
drwxr-xr-x. 35 mysql mysql   4096 7月  20 17:50 mysql-5.6.28
drwxr-xr-x. 10 mysql mysql   4096 7月  20 17:50 mysql-test
-rw-r--r--.  1 mysql mysql   2496 7月  20 17:32 README
drwxr-xr-x.  2 mysql mysql     30 7月  20 17:50 scripts
drwxr-xr-x. 28 mysql mysql   4096 7月  20 17:50 share
drwxr-xr-x.  4 mysql mysql   4096 7月  20 17:50 sql-bench
drwxr-xr-x.  2 mysql mysql    136 7月  20 17:50 support-files

##如果没有安装成功,可以把/usr/local/mysql 删除,重新上传安装包,再编译安装一次
## 查看是否有mysql账户
less /etc/passwd /etc/group | grep mysql
## 如果没有则创建相应的用户以及用户组
groupadd mysql
usradd -r -g mysql mysql

## 参数说明
-r 指定用户为系统该用户
-g 指定用户的所属组

## 修改权限
chown -R mysql:mysql /usr/lcoal/mysql

## 如果这一步没有错误的话,我们的数据库是已经安装完毕的

编译命令的解释
命令参数解释
DCMAKE_INSTALL_PREFIX/usr/local/mysql安装目录
DMYSQL_DATADIR/usr/local/mysql/data数据库位置
DSYSCONFDIR/etc配置文件位置
DWITH_MYISAM_STORAGE_ENGINE1安装myisam存储引擎
DWITH_INNOBASE_STORAGE_ENGINE1安装innodb存储引擎
DWITH_MEMORY_STORAGE_ENGINE1安装memory存储引擎
DWITH_READLINE1快捷键功能
DMYSQL_UNIX_ADDR/var/lib/mysql/mysql.sockUnix socket 文件路径
DMYSQL_TCP_PORT3306MySQL监听端口
DENABLED_LOCAL_INFILE1许从本地导入数据
DWITH_PARTITION_STORAGE_ENGINE1安装数据库分区
DEXTRA_CHARSETSall安装所有扩展字符集
DDEFAULT_CHARSETutf8使用utf8字符
DDEFAULT_COLLATIONutf8_general_ci校验字符
3、修改配置
## 配置mysql的永久环境变量
vim /etc/profile
## 添加以下内容
PATH=$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/mysql/bin
export PATH

## 使添加的环境变量永久生效
source /etc/profile

##进入安装mysql的路径,执行初始化的配置脚本,创建系统自带的数据库和表
cd /usr/local/mysql/mysq-5.6.28
./scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql

## 可能会报一个-bash: ./scripts/mysql_install_db: 权限不够
chmod +x ./scripts/mysql_install_db

## 还是在当前目录下 /usr/local/mysql/mysql-5.6.28 执行上一条目录
./scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql

echo $?   ## 查看是否执行成功
0   

注意:

在启动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将使用这个配置文件启动,可能造成无法正常启动等问题。

## 重命名
mv my.cnf my.cnf.back
4、启动MySQL服务
## 添加服务,复制服务脚本到init.d目录下,并设置开机自启动
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql

## mysql 开机自启动
chkconfig mysql on

## 启动、关闭、重启命令
systemctl start mysql  ##启动
systemctl stop mysql   ##关闭
systemctl restart mysql   ##重启

## 可以查看端口   如下所示 启动成功
ss -ntlp | grep 3306
LISTEN     0      80          :::3306                    :::*                   users:(("mysqld",pid=58649,fd=10))
5、设置密码
## 默认是没有密码的
root@18:28:52~ # mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.6.28 Source distribution

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

## 设置密码
> set password for 'root'@'localhost' = PASSWORD('123456');

## 再一次登录的时候就要输入密码
root@18:33:02~ # mysql -uroot -p
Enter password: 123456  ## 在这里输入密码就ok了
6、忘记密码
## 首先关闭 mysql的服务
systemctl stop mysql

## 添加一些内容
vim /usr/local/mysql/my.cnf

skip-grant-tables

## 开启mysql服务
systemctl start mysql

## 发现不需要输入密码就可登录了
root@18:53:39~ # mysql -uroot

mysql> update mysql.user set password=PASSWORD('1234') where user='root';
Query OK, 4 rows affected (0.00 sec)
Rows matched: 4  Changed: 4  Warnings: 0
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

## 我们再把刚刚添加的内容删掉 重启服务  使用我们新的密码就可以登陆上了
systemctl restart mysql


7.脚本安装
#!/bin/bash
echo "--------检查环境----------"
mariadb_name=`rpm -qa | grep -i mariadb`
mysql_name=`rpm -qa | grep -i mysql`

rpm -qa | grep -i mysql
if [ $? -eq 0 ];then
	yum -y remove ${mysql_name}
else
	echo "没有这个安装包"
fi

rpm -qa | grep -i mariadb
if [ $? -eq 0 ];then 
	yum -y remove ${mariadb_name}
else
	echo "没有这个安装包"
fi


echo "--------创建用户以及用户组-------"
id mysql
if  [ $? -eq 0 ];then
	echo "已经创建好了"
else
	groupadd mysql && useradd -r -g mysql mysql
fi

echo "------安装依赖--------"
while true
do
	yum -y install make gcc-c++ cmake bison-devel ncurses-devel libaio libaio-devel perl-Data-Dumper net-tools 
	if [ $? -eq 0 ];then
		echo "ok"
		break
	fi
done
echo "---------创建目录----------"
mysql_dir=/usr/local/mysql
if [ -e $mysql_dir ];then
	echo "已存在"	
else
	mkdir -p /usr/local/mysql
fi

echo "------------下载安装包------------"
while true
do
	if [ -e /usr/local/mysql/mysql-5.6.28 ];then
		echo "安装包已经存在了"
	else
		cd /usr/local/mysql && wget http://wget dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.28.tar.gz  && tar -zxf mysql-5.6.28.tar.gz
		if [ $? -eq 0 ];then
			echo "ok"
			break
		fi
	fi
	break
done

:<<eof
echo "-------编译并安装"
cd /usr/local/mysql/mysql-5.6.28 && 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 
cd /usr/local/mysql/mysql-5.6.28/ && make 
cd /usr/local/mysql/mysql-5.6.28/ && make install 
eof

echo "-----------修改权限---------"
chown -R mysql:mysql /usr/local/mysql

echo "-----------设置全局环境变量---------"
echo -e  "PATH=$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/mysql/bin \nexport PATH" >> /etc/profile
source /etc/profile

echo "进入安装mysql的路径,执行初始化的配置脚本,创建系统自带的数据库和表"
chmod +x /usr/local/mysql/mysql-5.6.28/scripts/mysql_install_db
cd /usr/local/mysql/mysq-5.6.28 && ./scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql

mv /etc/my.cnf /etc/my.cnf.back

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值