CentOS7 yum 安装 MySQL5.7

环境

  • CentOS 7.4 x86_64 最小安装
  • MySQL 5.7.20

安装 mysql yum 源

  • 下载 rpm 包

    1
    2
    3
    
    # repo 地址: https://repo.mysql.com/
    cd /root/
    curl -O https://repo.mysql.com/mysql57-community-release-el7.rpm
    
  • 安装 mysql 源

    1
    
    rpm -ivh /root/mysql57-community-release-el7.rpm
    
  • 更新 yum 缓存

    1
    2
    
    yum clean all
    yum makecache fast
    

安装 mysql

  • yum 安装 mysql 包

    1
    
    yum install mysql-community-server
    
  • 启动 mysql

    1
    
    systemctl start mysqld
    
  • 查找 mysql 默认 root 密码

    1
    
    grep 'temporary password' /var/log/mysqld.log
    
  • 修改 root 密码

    1
    2
    
    mysqladmin -uroot -p password 'Pass-1234'
    # 输入查找到的密码
    

安装 MySQL5.7 通用二进制包

环境

  • CentOS 7.9 x86_64 最小安装
  • MySQL 5.7.44
  • 普通用户 mortal

安装 mysql

  • 下载 MySQL5.7.44 通用二进制包

    1
    
    curl -LO https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz
    
  • 解压

    1
    2
    3
    
    tar zxf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz
    mv mysql-5.7.44-linux-glibc2.12-x86_64 /mysql57
    chown -R root.root /mysql57
    
  • 创建普通用户 mortal,切换到 mortal 用户下

    1
    2
    3
    4
    
    useradd -m mortal
    echo -e 'mortal hard nofile 5120\nmortal soft nofile 5120\n' \
        > /etc/security/limits.d/mortal
    su - mortal
    
  • 创建实例目录

    1
    2
    
    cd ~
    mkdir -p mysql-6033/{db,log,priv-files}
    
  • 创建配置文件 mysql-6033/my.cnf,内容如下

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    
    [mysqld]
    symbolic-links=0
    port = 6033
    basedir = /mysql57
    datadir = /home/lijc/mysql-6033/db
    socket = /home/lijc/mysql-6033/sock
    pid-file = /home/lijc/mysql-6033/pid
    secure-file-priv = /home/lijc/mysql-6033/priv-files
    log-timestamps = SYSTEM
    explicit_defaults_for_timestamp = 1
    log-error = /home/lijc/mysql-6033/log/error.log
    slow-query-log = TRUE
    slow-query-log-file = /home/lijc/mysql-6033/log/slow.log
    character-set-server = utf8mb4
    default-storage-engine = innodb
    lower-case-table-names = 1
    

初始化基础数据

  • 初始化实例的数据目录
    1
    2
    3
    
    /mysql57/bin/mysqld \
        --defaults-file=/home/mortal/mysql-6033/my.cnf \
        --initialize-insecure
    

启动 mysql

  • 启动实例
    1
    
    /mysql57/bin/mysqld --defaults-file=/home/mortal/mysql-6033/my.cnf --daemonize
    

设置 root 密码

  • 设置 mysql root 账户的密码
    1
    
    /mysql57/bin/mysqladmin -S /home/mortal/mysql-6033/sock password
    

客户端链接

  • 使用本机客户端登陆 mysql root 账户
    1
    
    /mysql57/bin/mysql -S /home/mortal/mysql-6033/mysqld.sock -p
    

安装 MySQL8 通用二进制包

环境

  • CentOS 7.9 x86_64 最小安装
  • MySQL 8.0.37 多实例
  • 普通用户 mortal

安装 mysql

  • 创建普通用户 mortal,切换到 mortal 用户下

    1
    2
    
    useradd -m mortal
    su - mortal
    
  • 下载 MySQL8 通用二进制包

    1
    2
    3
    4
    5
    
    cd ~
    # 这是 debug 版本,软件包很大
    curl -LO https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.37-linux-glibc2.17-x86_64.tar.xz
    # 这是 strip 版本,软件包轻量,推荐
    curl -LO https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.37-linux-glibc2.17-x86_64-minimal.tar.xz
    
  • 解压

    1
    2
    3
    4
    5
    6
    7
    
    cd ~
    # debug 版本
    tar xf mysql-8.0.37-linux-glibc2.12-x86_64.tar.xz
    mv mysql-8.0.37-linux-glibc2.12-x86_64 mysql
    # strip 版本
    tar xf mysql-8.0.37-linux-glibc2.17-x86_64-minimal.tar.xz
    mv mysql-8.0.37-linux-glibc2.17-x86_64-minimal mysql
    
  • 创建三个实例的目录

    1
    2
    
    cd ~
    mkdir -p instance-{3301..3303}/{file,log}
    
  • 创建各实例的配置文件 instance-{3301..3303}/my.cnf

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    
    cd ~
    for i in {3301..3303}; do
        cat > instance-$i/my.cnf <<-EOF
    [mysqld]
    mysqlx = OFF
    port = $i
    basedir = /home/mortal/mysql
    datadir = /home/mortal/instance-$i/db
    socket = /home/mortal/instance-$i/mysqld.sock
    pid-file = /home/mortal/instance-$i/mysqld.pid
    secure-file-priv = /home/mortal/instance-$i/file
    log-timestamps = SYSTEM
    log-error = /home/mortal/instance-$i/log/error.log
    slow-query-log = TRUE
    slow-query-log-file = /home/mortal/instance-$i/log/slow.log
    character-set-server = utf8mb4
    default-storage-engine = innodb
    #default-authentication-plugin = mysql_native_password
    authentication-policy = mysql_native_password
    lower-case-table-names = 1
    EOF
    done
    

初始化基础数据

  • 初始化每个实例的数据目录
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    
    cd ~
    mysql/bin/mysqld \
        --defaults-file=/home/mortal/instance-3301/my.cnf \
        --initialize-insecure
    mysql/bin/mysqld \
        --defaults-file=/home/mortal/instance-3302/my.cnf \
        --initialize-insecure
    mysql/bin/mysqld \
        --defaults-file=/home/mortal/instance-3303/my.cnf \
        --initialize-insecure
    

启动 mysql

  • 启动每个实例的 mysql
    1
    2
    3
    4
    
    cd ~
    mysql/bin/mysqld --defaults-file=/home/mortal/instance-3301/my.cnf --daemonize
    mysql/bin/mysqld --defaults-file=/home/mortal/instance-3302/my.cnf --daemonize
    mysql/bin/mysqld --defaults-file=/home/mortal/instance-3303/my.cnf --daemonize
    

设置 root 密码

  • 设置 mysql root 账户的密码
    1
    2
    3
    4
    
    cd ~
    mysql/bin/mysqladmin -S /home/mortal/instance-3301/mysqld.sock password
    mysql/bin/mysqladmin -S /home/mortal/instance-3302/mysqld.sock password
    mysql/bin/mysqladmin -S /home/mortal/instance-3303/mysqld.sock password
    

客户端链接

  • 使用本机客户端登陆 mysql root 账户
    1
    2
    3
    4
    
    cd ~
    mysql/bin/mysql -S /home/mortal/instance-3301/mysqld.sock -p
    mysql/bin/mysql -S /home/mortal/instance-3302/mysqld.sock -p
    mysql/bin/mysql -S /home/mortal/instance-3303/mysqld.sock -p