MySQL 5.7.22 安装

2018/10/20 MySQL

mysql 5.7.22 安装

1. 下载源码

官网下载地址:

dev.mysql.com

mysql 安装包分为三种:

  1. rpm包

    • 优点:安装简单,适合初学者学习使用
    • 缺点:需要单独下载客户端和服务器;安装路径不灵活,默认路径不能修改,一台服务器只能安装一个MySQL
  2. 二进制包( Linux - Generic)

    • 优点: 安装简单;可以安装到任何路径下,灵活性好;一台服务器可以安装多个MySQL
    • 缺点: 已经经过编译,性能不如源码编译的好;不能灵活定制编译参数
  3. 源码包 ( Source Code )

    • 优点: 在实际安装的操作系统进行可根据需要定制编译,最灵活;性能最好;一台服务器可以安装多个MySQL
    • 缺点: 安装过程较复杂;编译时间长

2. 安装

1. RPM安装

  • 安装过程

      rpm -ivh MySQL-server* MySQL-client*
    	
      groupadd mysql
    	
      useradd -g mysql mysql
    
  • 安装文件位置

      /usr/bin:客户端程序和脚本
    
      /usr/sbin:mysqld服务器
    	
      /var/lib/mysql:日志文件,数据库
    	
      /usr/share/doc/packages:文档
    	
      /usr/include/mysql:包含(头)文件
    	
      /usr/lib/mysql:库文件
    	
      /usr/share/mysql:错误消息和字符集文件
    	
      /usr/share/sql-bench:基准程序bin:客户端程序和mysqld服务器
    	
      data:日志文件,数据库
    	
      docs:文档,ChangeLog
    	
      include:包含(头)文件
    	
      lib:库
    	
      scripts:mysql_install_db用来初始化系统数据库
    	
      share/mysql:错误消息文件
    	
      sql-bench:基准程序bin:客户端程序和脚本
    	
      include/mysql:包含(头)文件
    	
      info:Info格式的文档
    	
      lib/mysql:库文件
    	
      libexec:mysqld服务器
    	
      share/mysql:错误消息文件
    	
      sql-bench:基准程序和crash-me测试
    	
      var:数据库和日志文件
    

2. 二进制安装

  • 安装过程

      # 解压文件
      tar xf mysql-5.7.22-linux-glibc2.12-x86_64.tar -C /Data/apps/
      mv /Data/apps/mysql-5.7.22* /Data/apps/mysql_5722
      ln -s /Data/apps/mysql_5722 /Data/apps/mysql
    
      # mysql安装目录
      MYSQL_DIR="/Data/apps/mysql"
      MYSQL_DATA=${MYSQL_DIR}/data
      mkdir -p ${MYSQL_DATA}
      mkdir -p ${MYSQL_DIR}/log
      # 添加mysql用户、用户组
      groupadd mysql
      useradd -r -g mysql mysql
      mkdir /home/mysql
      useradd -r -s /sbin/nologin -g mysql mysql -d /home/mysql
      chown -R mysql.mysql /home/mysql
      chown -R mysql.mysql $MYSQL_DIR
    	
      # 复制启动脚本,修改mysql 目录位置
      cp mysql.server /etc/init.d/mysqld
    	
      # 初始化数据库,获取初始化密码
      ${MYSQL_DIR}/bin/mysqld --initialize --user=mysql --basedir=${MYSQL_DIR}  --datadir=${MYSQL_DATA}
    	
      # 进入mysql 修改初始密码
      mysql -uroot -p
      set password=password('larryzl');
    	
      # 添加远程用户
      grant all privileges on *.* to root@'%' identified by 'larryzl';
      flush privileges;
    

3. 源码安装

  1. 环境介绍

    • CentOS 7.2
    • Mysql 5.7.22 (地址
    • boost 1.59 (地址
  2. 安装

     #!/bin/bash
    	
     MYSQL_DIR="/Data/apps/mysql"
     MYSQL_DATA=${MYSQL_DIR}/data
     PASSWD=""
    	
     get_os(){
         [ -f /etc/redhat-release ] && awk '{print ($1)}' /etc/redhat-release|grep -Eqi "centos|red hat|redhat" 
         if [ $? -eq 0 ];then
             echo 'centos'
         fi
         [ -f /etc/os-release ] && awk -F'[= "]' '/PRETTY_NAME/{print $3}' /etc/os-release| grep -Eqi "ubuntu"
         if [ $? -eq 0 ];then
             echo 'ubuntu'
         fi
     }
    	
    	
     os=$( get_os )
     if [ "${os}0" == "centos0" ];then
         yum -y install gcc gcc-c++ ncurses ncurses-devel bison libgcrypt perl make cmake
     elif [ "${os}0" == "ubuntu0" ]; then
         apt-get -y install make cmake gcc g++ bison libncurses5-dev build-essential
     else
         echo "OS is not support"
         exit 1
     fi
    	
     cd /usr/local/src/
     [ -d .mysql_install_dir ]  || mkdir .mysql_install_dir
     cd .mysql_install_dir
    	
     # download mysql
     [ -f mysql.tar.gz ] || wget -O mysql.tar.gz https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.22.tar.gz
     [ -f boost_1_59_0.tar.gz ] || wget -O boost_1_59_0.tar.gz http://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz
    	
     if [ -d /usr/local/boost ] ;then
         echo "boost is exist"
     else
         tar zxf boost_1_59_0.tar.gz
         mv boost_1_59_0 /usr/local/boost
     fi
     [ -d .mysql ] && rm -rf .mysql/* || mkdir .mysql
     tar zxf mysql.tar.gz -C .mysql/
     cd .mysql/mysql-*
    	
     groups mysql || groupadd mysql
     id mysql ||useradd -r -g mysql -s /sbin/nologin -M mysql
    	
     mkdir -p $MYSQL_DIR/{data,logs,pids}
     chown -R mysql:mysql $MYSQL_DIR
    	
     cmake . \
         -DCMAKE_INSTALL_PREFIX=$MYSQL_DIR \
         -DMYSQL_DATADIR=$MYSQL_DATA \
         -DDEFAULT_CHARSET=utf8 \
         -DDEFAULT_COLLATION=utf8_general_ci \
         -DMYSQL_TCP_PORT=3306 \
         -DMYSQL_USER=mysql \
         -DWITH_MYISAM_STORAGE_ENGINE=1 \
         -DWITH_INNOBASE_STORAGE_ENGINE=1 \
         -DWITH_ARCHIVE_STORAGE_ENGINE=1 \
         -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
         -DWITH_MEMORY_STORAGE_ENGINE=1 \
         -DENABLE_DOWNLOADS=1 \
         -DDOWNLOAD_BOOST=1 \
         -DWITH_BOOST=/usr/local/boost
    	
     make
    	
     make install
    	
     ${MYSQL_DIR}/bin/mysqld \
         --defaults-file=/etc/my.cnf \
         --initialize-insecure \
         --user=mysql \
         --basedir=$MYSQL_DIR \
         --datadir=${MYSQL_DATA}
    	
     ${MYSQL_DIR}/bin/mysqld_safe  --defaults-file=/etc/my.cnf &
    	
     if [ "${PASSWD}0" == "0" ];then
         PASSWD=$( < /dev/urandom tr -dc '1-9a-zA-Z'|head -c 12)
     fi
     cat > .init.sql <<EOF
     SET PASSWORD = PASSWORD('${PASSWD}');
     ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
     flush privileges;
     EOF
     cat > login_mysql.sh <<EOF
     ${MYSQL_DIR}/bin/mysql -uroot -p'${PASSWD}' -S ${MYSQL_DIR}/mysql.sock
     EOF
    

Search

    Table of Contents