安装MySQL

作者: 唯爱熊 | 来源:发表于2019-11-25 12:31 被阅读0次

    一.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
    

    相关文章

      网友评论

        本文标题:安装MySQL

        本文链接:https://www.haomeiwen.com/subject/hmvdwctx.html