基于上篇,linux安装mysql 单实例安装的基础,拓展尝试动手试试多实例安装
单实例安装传送门:https://blog.csdn.net/qq_20409407/article/details/87599464
要求:
在一台linux上,现在要求装两个mysql 一个3307,3308
废话不多说,开始安装
新建 /etc/my.cnf 配置如下
[mysqld]
sql_mode = "STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER"
[mysqld_multi]
mysqld = /usr/local/mysql/bin/mysqld_safe
mysqladmin = /usr/local/mysql/bin/mysqladmin
log = /var/log/mysqld_multi.log
[mysqld1]
server-id = 11
socket = /tmp/mysql.sock1
port = 3307
datadir = /data1
user = mysql
performance_schema = off
innodb_buffer_pool_size = 32M
skip_name_resolve = 1
log_error = error.log
pid-file = /data1/mysql.pid1
[mysqld2]
server-id = 12
socket = /tmp/mysql.sock2
port = 3308
datadir = /data2
user = mysql
performance_schema = off
innodb_buffer_pool_size = 32M
skip_name_resolve = 1
log_error = error.log
pid-file = /data2/mysql.pid2
创建2个数据目录
mkdir /data1
mkdir /data2
chown mysql.mysql /data{1..2}
初始化mysql
#mysqld 在mysql的bin下,没有配置环境变量的,需要在命令前面加 ./mysql --initialize ..... 才能执行
mysqld --initialize --user=mysql --datadir=/data1
mysqld --initialize --user=mysql --datadir=/data2
#配置开机启动
cp /usr/local/mysql/support-files/mysqld_multi.server /etc/init.d/mysqld_multid
chkconfig mysqld_multid on
注:开机启动好像有问题
解决方案:
安装多实例,暂时跳过开机自启动的问题,等你手动可以通过 mysqld_multi start 启动后,可以返回头看看开启启动需要修改的参数
首先看一下Linux启动的知识点,顺序如下。
1 加载内核
2 执行init程序
3 /etc/rc.d/rc.sysinit # 由init执行的第一个脚本
4 /etc/rc.d/rc $RUNLEVEL # $RUNLEVEL为缺省的运行模式,linux 共有7种运行模式,后续会介绍。
5 /etc/rc.d/rc.local # 相应级别服务启动之后、在执行该文件(其实也可以把需要执行的命令写到该文件中)
6 /sbin/mingetty # 等待用户登录在 /etc/rc.d/rc.local 文件中加入这几行代码
MYSQL_HOME=/usr/local/mysql PATH=$MYSQL_HOME/bin:$PATH source /root/.bash_profile mysqld_multi start
也许你很纳闷,reboot后还是不行,别急,是由于rc.local 这个文件的权限问题
#给 rc.local 文件可执行赋权限 chmod 770 /etc/rc.d/rc.local
再reboot试试,然后通过
ps -ef|grep mysqld 或查看端口 netstat -nlpt|grep 330
#查看状态
mysqld_multi report
#没有perl环境的,需要安装perl环境
yum -y install perl perl-devel
#再运行,发现已经有实例了
mysqld_multi report
#启动
mysqld_multi start
启动,分别修改密码,允许远程连接
mysql -u root -S /tmp/mysql.sock1 -p -P3307
mysql -u root -S /tmp/mysql.sock2 -p -P3308
#注意,密码初始化的时候,自己记录一下,不知道怎么记录的,先看下单实例安装
允许远程连接
set password = 'root1234%';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root1234%';
flush privileges;