centos7安装mysql5.7多实例
方法一:
1.环境配置
[root@localhost ~]# yum -y install libaio
2.解压包
[root@localhost ~]# tar xvf mysql-5.7.23-el7-x86_64.tar.gz -C /usr/local/
[root@localhost ~]# cd /usr/local/
[root@localhost local]# ln -s mysql-5.7.23-el7-x86_64 mysql
#添加环境变量
[root@localhost local]# echo 'PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
3.添加用户,创建目录
[root@localhost ~]# useradd -r -s /sbin/nologin mysql
[root@localhost ~]# mkdir /data/mysql/{mysql3306,mysql3307,mysql3308}/{etc,bin,data,log,pid,socket} -pv
[root@localhost ~]# chown -R mysql.mysql /data/mysql
4.修改配置文件
[root@localhost ~]# vi /data/mysql/mysql3306/etc/my.cnf
###########################################################
[mysqld]
datadir=/data/mysql/mysql3306/data
socket=/data/mysql/mysql3306/socket/mysql.sock
port=3306
[mysqld_safe]
log-error=/data/mysql/mysql3306/log/mysql.log
pid-file=/data/mysql/mysql3306/pid/mysql.pid
#############################################################
5.初始化数据文件
[root@localhost ~]# cd /usr/local/mysql/bin
[root@localhost bin]# ./mysqld --initialize --datadir=/data/mysql/mysql3306/data --user=mysql
2020-03-11T03:11:17.648280Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2020-03-11T03:11:18.160698Z 0 [Warning] InnoDB: New log files created, LSN=45790
2020-03-11T03:11:18.243602Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2020-03-11T03:11:18.307805Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: f9cd0615-6345-11ea-a72e-000c2994e329.
2020-03-11T03:11:18.309055Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2020-03-11T03:11:18.310296Z 1 [Note] A temporary password is generated for root@localhost: duG=Zpj>p93K #记住此处密码
6.启动3306实例
[root@localhost ~]# mysqld_safe --defaults-file=/data/mysql/mysql3306/etc/my.cnf --user=mysql &
7.修改初始密码
[root@localhost ~]# mysqladmin -uroot -p'duG=Zpj>p93K' password 123456 -S /data/mysql/mysql3306/socket/mysql.sock
8.关闭数据库
[root@localhost ~]# mysqladmin -uroot -p123456 -S /data/mysql/mysql3306/socket/mysql.sock shutdown
附:启动关闭脚本
#!/bin/bash
port=3306
mysql_user="root"
mysql_pwd="123456"
mysql_basedir="/data/mysql"
mysql_sock="${mysql_basedir}/mysql${port}/socket/mysql.sock"
function_start_mysql()
{
if [ ! -e "$mysql_sock" ];then
printf "Starting MySQL...\n"
mysqld_safe --defaults-file=${mysql_basedir}/mysql${port}/etc/my.cnf &> /dev/null &
else
printf "MySQL is running...\n"
exit
fi
}
function_stop_mysql()
{
if [ ! -e "$mysql_sock" ];then
printf "MySQL is stopped...\n"
exit
else
printf "Stoping MySQL...\n"
mysqladmin -u ${mysql_user} -p${mysql_pwd} -S ${mysql_sock} shutdown
fi
}
function_restart_mysql()
{
printf "Restarting MySQL...\n"
function_stop_mysql
sleep 2
function_start_mysql
}
case $1 in
start)
function_start_mysql
;;
stop)
function_stop_mysql
;;
restart)
function_restart_mysql
;;
*)
printf "Usage: ${mysql_basedir}/${port}/bin/mysqld {start|stop|restart}\n"
esac
3307和3308一样安装
方法二:
1.配置环境
[root@localhost ~]# yum -y install libaio perl perl-devel
2.解压二进制文件
[root@localhost ~]# tar xvf mysql-5.7.23-el7-x86_64.tar.gz -C /usr/local/
[root@localhost ~]# ln -s /usr/local/mysql-5.7.23-el7-x86_64 /usr/local/mysql
[root@localhost ~]# echo 'PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
3.创建用户和数据文件
[root@localhost ~]# useradd -r -s /sbin/nologin mysql
[root@localhost ~]# mkdir /data/mysql/{mysql3306,mysql3307,mysql3308,log}/{data,log,socket,pid} -pv
[root@localhost ~]# chown -R mysql.mysql /data/mysql
4.修改my.cnf
[root@localhost ~]# vi /etc/my.cnf
#####################################################
[mysqld_multi]
mysqld = /usr/local/mysql/bin/mysqld
mysqladmin = /usr/local/mysql/bin/mysqladmin
log = /data/mysql/log/mysql_multi.log
user = root
password = 123456
[mysqld3306]
character_set_server= utf8
init_connect= 'SET NAMES utf8'
basedir= /usr/local/mysql
datadir= /data/mysql/mysql3306/data
socket = /data/mysql/mysql3306/socket/mysql.sock
user=mysql
port=3306
performance_schema=off
innodb_buffer_pool_size=32M
bind_address=0.0.0.0
skip-name-resolve=0
[mysqld3307]
character_set_server= utf8
init_connect= 'SET NAMES utf8'
basedir= /usr/local/mysql
datadir= /data/mysql/mysql3307/data
socket = /data/mysql/mysql3307/socket/mysql.sock
user=mysql
port=3307
performance_schema=off
innodb_buffer_pool_size=32M
bind_address=0.0.0.0
skip-name-resolve=0
[mysqld3308]
character_set_server= utf8
init_connect= 'SET NAMES utf8'
basedir= /usr/local/mysql
datadir= /data/mysql/mysql3308/data
socket = /data/mysql/mysql3308/socket/mysql.sock
user=mysql
port=3308
performance_schema=off
innodb_buffer_pool_size=32M
bind_address=0.0.0.0
skip-name-resolve=0
##########################################################
5.初始化数据库实例
[root@localhost ~]# cd /usr/local/mysql/bin
[root@localhost bin]# ./mysqld --initialize --user=mysql --datadir=/data/mysql/mysql3306/data
#最后一行密码请记录下来
[root@localhost bin]# ./mysqld --initialize --user=mysql --datadir=/data/mysql/mysql3307/data
#最后一行密码请记录下来
[root@localhost bin]# ./mysqld --initialize --user=mysql --datadir=/data/mysql/mysql3308/data
#最后一行密码请记录下来
6.启用ssl
[root@localhost bin]# mysql_ssl_rsa_setup --initizlize --user=mysql --datadir=/data/mysql/mysql3306/data
[root@localhost bin]# mysql_ssl_rsa_setup --initizlize --user=mysql --datadir=/data/mysql/mysql3307/data
[root@localhost bin]# mysql_ssl_rsa_setup --initizlize --user=mysql --datadir=/data/mysql/mysql3308/data
7.修改数据库密码
[root@localhost ~]# mysqladmin -uroot -p'?BN+gGq;+7SY' -S /data/mysql/mysql3306/socket/mysql.sock password 123456
[root@localhost ~]# mysqladmin -uroot -p'YXKkvku?7B<&' -S /data/mysql/mysql3307/socket/mysql.sock password 123456
[root@localhost ~]# mysqladmin -uroot -p'pq+V:IMs8yBr' -S /data/mysql/mysql3308/socket/mysql.sock password 123456
8.修改mysqld_multi
[root@localhost ~]# vi /usr/local/mysql/bin/mysqld_multi
####################################################################
my $com= join ' ', 'my_print_defaults ', @defaults_options, $group;
替换为:
my $com= join ' ', 'my_print_defaults -s', @defaults_options, $group;
######################################################################
9.启动,关闭,显示
[root@localhost ~]# cp ../support-files/mysqld_multi.server /etc/init.d/mysqld_multi
[root@localhost ~]# /etc/init.d/mysqld_multi start
[root@localhost ~]# /etc/init.d/mysqld_multi stop
[root@localhost ~]# /etc/init.d/mysqld_multi restart
[root@localhost ~]# /etc/init.d/mysqld_multi report
#单个实例启动
[root@localhost ~]# /etc/init.d/mysqld_multi start 3306