快捷搜索: 王者荣耀 脱发

【Mysql】Linux环境下安装多个mysql

一、需求说明

在Linux服务器上安装多个mysql,供测试数据库性能或者对不同系统平台提供不同的数据库使用。

这里以安装同一版本mysql不同端口号为例,在同一台服务器安装两个端口号分别为3306和3307的mysql库。

二、环境说明

1、mysql版本:mysql-5.7.39

2、linux系统版本:centos7.6

3、位置规划:

mysql_3306: /opt/softWare/mysql3306

mysql_3307: /opt/softWare/mysql3307

三、删除mariadb数据库

这个数据库和mysql数据库同时存在会在安装时报错;

#查看是否存在mariadb数据库
rpm -qa|grep mariadb

#删除
rpm -e --nodeps mariadb文件名全称

#例如:
rpm -e --nodeps mariadb-libs-5.5.44-2.el7.centos.x86_64

四、安装步骤

这里以mysql_3306为例进行安装;

1、解压

tar -zxvf mysql-5.7.39-linux-glibc2.12-x86_64.tar.gz

2、重命名

mv mysql-5.7.39-linux-glibc2.12-x86_64 mysql3306

3、新建数据存放目录

mkdir -p mysql3306/data

4、添加用户、用户组

groupadd mysql useradd -r -g mysql mysql

5、新建cnf文件

vim mysql3306/my3306.cnf
[mysqld]
bind-address=0.0.0.0
port=3306
user=mysql
basedir=/opt/softWare/mysql3306
datadir=/opt/softWare/mysql3306/data
socket=/opt/softWare/mysql3306/data/mysql.sock
log-error=/opt/softWare/mysql3306/data/mysql.err
character_set_server=utf8mb4
symbolic-links=0
explicit_defaults_for_timestamp=true

[mysqld_safe]
log-error=/var/log/mysqld3306.log
pid-file=/var/run/mysqld/mysqld3306.pid

[client]
socket=/opt/softWare/mysql3306/data/mysql3306.sock
 
[mysqldump]
socket=/opt/softWare/mysql3306/data/mysql3306.sock
  
[mysqladmin]
socket=/opt/softWare/mysql3306/data/mysql.sock

#
# include all files from the config directory
#
!includedir /etc/my.cnf.d

6、初始化mysql

.bin/mysqld --defaults-file=/opt/softWare/mysql3306/my3306.cnf --basedir=/opt/softWare/mysql3306 --datadir=/opt/softWare/mysql3306/data --user=mysql --initialize

注意:这里写的位置要和cnf里面的位置对应,尤其路径后面是否有多余斜杠"/"。路径不一致在启动mysql的时候会报如下错误:

2023-02-08T09:34:18.899057Z 0 [ERROR] Fatal error: Cant open and lock privilege tables: Table mysql.user doesnt exist
2023-02-08T09:34:18.899068Z 0 [ERROR] Fatal error: Failed to initialize ACL/grant/time zones structures or failed to remove temporary table files.
2023-02-08T09:34:18.899096Z 0 [ERROR] Aborting

7、启动mysql

.bin/mysqld_safe --defaults-file=/opt/softWare/mysql3306/my3306.cnf &

注意:这里如果启动不成功需要对日志进行排查,常见错误为:

Cant start server: cant check PID filepath: No such file or directory

解决办法:在my3306.cnf的文件中查看pid-file的位置,创建对应的目录并修改777权限 ;

8、查看默认密码

cat /opt/softWare/mysql3306/data/mysql.err

9、登录mysql并修改密码

#登录
mysql -S /opt/softWare/mysql3306/data/mysql.sock  -P 3306 -u root -p
#重设密码
SET PASSWORD = PASSWORD(123456);
#赋予远程登录权限
GRANT ALL PRIVILEGES ON *.* TO root@% IDENTIFIED BY 123456 WITH GRANT OPTION;
#生效
flush privileges;

以上就是以3306端口号为例的安装,3307端口的mysql安装同上。

10、关闭数据库

.bin/mysqladmin -S /opt/softWare/mysql3306/data/mysql.sock -u root shutdown -p
或者
.bin/mysqladmin -S /opt/softWare/mysql3306/data/mysql.sock -P 3306 -u root shutdown -p

注意:kill -9 pid 在这里时kill不掉mysql进程,需要使用上面语句关闭数据库。数据库关闭之后再启动需要执行下面语句:

.bin/mysqld_safe --defaults-file=/opt/softWare/mysql3306/my3306.cnf &
经验分享 程序员 微信小程序 职场和发展