• CentOS7.5下安装 mysql5.7(glibc版)以及实现多实例


    1. 下载glibc版的MySQL安装包

    进入MySQL官网(https://www.mysql.com

    点击“DOWNLOADS”

    滑动到页面最下面,点击“MySQL Community Server”

    点击“Looking for previous GA versions?”

    选择要下载的版本

    点击“No thanks, just start my download.”开始下载

    2. MySQL二进制安装

    2.1 环境准备

    检查是否已经安装了MySQL或者是MariaDB,如果已经安装,则先把安装的卸载

    rpm -qa |grep mysql

    rpm -qa |grep mariadb

    yum remove -y mariadb*

    2.2 创建软件目录

    mkdir -p /application

    上传软件到此目录

    2.3 解压并改名为mysql

    tar -zxvf mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz

    mv mysql-5.7.28-linux-glibc2.12-x86_64 mysql

    ls -l mysql

    2.4 修改环境变量

    vim /etc/profile

    在最后一行加入以下配置:

    export PATH=/application/mysql/bin:$PATH

    source /etc/profile

    2.5 建立mysql用户和组(如果已有可忽略)

    useradd -M -s /sbin/nologin mysql

    2.6 创建相关目录并修改权限

    mkdir -p /data/mysql

    chown -R mysql.mysql /application/*

    chown -R mysql.mysql /data/*

    2.7 初始化数据库

    进到MySQL的bin目录

    cd /application/mysql/bin

    方法一:

    初始化数据,初始化管理员的临时密码

    mysqld --initialize --user=mysql --basedir=/application/mysql --datadir=/data/mysql

    方法二:

    初始化数据,初始化管理员的密码为空

    mysqld --initialize-insecure --user=mysql --basedir=/application/mysql --datadir=/data/mysql

    执行了方法一再执行方法二时,报错,如下:

    报错原因:

    在 /data/mysql 存在文件

    解决:

    m -rf /data/mysql/*

    再次执行 mysqld --initialize-insecure --user=mysql --basedir=/application/mysql --datadir=/data/mysql

    MySQL5.7新特性重要说明:

    MySQL5.7开始,MySQL加入了全新的密码安全机制:

    (1)初始化完成后,会生成临时密码(显示到屏幕上,并且会往日志中记一份)

    (2)密码复杂度:长度,超过12位;复杂度,数字、字符、大小写字母四种混乱组合

    (3)密码过期时间180天

    注意:MySQL5.6和MySQL5.7初始化是有区别的,MySQL5.6初始化目录如下:

    /application/mysql/scripts/mysql_install_db --user=mysql --basedir=/application/mysql --datadir=/data/mysql

    2.8 书写MySQL默认配置文件

    cat > /etc/my.cnf <<EOF
    [mysqld]
    user=mysql
    basedir=/application/mysql
    datadir=/data/mysql
    server_id=1
    port=3306
    socket=/tmp/mysql.sock
    [mysql]
    socket=/tmp/mysql.sock
    prompt=3306 [\d]>
    EOF

    2.9 配置启动脚本

    cd /application/mysql/support-files/

    ./mysql.server start

    cp mysql.server /etc/init.d/mysqld

    2.10 使用systemd管理mysql

    vim /etc/systemd/system/mysqld.service

    [Unit]
    Description=MySQL Server
    Documentation=man:mysqld(8)
    Documentation=http://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

    启动MySQL

    systemctl start/stop/restart/status mysqld

    2.11 在mysql系统外,使用mysqladmin设置密码

    mysqladmin -u root -p password "123456"

    3. 多实例的应用

    3.1 准备多个目录

    mkdir -p /data/330{7,8,9}/data

    3.2 准备配置文件

    cat > /data/3307/my.cnf <<EOF
    [mysqld]
    basedir=/application/mysql
    datadir=/data/3307/data
    socket=/data/3307/mysql.sock
    log_error=/data/3307/mysql.log
    port=3307
    server_id=2
    log_bin=/data/3307/mysql-bin
    EOF
    
    cat > /data/3308/my.cnf <<EOF
    [mysqld]
    basedir=/application/mysql
    datadir=/data/3308/data
    socket=/data/3308/mysql.sock
    log_error=/data/3308/mysql.log
    port=3308
    server_id=3
    log_bin=/data/3308/mysql-bin
    EOF
    
    cat > /data/3309/my.cnf <<EOF
    [mysqld]
    basedir=/application/mysql
    datadir=/data/3309/data
    socket=/data/3309/mysql.sock
    log_error=/data/3309/mysql.log
    port=3309
    server_id=4
    log_bin=/data/3309/mysql-bin
    EOF

    3.3 初始化三套数据

    mv /etc/my.cnf /etc/my.cnf.bak

    mysqld --initialize-insecure --user=mysql --datadir=/data/3307/data --basedir=/application/mysql
    mysqld --initialize-insecure --user=mysql --datadir=/data/3308/data --basedir=/application/mysql
    mysqld --initialize-insecure --user=mysql --datadir=/data/3309/data --basedir=/application/mysql

    3.4 systemd管理多实例

    cd /etc/systemd/system

    cp mysqld.service mysqld3307.service

    cp mysqld.service mysqld3309.service

    cp mysqld.service mysqld3308.service

     

    vim mysqld3307.service

    ExecStart=/application/mysql/bin/mysqld --defaults-file=/data/3307/my.cnf

    vim mysqld3308.service

    ExecStart=/application/mysql/bin/mysqld --defaults-file=/data/3308/my.cnf

    vim mysqld3309.service

    ExecStart=/application/mysql/bin/mysqld --defaults-file=/data/3309/my.cnf

    3.5 授权

    chown -R mysql.mysql /data/*

    3.6 启动

    systemctl start mysqld3307.service
    systemctl start mysqld3308.service
    systemctl start mysqld3309.service

    3.7 验证多实例

    netstat -lnp |grep 330

    遇到如下报错:

    解决方法:

    yum install -y net-tools

    mysql -S /data/3307/mysql.sock -e "select @@server_id"

    mysql -S /data/3308/mysql.sock -e "select @@server_id"

    mysql -S /data/3309/mysql.sock -e "select @@server_id"

     

    本文参考自:

    (1)https://www.jianshu.com/p/dd7137c4efa5

    (2)https://www.jianshu.com/p/e872bc12f583

  • 相关阅读:
    使用contentProvider
    创建Sqlite数据库(一)
    AIDL实现进程间通信
    Messenger实现进程间通信(IPC)
    Serializable使用
    Parcelable使用(二)
    STAR法则
    Python系列-------基本语法
    前端随心记---------面试题集
    前端随心记---------惟客科技面试
  • 原文地址:https://www.cnblogs.com/opsprobe/p/12100603.html
Copyright © 2020-2023  润新知