当前位置:   article > 正文

centos7安装并启动多实例mysql数据库_centos mysql 多实例

centos mysql 多实例

本文根据网络多篇文章以及本人实践集合而成。主要参考文章来源:(39条消息) linux安装两个mysql(8.0和5.7),并同时使用_HetFrame的博客-CSDN博客

本次示例在一台centos7.9的虚拟机上安装并启动了mysql57和mysql8,在安装前,需要先清理环境上面已有的mysql服务,卸载方法比较简单,自行百度即可。话不多说,实践开始。

目录

一、下载mysql 8.0和mysql 5.7

二、安装

三、启动

四、登录

五、配置账号远程登录

六、将多个mysql实例加入开机自启动


一、下载mysql 8.0和mysql 5.7

mysql8下载地址:https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz    

mysql57下载地址:https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.41-linux-glibc2.12-x86_64.tar.gz

1、下载mysql 8.0

我使用的centos7,这里选择linux-generic,然后下载第一个,第一个解压就可以用了(.tar.xz)。

2.下载mysql 5.7

先选择以前的版本,同样下载第一个。

在这里插入图片描述

在这里插入图片描述

二、安装

1、解压并移动(这里使用mysql57,另一个操作相似,只改目录端口即可)

  1. tar -zxf mysql-5.7.41-linux-glibc2.12-x86_64.tar.gz
  2. mv mysql-5.7.41-linux-glibc2.12-x86_64 /usr/local/mysql57

2、配置mysql

mysql服务需要单独的用户,所以添加用户组及用户mysql

useradd mysql

修改文件所属用户用户组

chown mysql:mysql /usr/local/mysql57 -R

创建mysql57配置文件

我在mysql57目录下创建的my.cnf

  1. cd /usr/local/mysql57
  2. vim my.cnf

这里面就是具体的文件目录配置,以及端口号(相关端口需开放,或者关闭防火墙),具体如下所示

  1. # Settings user and group are ignored when systemd is used.
  2. # If you need to run mysqld under a different user or group,
  3. # customize your systemd unit file for mariadb according to the
  4. # instructions in http://fedoraproject.org/wiki/Systemd
  5. [mysqld]
  6. skip-grant-tables
  7. #skip-networking
  8. #mysql安装目录
  9. basedir=/usr/local/mysql57
  10. #mysql数据库目录
  11. datadir=/usr/local/mysql57/data
  12. #指定socket目录
  13. socket=/tmp/mysql57/mysql.sock
  14. #指定mysql57的端口
  15. port = 3306
  16. [mysqld_safe]
  17. #错误日志
  18. log-error=/usr/local/mysql57/data/error.log
  19. #pid文件
  20. pid-file=/usr/local/mysql57/data/mysqld.pid
  21. tmpdir=/tmp/mysql57
  22. #指定socket目录
  23. socket=/tmp/mysql57/mysql.sock
  24. #
  25. # include all files from the config directory
  26. #
  27. #!includedir /etc/my.cnf.d

根据如上配置,创建好相应的目录并赋权:

  1. cd /usr/local/mysql57
  2. mkdir data
  3. mkdir -p /tmp/mysql57
  4. chown -R mysql:mysql /usr/local/mysql57
  5. chown -R mysql:mysql /tmp/mysql57

3、初始化

这里需要手动设置两个路径以及用户,--initialize-insecure是不生成随机密码的方式,--initialize会在日志生成随机密码(由于上面my.cnf配置的跳过表权限,所以此处初始化使用的--initialize-insecure)

/usr/local/mysql57/bin/mysqld --initialize-insecure --datadir=/usr/local/mysql57/data --basedir=/usr/local/mysql57 --user=mysql

 

启动

本次示例使用mysqld_safe来启动服务。

编辑/usr/local/mysql57/support-files目录下的mysql.server文件

vi /usr/local/mysql57/support-files/mysql.server

编辑以下内容

  1. basedir=/usr/local/mysql57
  2. datadir=/usr/local/mysql57/data
  3. lockdir='/var/lock/subsys57'
  4. lock_file_path="$lockdir/mysql57"
  5. mysqld_pid_file_path=/usr/local/mysql57/data/mysqld.pid
  6. #搜索conf后再修改,这个在else语句里面
  7. conf=/usr/local/mysql57/my.cnf
  8. #搜索mysqld_safe后再修改,在mysqld_safe启动命令中添加--defaults-file和--port
  9. $bindir/mysqld_safe --defaults-file=/usr/local/mysql57/my.cnf --port=3306 --datadir="$datadir" --pid-file="$mysqld_pid_file_path" $other_args >/dev/null &

复制该文件到/etc/init.d目录,并重命名为mysql57

cp -i /usr/local/mysql57/support-files/mysql.server /etc/init.d/mysql57

启动mysql

service mysql57 start

重启mysql

service mysql57 restart

停止mysql

service mysql57 stop

查看mysql57是否启动:

service mysql57 status

其他版本的mysql也这样配置,只要设置好路径就共存(如需要再启动一个mysql8,从第二步安装开始,将上面路径中的mysql57替换为mysql8操作一遍即可)

登录

为方便登录数据库测试,将其中一个mysql写入环境变量中。

  1. vi /etc/profile
  2. #在/etc/profile文件中,将mysql追加到path后面,如
  3. export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/mysql57/bin

 执行source使环境变量生效

source /etc/profile

登录数据库:(注意:端口的参数P是大写,密码的参数p是小写,在要求输入密码那里直接回车即可)

mysql -h 本机ip -P 数据库监听端口 -uroot -p

五、配置账号远程登录

查询端口进行确认:

  1. mysql> show variables like 'port';
  2. +---------------+-------+
  3. | Variable_name | Value |
  4. +---------------+-------+
  5. | port | 3306 |
  6. +---------------+-------+
  7. 1 row in set (0.00 sec)

查询数据库版本:

  1. mysql> select @@version;
  2. +-----------+
  3. | @@version |
  4. +-----------+
  5. | 5.7.41 |
  6. +-----------+
  7. 1 row in set (0.00 sec)

修改root密码及远程登录:

  1. flush privileges;
  2. ALTER USER 'root'@'localhost' IDENTIFIED BY 'test';
  3. use mysql;
  4. update user set Host='%' where User='root';
  5. GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; ##该语句首次执行会报错,需要执行两次
  6. flush privileges;
  7. ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
  8. flush privileges;

、将多个mysql实例加入开机自启动

赋予mysql57可执行权限:

chmod +x /etc/init.d/mysql57

将mysql57加入开机自启动:

chkconfig --add /etc/init.d/mysql57

查看服务列表:

chkconfig --list

看到3、4、5状态为开或者为 on 则表示成功。如果是 关或者 off 则执行一下:chkconfig --level 345 mysql57 on

 重启虚拟机,验证开机自启服务是否正常:

  1. reboot
  2. #待虚拟机重启后,ps -ef和netstat看下mysql服务是否成功启动
  3. ps -ef|grep mysql
  4. netstat -anp|grep mysql

、按照上述步骤安装mysql8.0在启动数据库时报错,可参考以下配置

配置文件my.cnf:

[mysqld]
#配置关闭skip-grant-tables参数,在mysql8.0中,skip-grant-tables这个参数的作用是是否禁用远程连接服务器,与mysql57中的skip-networking参数作用是一样的
#skip-grant-tables关闭
#skip-grant-tables   
#skip-networking
#mysql安装目录
basedir=/mysql/mysql8_0
#mysql数据库目录
datadir=/mysql/mysql8_0/data
#指定socket目录
socket=/tmp/mysql8_0/mysql.sock
#指定mysql8_0的端口(默认为3306)
port = 4406
##指定mysql x协议端口,这是一个系统默认启用的一个插件相关的协议(默认为33060)
mysqlx-port=44060
#错误日志
log-error=/mysql/mysql8_0/data/error.log
#pid文件
pid-file=/mysql/mysql8_0/data/mysqld.pid
tmpdir=/tmp/mysql8_0
 
[mysqld_safe]
#错误日志
log-error=/mysql/mysql8_0/data/error.log
#pid文件
pid-file=/mysql/mysql8_0/data/mysqld.pid
tmpdir=/tmp/mysql8_0
#指定socket目录
socket=/tmp/mysql8_0/mysql.sock

另一个需要注意的点是,在mysql57的mysqld_safe启动命令中,我们写的用户是mysql,而在mysql8中,如果我们用root用户执行启动命令的话,我们就需要将启动脚本中的用户修改为root,而不是安装用户。

如:

[root@opengauss mysql8_0]# cat /etc/init.d/mysql8_0 |grep safe
    if test -x $bindir/mysqld_safe
      $bindir/mysqld_safe --defaults-file=/mysql/mysql8_0/my.cnf --port=4406 --datadir="$datadir" --pid-file="$mysqld_pid_file_path" --user=root $other_args >/dev/null &

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/409687
推荐阅读
相关标签
  

闽ICP备14008679号