由于这里是实现mysql多实例,所以安装的话这里就不做过多的讲解了,如果有需要可以看看其他博主的安装教程(mysql的yum源可在mysql官网下载rpm包进行安装)
MySQL :: Download MySQL Yum Repository
前导部分
首先要安装好mysql,我这边是使用yum源安装的
所以就直接yum -y install mysql-server mysql
安装完成后查看一下服务的状态
MySQL的服务名称是mysqld,
所以要用systemctl status mysqld查看一下状态
注意:防火墙和selinux都需要关闭!
systemctl status firewalld
这是防火墙在运行
使用 systemctl stop firewalld 暂时关闭防火墙(重启后失效)
永久关闭防火墙
systemctl disable firewalld
查看一下selinux状态
getenforce
临时关闭selinux
getenforce 0
永久关闭selinux(建议永久关闭,不然下次启动又要重新设置)
先进入selinux配置文件
vim /etc/selinux/config
进入到配置文件
进行修改
进行实例化的操作
创建mysql实例目录
mkdir -p /data/mysql/330{6,7}/{data,logs,conf,socket,pid}
结构如下:
你们不一定有tree这个指令,只要文件夹结构对了就行了,这个不重要。
设置目录属主属组
chown -R mysql:mysql /data/mysql
查看一下
这里可以看出属主属组都是mysql
备份一下mysql的原配置文件
mv /etc/my.cnf /etc/my.cnf_bak
新增配置文件my3306.cnf
vim /data/mysql/3306/conf/my.cnf
[mysqld]
user = mysql
port = 3306
server_id = 3306
datadir = /data/mysql/3306/data
socket = /data/mysql/3306/socket/mysql.sock
symbolic-links = 0
log-error = /data/mysql/3306/logs/mysqld.log
pid-file = /data/mysql/3306/pid/mysqld.pid
复制一份到3307端口
cp /data/mysql/3306/conf/my.cnf /data/mysql/3307/conf/my.cnf
修改一下文件内所有3306的内容为3307
sed -i 's/3306/3307/g' /data/mysql/3307/conf/my.cnf
查看一下3307的配置文件
cat /data/mysql/3307/conf/my.cnf
[mysqld]
user = mysql
port = 3307
server_id = 3307
datadir = /data/mysql/3307/data
socket = /data/mysql/3307/socket/mysql.sock
symbolic-links = 0
log-error = /data/mysql/3307/logs/mysqld.log
pid-file = /data/mysql/3307/pid/mysqld.pid
备份一下服务的启动服务文件
mv /usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/mysqld.service_bak
新增mysqld3306.service启动文件
vim /usr/lib/systemd/system/mysqld3306.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
Type=forking
PIDFile=/data/mysql/3306/pid/mysqld.pid
TimeoutSec=0
PermissionsStartOnly=true
#ExecStartPre=/usr/bin/mysqld_pre_systemd_3306 3306
ExecStart=/usr/sbin/mysqld --defaults-file=/data/mysql/3306/conf/my.cnf --daemonize --pid-file=/data/mysql/3306/pid/mysqld.pid $MYSQLD_OPTS
EnvironmentFile=-/etc/sysconfig/mysql
LimitNOFILE = 5000
Restart=on-failure
RestartPreventExitStatus=1
PrivateTmp=false
新增mysqld3307.service启动文件
cp /usr/lib/systemd/system/mysqld3306.service /usr/lib/systemd/system/mysqld3307.service
修改mysql服务文件的文件目录
sed -i 's/3306/3307/g' /usr/lib/systemd/system/mysqld3307.service
查看内容
cat /usr/lib/systemd/system/mysqld3307.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
Type=forking
PIDFile=/data/mysql/3307/pid/mysqld.pid
TimeoutSec=0
PermissionsStartOnly=true
#ExecStartPre=/usr/bin/mysqld_pre_systemd_3307 3307
ExecStart=/usr/sbin/mysqld --defaults-file=/data/mysql/3307/conf/my.cnf --daemonize --pid-file=/data/mysql/3307/pid/mysqld.pid $MYSQLD_OPTS
EnvironmentFile=-/etc/sysconfig/mysql
LimitNOFILE = 5000
Restart=on-failure
RestartPreventExitStatus=1
PrivateTmp=false
初始化多实例3306,3307
mysqld --defaults-file=/data/mysql/3306/conf/my.cnf --initialize --user=mysql --datadir=/data/mysql/3306/data
mysqld --defaults-file=/data/mysql/3307/conf/my.cnf --initialize --user=mysql --datadir=/data/mysql/3307/data
启动多实例3306,3307
查看一下mysql的服务
netstat -nutpl | grep mysql
ps -ef | grep mysql
到这里就差不多搞定了
mysql实例登录的方法
mysql登录的话先找到临时密码
cat /data/mysql/3306/logs/mysqld.log | grep password
由于我之前操作失误了忘记删除l日志文件导致之前的临时密码依旧存在所以有俩个临时密码,但是第一个已经失效了。大家不用管。
然后登录
mysql -P 3306 -S /data/mysql/3306/socket/mysql.sock -uroot -p'hX>&f%Rqq3P+'
这样登录成功了!
另外一个实例也同样按照此方法登录
进入后无法操作数据库,必须要修改密码:
ALTER USER 'root'@'localhost' identified by "Mysql@2023";
显示ok就代表修改密码成功了。