编译安装过程
- 首先准备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 - 安装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 >>>更改属主和属组
- 创建相关目录
# mkdir /data/mysql/mysql3306/{data,tmp,logs} -pv
# chown -R mysql.mysql /data
- 初始化mysql (生成msyql的系统表和库)
# /usr/local/mysql/bin/mysqld --initialize --user=mysql
补充: 当使用–initialize-inseucre来做初始化的时候,root的初始密码为空;上述方式的话,在/data/msyql/mysql3306/data/error.log中的root@localhost后的字符串就是root的初始化密码,使用以下命令查看密码:
# cat /data/mysql/mysql3306/data/error.log | grep "password"
2018-10-11T16:54:45.703420Z 1 [Note] A temporary password is generated for root@localhost: Be4M9hxepF#(
- 导出msyql的二进制文件,方便使用
# cat <<eof >/etc/profile.d/msyql.sh
# > PATH=$PATH:/usr/local/mysql/bin
# > export PATH
# >eof
- 生成服务管理脚本
- 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
- 启动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
- 登录msyql
# mysql -uroot -pxxxx
- 修改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
- 创建相关目录
# mkdir /data/mysql/mysql3307/{tmp,data,logs} -pv
# chown -R mysql.mysql /data
- 生成配置文件
# cp /etc/my.cnf /data/mysql/mysql3307/
# sed -i 's/3306/3307/g' /data/mysql/mysql3307/my.cnf
# cat /data/mysql/mysql3307/my.cnf
- 初始化mysql
# /usr/local/mysql/bin/mysqld --defaults-file=/data/mysql/mysql3307/my.cnf --initialize
- 启动mysql3307 (这里必须使用–defaults-file指定配置文件位置)
# /usr/local/mysql/bin/mysqld --defaults-file=/data/mysql/mysql3307/my.cnf &
- 登录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密码一致。