1. 程式人生 > >在CentOS7上編譯安裝多例項mysql

在CentOS7上編譯安裝多例項mysql

編譯安裝過程

  1. 首先準備mysql5.7的通用二進位制安裝包和msyql的配置檔案 (在mysql5.7中是沒有msyql配置檔案的模板,在文章末尾會提供模板)
    說明:
    安裝位置: /usr/local/mysql
    資料位置: /data/mysql/mysql3306/data
    臨時檔案位置: /data/mysql/mysql3306/tmp
    日誌檔案位置: /data/mysql/mysql3306/logs/mysql-bin
    socket檔案位置: /tmp/mysql3306.sock
  2. 安裝msyql
  # groupadd mysql   				           >>> 建立組
  # useradd -r -g mysql -s /sbin/nologin mysql      	   >>>建立msyql的執行使用者
  # tar xf /root/mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz>>>解壓二進位制msyql資料包
  # mv mysql-5.7.23-linux-glibc2.12-x86_64 /usr/local/     >>>移動msyql到安裝目錄
  # cd /usr/local 
  # ln -sv mysql-5.7.23-linux-glibc2.12-x86_64/ mysql      >>>做軟連線方便後續管理
  # chown mysql.mysql mysql -R                             >>>更改屬主和屬組
  1. 建立相關目錄
  # mkdir /data/mysql/mysql3306/{data,tmp,logs} -pv
  # chown -R mysql.mysql /data
  1. 初始化mysql (生成msyql的系統表和庫)
  # /usr/local/mysql/bin/mysqld --initialize --user=mysql

補充: 當使用–initialize-inseucre來做初始化的時候,root的初始密碼為空;上述方式的話,在/data/msyql/mysql3306/data/error.log中的[email protected]後的字串就是root的初始化密碼,使用以下命令檢視密碼:

  # cat /data/mysql/mysql3306/data/error.log | grep "password"
  2018-10-11T16:54:45.703420Z 1 [Note] A temporary password is generated for [email protected]: Be4M9hxepF#(
  1. 匯出msyql的二進位制檔案,方便使用
  # cat <<eof >/etc/profile.d/msyql.sh
  # > PATH=$PATH:/usr/local/mysql/bin
  # > export PATH
  # >eof
  1. 生成服務管理指令碼
  • CentOS 5和CentOS 6
  # cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
  # chkconfig --add mysqld
  # chkcongig mysqld on
  • CentOS 7
  # vim mysql3306.service
      [Unit]
      Description=mysql 3306 service

      [Service]
      Type=forking
      ExecStart=/bin/bash /usr/local/mysql/support-files/mysql.server start
      ExecStop=/bin/bash /usr/local/mysql/support-files/mysql.server stop
      ExecRestart=/bin/bash /usr/local/mysql/support-files/mysql.server restart

      [Install]
      WantedBy=multi-user.target

  # mv mysql3306.service /usr/lib/systemd/system/
  # systemctl enable mysql3306.service 
  1. 啟動msyql
  • CentOS 5和CentOS 6
  # service msyqld start      >>>啟動mysql
  # chkconfig msyqld on       >>>實現開機自啟
  • CentOS 7
  # /usr/local/mysql/support-files/mysql.server start

或者

  # systemctl start mysql
  1. 登入msyql
  # mysql -uroot -pxxxx
  1. 修改root密碼
  > ALTER USER user() IDENTIFIED BY "123";

第二個msyql例項配置如下:

: 3307
安裝位置: /usr/local/mysql
資料位置: /data/mysql/mysql3307/data
臨時檔案位置: /data/mysql/mysql3307/tmp
日誌檔案位置: /data/mysql/mysql3307/logs/mysql-bin
socket檔案位置: /tmp/mysql3307.sock
配置檔案: /data/mysql/mysql3307/my.cnf

  1. 建立相關目錄
  # mkdir /data/mysql/mysql3307/{tmp,data,logs} -pv
  # chown -R mysql.mysql /data
  1. 生成配置檔案
  # cp /etc/my.cnf /data/mysql/mysql3307/
  # sed -i  's/3306/3307/g' /data/mysql/mysql3307/my.cnf 
  # cat /data/mysql/mysql3307/my.cnf 
  1. 初始化mysql
  # /usr/local/mysql/bin/mysqld --defaults-file=/data/mysql/mysql3307/my.cnf --initialize
  1. 啟動mysql3307 (這裡必須使用–defaults-file指定配置檔案位置)
  # /usr/local/mysql/bin/mysqld --defaults-file=/data/mysql/mysql3307/my.cnf &
  1. 登入msyql3307 (這裡的登入密碼在/data/mysql/mysql3307/data/error.log中,同時需要使用-S指定socket檔案位置)
  # mysql -uroot -pc-7ae#sgan1K -S /tmp/mysql3307.sock

通過以上操作就可以完成mysql的多例項,第二次開始也可以不使用初始化,直接複製第一個mysql的資料檔案即/data/msyql/msyql3306/data下的全部檔案到新建的msyql的存放資料的目錄下,這樣就相當於初始化生成msyql的系統表和庫;這裡的root使用者密碼和mysqy3306中的root密碼一致。