一.MySQL的安装方式以及版本选择
1)安装方式
1、通过二进制的方式安装
二进制安装方式中,包括rpm版本以及glibc版本。
rpm版本就是在特定linux版本下编译的,如果你的linux版本匹配,就可以安装;
glibc版本是基于特定的glibc版本编译的;
glibc是GNU发布的libc库,即c运行库。glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc。
优点:安装和维护都比较方便,不需要编译。
缺点:可定制性差,可移植性差,不灵活
2、通过源代码编译的安装(mysql-xx.tar.gz)
优点:可定制性强(安装可以根据用户的需求,只安装所需要的功能)
缺点:安装复杂,所需要的时间比二进制的安装要长得多
3、构建自己的二进制rpm包
优点:根据需求定制成自己的rpm包,方便安装维护。
缺点:前期构建耗时较长,相对比较复杂
2)MySQL版本选择
5.6:GA 6-12个月 小版本是偶数版
5.7:GA 6-12个月 小版本是偶数版 选择5.7.17版本以上的 (MGR:MySQL自带的高可用功能)
mysql官方下载地址:https://www.mysql.com/
源码包下载操作如下:
二进制包下载操作如下:
之前操作都一样,只有最后一步选择有区别。
二.MySQL编译安装
编译安装步骤如下:
1.解压 tar
2.生成 ./configure cmake gmake
3.编译 make
4.安装 make install
2.1编译安装mysql5.6.40
1)下载epel源
[root@db01 ~]# wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
2)安装依赖
[root@db01 ~]# yum install -y ncurses-devel libaio-devel autoconf cmake gcc gcc-c++ glibc
3)下载MySQL源码包并解压
[root@db03 ~]# wget https://downloads.mysql.com/archives/get/file/mysql-5.6.40.tar.gz
[root@db01 ~]# tar xf mysql-5.6.40.tar.gz
4)创建安装数据库的安装目录
[root@db01 ~]# mkdir /application
5)生成编译文件
[root@db01 ~]# cd mysql-5.6.40/
[root@db02 mysql-5.6.40]#
#设定mysql的安装目录
cmake . -DCMAKE_INSTALL_PREFIX=/application/mysql-5.6.40 \
#设定mysql数据存放位置
-DMYSQL_DATADIR=/application/mysql-5.6.40/data \
#设定mysql.socket路径
-DMYSQL_UNIX_ADDR=/application/mysql-5.6.40/tmp/mysql.sock \
#设定默认utf8字符集
-DDEFAULT_CHARSET=utf8 \
#设定默认排序规则
-DDEFAULT_COLLATION=utf8_general_ci \
#启用额外的字符集
-DWITH_EXTRA_CHARSETS=all \
#支持的存储引擎
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
#禁用的存储引擎
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
#启用zlib库支持(zib、gzib相关)
-DWITH_ZLIB=bundled \
#启用SSL库支持(安全套接层)
-DWITH_SSL=bundled \
#启用本地数据导入支持
-DENABLED_LOCAL_INFILE=1 \
#编译嵌入式服务器支持
-DWITH_EMBEDDED_SERVER=1 \
# mysql5.6支持了google的c++mock框架了,允许下载,否则会安装报错。
-DENABLE_DOWNLOADS=1 \
#禁用debug(默认为禁用)
-DWITH_DEBUG=0
6)编译并安装
[root@db01 mysql-5.6.40]# make && make install
mysql的重要目录
[root@db01 application]# ll mysql-5.6.40/
# mysql所有相关命令
drwxr-xr-x 2 root root 4096 2019-11-25 12:19 bin
# 数据存放目录
drwxr-xr-x 3 root root 18 2019-11-25 12:18 data
# mysql初始化命令目录
drwxr-xr-x 2 root root 30 2019-11-25 12:19 scripts
# 额外的文件
drwxr-xr-x 2 root root 136 2019-11-25 12:19 support-files
7)创建mysql用户
[root@db01 mysql-5.6.40]# useradd mysql -s /sbin/nologin -M
8)做软链接
[root@db01 mysql-5.6.40]# ln -s /application/mysql-5.6.40 /application/mysql
9)进入其他文件目录
[root@db01 mysql-5.6.40]# cd /application/mysql/support-files
10)拷贝MySQL配置文件
[root@db01 support-files]# cp my-default.cnf /etc/my.cnf
cp: overwrite ‘/etc/my.cnf’? y
11)进入初始化目录
[root@db01 support-files]# cd /application/mysql/scripts
12)初始化MySQL
[root@db01 scripts]# ./mysql_install_db --user=mysql --basedir=/application/mysql --datadir=/application/mysql/data
13)创建socket文件所在目录
[root@db01 scripts]# mkdir /application/mysql-5.6.40/tmp
14)授权MySQL服务目录
[root@db01 scripts]# chown -R mysql.mysql /application/mysql*
15)添加环境变量
[root@db01 scripts]# vim /etc/profile.d/mysql.sh
export PATH="/application/mysql/bin:$PATH" #加载环境变量是为了方便在命令行界面使用mysql命令
16)加载环境变量
[root@db01 mysql-5.6.40]# chmod +x /etc/init.d/mysqld
[root@db01 scripts]# source /etc/profile
18)准备启动MySQL脚本
注意:两种脚本方式不能交替使用,即用sys-v方式启动的数据库不能通过systemctl管理,反之亦然。
Cent OS 6(sys-v)
管理命令:service mysqld start|stop|status|restart 或/etc/init.d/mysqld start|stop|status|restart
#拷贝启动脚本
[root@db01 support-files]# cp mysql.server /etc/init.d/mysqld
#使用如下两种方式中的一种即可启动mysql
[root@db01 ~]# /etc/init.d/mysqld start
Starting MySQL. SUCCESS!
[root@db01 ~]# service mysqld start
Starting MySQL. SUCCESS!
[root@db01 ~]# /etc/init.d/mysqld stop
Shutting down MySQL.. SUCCESS!
[root@db01 ~]# service mysqld stop
Shutting down MySQL.. SUCCESS!
[root@db01 ~]# ps -ef|grep mysql
root 41402 1 0 17:43 pts/0 00:00:00 /bin/sh /application/mysql-5.6.40/bin/m--datadir=/application/mysql-5.6.40/data --pid-file=/application/mysql-5.6.40/data/db01.p
mysql 41511 41402 6 17:43 pts/0 00:00:00 /application/mysql-5.6.40/bin/mysqld --plication/mysql-5.6.40 --datadir=/application/mysql-5.6.40/data --plugin-dir=/application40/lib/plugin --user=mysql --log-error=db01.err --pid-file=/application/mysql-5.6.40/data
root 41535 40755 0 17:43 pts/0 00:00:00 grep --color=auto mysql
[root@db01 ~]# ss -lntp|grep 3306
LISTEN 0 80 :::3306 :::* users:(("=41511,fd=10))
Centos7 (systemd)
管理命令:systemctl start|stop|status|restart mysqld
[root@db01 ~]# vim /usr/lib/systemd/system/mysqld.service
加入
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=https://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/application/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000
保存退出
[root@db01 /application/mysql/scripts]# /etc/init.d/mysqld stop
Shutting down MySQL.. SUCCESS!
[root@db01 /application/mysql/scripts]# systemctl daemon-reload mysqld
[root@db01 /application/mysql/scripts]# systemctl start mysqld
[root@db01 /application/mysql/scripts]# ps -ef|grep mysql
mysql 40713 1 2 14:41 ? 00:00:00 /application/mysql/bin/mysqld --defaults-file=/etc/my.cnf
root 40736 8976 0 14:41 pts/0 00:00:00 grep --color=auto mysql
[root@db01 ~]# ss -lntp|grep 3306
LISTEN 0 80 :::3306 :::* users:(("mysqld",pid=41511,fd=10))
2.2编译安装mysql5.7.20
MySQL5.6与MySQL5.7安装的区别
1、cmake的时候加入了bostorg #官方下载地址:https://www.boost.org/
2、初始化时 使用mysqld --initialize 替代mysql_install_db,其它参数没有变化:--user= --basedir= --datadir=
3、--initialize会生成一个临时密码
4、还可以用另外一个参数--initialize-insecure(取消生成临时密码)
1)安装依赖
[root@db05 ~]# yum install -y gcc gcc-c++ automake autoconf
[root@db05 ~]# yum install make cmake bison-devel ncurses-devel libaio-devel
2)下载安装包
[root@db05 ~]# wget https://downloads.mysql.com/archives/get/file/mysql-boost-5.7.20.tar.gz
[root@db05 ~]# wget wget httpss://dl.bintray.com/boostorg/release/1.65.1/source/boost_1_59_0.tar.gz
3)解压
[root@db05 ~]# tar xf boost_1_59_0.tar.gz -C /usr/local/
[root@db05 ~]# tar xf mysql-boost-5.7.20.tar.gz
4)编译
#创建MySQL的安装目录
[root@db05 ~/mysql-5.7.20]# mkdir /application
#生成编译文件
[root@db05 ~/mysql-5.7.20]# cmake . -DCMAKE_INSTALL_PREFIX=/application/mysql-5.7.20 \
> -DMYSQL_DATADIR=/application/mysql-5.7.20/data \
> -DMYSQL_UNIX_ADDR=/application/mysql-5.7.20/tmp/mysql.sock \
> -DDOWNLOAD_BOOST=1 \ #如果不是引用已经下载好boost,这里的值修改为0。并且删除下面一行的引用的路径。这里引用是为了方便安装,不然时间会很长。
> -DWITH_BOOST=/usr/local/boost_1_59_0 \
> -DDEFAULT_CHARSET=utf8 \
> -DDEFAULT_COLLATION=utf8_general_ci \
> -DWITH_EXTRA_CHARSETS=all \
> -DWITH_INNOBASE_STORAGE_ENGINE=1 \
> -DWITH_FEDERATED_STORAGE_ENGINE=1 \
> -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
> -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
> -DWITH_ZLIB=bundled \
> -DWITH_SSL=bundled \
> -DENABLED_LOCAL_INFILE=1 \
> -DWITH_EMBEDDED_SERVER=1 \
> -DENABLE_DOWNLOADS=1 \
> -DWITH_DEBUG=0
#编译安装
[root@db05 ~/mysql-5.7.20]# make && make install
5)切换到安装目录并设置软链接
[root@db05 ~/mysql-5.7.20]# cd /application/mysql-5.7.20/
[root@db05 /application/mysql-5.7.20]# ln -s /application/mysql-5.7.20 /application/mysql
6)拷贝启动脚本
[root@db05 /application/mysql-5.7.20]# cd support-files/
[root@db05 /application/mysql-5.7.20/support-files]# cp mysql.server /etc/init.d/mysqld
7)创建用户
[root@db05 /application/mysql-5.7.20/support-files]# useradd mysql -s /sbin/nolgin -M
8)配置/etc/my.cnf
[root@db05 /application/mysql-5.7.20]# vim /etc/my.cnf
[mysqld]
port = 3306
datadir = /application/mysql/data
basedir = /application/mysql
socket = /application/mysql/data/mysql.sock
log_error = /application/mysql/data/error.log
pid_file = /application/mysql/data/mysql.pid
[client]
socket = /application/mysql/data/mysql.sock
9)初始化
[root@db05 /application/mysql-5.7.20]# cd bin/
[root@db05 /application/mysql-5.7.20/bin]# ./mysqld --initialize --user=mysql --basedir=/application/mysal --datadir=/application/mysql/data
10)为目录授权
#创建mysql.sock文件的保存目录
[root@db05 /application/mysql-5.7.20/bin]# mkdir /application/mysql/tmp
[root@db05 /application/mysql-5.7.20/bin]# chown -R mysql.mysql /application/mysql*
11)启动MySQL(其他启动方式与mysql5.6相同)
[root@db05 /application/mysql-5.7.20/bin]# /etc/init.d/mysqld start
Starting MySQL. SUCCESS!
[root@db05 /application/mysql-5.7.20/bin]# ss -lntp
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:22 *:* users:(("sshd",pid=7130,fd=3))
LISTEN 0 100 127.0.0.1:25 *:* users:(("master",pid=7276,fd=13))
LISTEN 0 80 :::3306 :::* users:(("mysqld",pid=44393,fd=16))
LISTEN 0 128 :::22 :::* users:(("sshd",pid=7130,fd=4))
LISTEN 0 100 ::1:25 :::* users:(("master",pid=7276,fd=14))
11)获取初始生成的密码
12)添加环境变量
[root@db05 /application/mysql-5.7.20/data]# vim /etc/profile.d/mysql.sh
export PATH="/application/mysql/bin:$PATH"
[root@db05 /application/mysql-5.7.20/data]# source /etc/profile
三.MySQL二进制安装
3.1二进制安装mysql5.6.40
0)安装依赖
[root@db02 ~]# yum install -y cmake gcc gcc-c++ glibc ncurses-devel autoconf libaio-devel
1)下载mysql二进制包并解压
[root@db02 ~]# wget https://downloads.mysql.com/archives/get/file/mysql-5.6.40-linux-glibc2.12-x86_64.tar.gz
[root@db02 ~]# tar xf mysql-5.6.40-linux-glibc2.12-x86_64.tar.gz
2)创建MySQL安装目录
[root@db02 ~]# mkdir /application
3)移动MySQL程序到安装目录下
[root@db02 ~]# mv mysql-5.6.40-linux-glibc2.12-x86_64 /application/mysql-5.6.40
4)做软链接
[root@db02 ~]# ln -s /application/mysql-5.6.40 /application/mysql
5)进入其文件目录
[root@db02 ~]# cd /application/mysql/support-files
6)拷贝配置文件
[root@db02 support-files]# cp my-default.cnf /etc/my.cnf
cp: overwrite ‘/etc/my.cnf’? y
7)进入初始化目录
[root@db02 support-files]# cd ../scripts/
8)创建mysql用户
[root@db02 scripts]# useradd mysql -s /sbin/nologin -M
9)初始化
[root@db02 scripts]# ./mysql_install_db --user=mysql --basedir=/application/mysql --datadir=/application/mysql/data
10)添加环境变量
[root@db02 scripts]# vim /etc/profile.d/mysql.sh
export PATH="/application/mysql/bin:$PATH"
11)准备启动MySQL的脚本
说明:这里除了配置systemd管理启动启动需要额外配置一下/etc/my.cnf默认的安装目录和数据保存目录,以及修改启动脚本中的默认路径,其它的与编译没有区别。这里不再过多论述。
Cent OS 6(sys-v)
管理命令:service mysqld start|stop|status|restart 或/etc/init.d/mysqld start|stop|status|restart
#这里的安装目录不是使用默认的/usr/local/所以需要修改一下目录。
[root@db02 scripts]# sed -i 's#/usr/local#/application#g' /etc/init.d/mysqld /application/mysql/bin/mysqld_safe
#启动数据库
[root@db02 scripts]# /etc/init.d/mysqld start
Centos7 (systemd)
管理命令:systemctl start|stop|status|restart mysqld
[root@db02 /application]# vim /etc/my.cnf 在[mysqld]下写入如下安数据库的安装目录以及数据保存目录
basedir=/application/mysql
datadir=/application/mysql/data
保存退出
[root@db02 scripts]# systemctl start mysqld
3.2二进制安装mysql5.7.20
1)安装依赖
[root@db06 ~]# yum install -y gcc gcc-c++ automake autoconf
[root@db06 ~]# yum install make cmake bison-devel ncurses-devel libaio-devel
2)下载二进制包
[root@db06 ~]# wget https://downloads.mysql.com/archives/get/file/mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz
3)解压
[root@db06 ~]# tar xf mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz
4)移动MySQL的程序的安装目录并设置软链接
[root@db06 ~]# mv mysql-5.7.20-linux-glibc2.12-x86_64 /application/mysql-5.7.20
[root@db06 ~]# ln -s /application/mysql-5.7.20 /application/mysql
5)拷贝启动脚本
[root@db06 /application/mysql/support-files]# cp mysql.server /etc/init.d/mysqld
6)这里的安装目录不是使用默认的/usr/local/所以需要修改一下目录。
[root@db06 /application/mysql/support-files]# sed -i 's#/usr/local#/application#g' /etc/init.d/mysqld /application/mysql/bin/mysqld_safe
7)创建用户
[root@db06 /application/mysql/support-files]# useradd mysql -s /sbin/nologin -M
8)配置/etc/my.conf
[root@db06 /application/mysql/bin]# vim /etc/my.cnf
[mysqld]
port = 3306
datadir = /application/mysql/data
basedir = /application/mysql
socket = /application/mysql/data/mysql.sock
log_error = /application/mysql/data/error.log
pid_file = /application/mysql/data/mysql.pid
[client]
socket = /application/mysql/data/mysql.sock
9)初始化MySQL
#默认的初始脚本是在bin目录下,这个与5.6初始化的区别
[root@db06 /application/mysql/bin]# ./mysqld --initialize --user=mysql --basedir=/application/mysql --datadir=/application/mysql/data
10)启动数据库
其他的启动方式与mysql5.6的设置一样。
[root@db06 /application/mysql/data]# /etc/init.d/mysqld start
Starting MySQL. SUCCESS!
[root@db06 /application/mysql/data]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 6621/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 7049/master
tcp6 0 0 :::3306 :::* LISTEN 24678/mysqld
tcp6 0 0 :::22 :::* LISTEN 6621/sshd
tcp6 0 0 ::1:25 :::* LISTEN 7049/master
11)默认的初始密码是不为空的,初始化时是会给出默认的密码。根据这个密码首次登陆使用,登陆后自行设置密码。
12)添加环境变量
[root@db06 /application/mysql/data]# vim /etc/profile.d/mysql.sh
export PATH="/application/mysql/bin:$PATH"
[root@db06 /application/mysql/data]# source /etc/profile
网友评论