Appearance
同一个服务器安装多个MySQL
1、新建用户组
mysql和用户mysql,用户不能用来登录
bash
groupadd mysql
# 用户名不一样,组一样
useradd -r -g mysql -s /bin/false mysql1
useradd -r -g mysql -s /bin/false mysql22、创建相关目录
这里所有的mysql都放在/data/mysql目录下,以mysql1、2、3...进行区分
bash
mkdir -p /data/mysql
mkdir -p /data/mysql/mysql1/logs
mkdir -p /data/mysql/mysql1/data
touch /data/mysql/mysql1/logs/mysqld-error.log
mkdir -p /data/mysql/mysql2/logs
mkdir -p /data/mysql/mysql2/data
touch /data/mysql/mysql2/logs/mysqld-error.log3、解压安装包 并进行重命名
bash
# 解压
tar -xvf mysql-8.0.31-el7-x86_64.tar
tar -xvf mysql-8.0.31-el7-x86_64.tar.gz
# 重命名
mv mysql-8.0.31-el7-x86_64 mysql
# 复制或移入MySQL,移入需要重新解压新的再重命名移入
mv /opt/mysql /data/mysql/mysql1
mv /opt/mysql /data/mysql/mysql24、在mysql8文件夹下新建用户级配置文件my.cnf
除了MySQL本身的文件所在的目录不同以外,my.cnf也要有单独的位置,因为其内容不一致
bash
touch /data/mysql/mysql1/my.cnf
vi /data/mysql/mysql1/my.cnf
touch /data/mysql/mysql2/my.cnf
vi /data/mysql/mysql2/my.cnf5、填充以下基础配置。可以将一些优化配置添加进去。
**mysql1:**my.cnf
[mysqld]
# 设置表名不区分大小写
lower_case_table_names=1
basedir=/data/mysql/mysql1/mysql
datadir=/data/mysql/mysql1/data
socket=/data/mysql/mysql1/mysql.sock
# 自定义服务端口
port=31309
# 修改数据库日志时间格式
log_timestamps=SYSTEM
sql_mode=NO_ENGINE_SUBSTITUTION
# 以下是优化项 视情况修改添加
wait_timeout=2880000
max_allowed_packet=128M
[mysqld_safe]
log-error=/data/mysql/mysql1/mysqld-error.log**mysql2:**my.cnf
bash
[mysqld]
# 设置表名不区分大小写
lower_case_table_names=1
basedir=/data/mysql/mysql2/mysql
datadir=/data/mysql/mysql2/data
socket=/data/mysql/mysql2/mysql.sock
# 自定义服务端口
port=32309
# 修改数据库日志时间格式
log_timestamps=SYSTEM
sql_mode=NO_ENGINE_SUBSTITUTION
# 以下是优化项 视情况修改添加
wait_timeout=2880000
max_allowed_packet=128M
[mysqld_safe]
log-error=/data/mysql/mysql2/mysqld-error.log6、权限处理
用户不一致,组一致
drwxr-xr-x. 5 mysql1 mysql 98 4月 25 15:04 mysql1 drwxr-xr-x. 5 mysql2 mysql 98 4月 25 15:04 mysql2
bash
# 为用户的添加文件夹的权限
chown -R mysql1:mysql /data/mysql/mysql1
# 对文件夹的赋权
chmod 750 /data/mysql/mysql1/data
# 为用户的添加文件夹的权限
chown -R mysql2:mysql /data/mysql/mysql2
# 对文件夹的赋权
chmod 750 /data/mysql/mysql2/data初始化mysql,获取root临时密码。
bash
# 初始化mysql
cd /data/mysql/mysql1/mysql
./bin/mysqld --defaults-file=/data/mysql/mysql1/my.cnf --initialize --user=mysql1 --port=31306
cd /data/mysql/mysql2/mysql
./bin/mysqld --defaults-file=/data/mysql/mysql2/my.cnf --initialize --user=mysql2 --port=32306bash# 执行日志如下 [root@mysql mysql]# ./bin/mysqld --defaults-file=/data/mysql/mysql1/my.cnf --initialize --user=mysql1 --port=31306 2024-04-25T15:02:44.533593+08:00 0 [System] [MY-013169] [Server] /data/mysql/mysql1/mysql/bin/mysqld (mysqld 8.0.31) initializing of server in progress as process 96282 2024-04-25T15:02:44.567540+08:00 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started. 2024-04-25T15:02:46.017168+08:00 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended. 2024-04-25T15:02:47.784869+08:00 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: *u%Wcan5jN5l [root@mysql mysql]# ./bin/mysqld --defaults-file=/data/mysql/mysql2/my.cnf --initialize --user=mysql2 --port=32306 2024-04-25T15:02:44.277178+08:00 0 [System] [MY-013169] [Server] /data/mysql/mysql2/mysql/bin/mysqld (mysqld 8.0.31) initializing of server in progress as process 96281 2024-04-25T15:02:44.313146+08:00 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started. 2024-04-25T15:02:45.924892+08:00 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended. 2024-04-25T15:02:48.129332+08:00 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: Fp>uy-V/G2<H
[Note] [MY-010454] [Server] A temporary password is generated for root@localhost: zpjhj;4.<Dmp,密码中存在特殊字符时,可以用单引号直接包裹密码。
7、启动Mysql服务
bash
# 启动mysql服务
cd /data/mysql/mysql1/mysql
./bin/mysqld_safe --defaults-file=/data/mysql/mysql1/my.cnf --user=mysql1 --port=31306 &
cd /data/mysql/mysql2/mysql
./bin/mysqld_safe --defaults-file=/data/mysql/mysql1/my.cnf --user=mysql2 --port=32306 &8、登录Mysql,支持远程登录
sql
# 使用临时密码登录
cd /data/mysql/mysql1/mysql
./bin/mysql -h127.0.0.1 -uroot -p -P31306 # 需要输入密码
cd /data/mysql/mysql2/mysql
./bin/mysql -h127.0.0.1 -uroot -p -P32306 # 需要输入密码
# 修改root初始化密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
flush privileges;
exit
cd /data/mysql/mysql1/mysql
./bin/mysql -h127.0.0.1 -uroot -p -P31306 # 需要输入新密码
cd /data/mysql/mysql2/mysql
./bin/mysql -h127.0.0.1 -uroot -p -P32306 # 需要输入新密码
# 使root支持远程登录
use mysql;
update user set host='%' where user='root';
flush privileges;注册成系统服务并自启动
bash
# mysqld服务到系统
# ===== MySQL1 =====
cd /data/mysql/mysql1/mysql
cp -a ./support-files/mysql.server /etc/init.d/mysql1
# 授权以及添加服务
chmod +x /etc/init.d/mysql1
chkconfig --add mysql1
service mysql1 start
service mysql1 status
/etc/init.d/mysql1:
# 约46、47
basedir=/data/mysql/mysql1/mysql
datadir=/data/mysql/mysql1/data
# 约207
conf=/data/mysql/mysql1/my.cnf
# 约234
if test -r "/data/mysql/mysql1/my.cnf"
# 约236
extra_args="-e /data/mysql/mysql1/my.cnf"
# 约266行 --user=mysql1
$bindir/mysqld_safe --datadir="$datadir" --user=mysql1 --pid-file="$mysqld_pid_file_path" $other_args >/dev/null &
# ===== MySQL2 =====
cd /data/mysql/mysql2/mysql
cp -a ./support-files/mysql.server /etc/init.d/mysql2
# 授权以及添加服务
chmod +x /etc/init.d/mysql2
chkconfig --add mysql2
service mysql2 start
service mysql2 status
service mysql2 stop
/etc/init.d/mysql2:
# 约46、47
basedir=/data/mysql/mysql2/mysql
datadir=/data/mysql/mysql2/data
# 约207
conf=/data/mysql/mysql2/my.cnf
# 约234
if test -r "/data/mysql/mysql2/my.cnf"
# 约236
extra_args="-e /data/mysql/mysql2/my.cnf"
# 约266行 --user=mysql2
$bindir/mysqld_safe --datadir="$datadir" --user=mysql1 --pid-file="$mysqld_pid_file_path" $other_args >/dev/null &卸载mysql
查看mysql运行状态
service mysql1 status
service mysql2 status停止mysql运行,如果没有运行则跳过。
service mysql1 stop
service mysql2 stop查询是否有mysql
rpm -qa|grep -i mysql结果
perl-DBD-MySQL-4.023-5.el7.x86_64删除
rpm -ev perl-DBD-MySQL-4.023-5.el7.x86_64 --nodeps查出MySQL相关的文件/文件夹,逐一删除
find / -name mysql同时删除日志文件。
rm -rf /data/mysql-sd/logs/mysql8删除用户、用户组
userdel mysql
groupdel mysql