linux机器(宝塔面板)安装多版本mysql,并设置开机自启

113 阅读2分钟

下载安装包

下载链接

mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz

解压然后移动到想要安装的目录

tar -zxvf /www/mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.7.44-linux-glibc2.12-x86_64/ mysql5.7

创建数据库存放目录 并指定用户及用户组

mkdir data57
chown mysql:mysql data57/ -R
指定mysql安装目录用户组 参照已有mysql
chown root:mysql mysql5.7/ -R

配置文件 以版本号区分my57.cnf

1.直接创建并修改配置文件,配置端口及socket文件路劲、basedir/datadir等

[client]
#password       = your_password
port            = 3307
socket          = /tmp/mysql57.sock

[mysqld]
port            = 3307
socket          = /tmp/mysql57.sock
basedir = /www/server/mysql5.7
datadir = /www/server/data57
...
...
[mysql]
socket          = /tmp/mysql57.sock
no-auto-rehash

[myisamchk]
key_buffer_size = 64M
sort_buffer_size = 1M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout

将mysql安装目录的mysql.server 同步到/etc/init.d/下 以便于管理mysql5.7服务

对应修改mysql.server 中的basedir/datadir等配置

if test -z "$basedir"
then
  basedir=/www/server/mysql5.7  配置为当前新版本mysql的安装目录
  bindir=/www/server/mysql5.7/bin
  if test -z "$datadir"
  then
    datadir=/www/server/mysql5.7/data
  fi
  sbindir=/www/server/mysql5.7/bin
  libexecdir=/www/server/mysql5.7/bin
else
  bindir="$basedir/bin"
  if test -z "$datadir"
  then
    datadir="$basedir/data"
  fi
  sbindir="$basedir/sbin"
  libexecdir="$basedir/libexec"
fi
...
...
...
conf=/etc/my57.cnf  直接配置conf变量,以免启动报错
# Get arguments from the my.cnf file,
# the only group, which is read from now on is [mysqld]
if test -x "$bindir/my_print_defaults";  then
  print_defaults="$bindir/my_print_defaults"
else
  # Try to find basedir in /etc/my.cnf
  print_defaults=
  if test -r $conf
  then
    subpat='^[^=]*basedir[^=]*=\(.*\)$'
    dirs=`sed -e "/$subpat/!d" -e 's//\1/' $conf`
    for d in $dirs
    do
      d=`echo $d | sed -e 's/[  ]//g'`
      if test -x "$d/bin/my_print_defaults"
      then
        print_defaults="$d/bin/my_print_defaults"
        break
      fi
    done
  fi

  # Hope it's in the PATH ... but I doubt it
  test -z "$print_defaults" && print_defaults="my_print_defaults"
fi


2 .或从其他地方同步至当前服务器

[root@localhost etc]# rsync -av my57.cnf root@*****:/etc/
同步 mysql.server文件,此文件应该没啥用,跟/etc/init.d/下的文件一样,自启动用的
[root@localhost support-files]# rsync -av mysql.server root@*****:/www/
[root@localhost init.d]# rsync -av mysql5.7 root@*****:/etc/init.d/

初始化mysql

/www/server/mysql5.7/bin/mysqld --defaults-file=/etc/my57.cnf --basedir=/www/server/mysql5.7 --datadir=/www/server/data57 --initialize --user=mysql
初始化后,会出现临时的root密码(下最后一行) 记录 然后登录mysql
...
2024-05-20T06:19:10.812967Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2024-05-20T06:19:11.820634Z 0 [Warning] A deprecated TLS version TLSv1 is enabled. Please use TLSv1.2 or higher.
2024-05-20T06:19:11.820653Z 0 [Warning] A deprecated TLS version TLSv1.1 is enabled. Please use TLSv1.2 or higher.
2024-05-20T06:19:11.823871Z 0 [Warning] CA certificate ca.pem is self signed.
2024-05-20T06:19:12.115757Z 1 [Note] A temporary password is generated for root@localhost: po#2lp9s/epF

启动mysql

创建了/etc/init.d/mysql5.7 可以用service xxx 来启动

service mysql5.7 start

登录mysql 并改密码 初始密码有时效性

执行以下命令 然后登录 好像跟用localhost连接有关

/www/server/mysql5.7/bin/mysql_config_editor set --socket=/tmp/mysql57.sock
[root@localhost bin]# mysql -hlocalhost -P3307 -uroot -ppo#2lp9s/epF
进入后 执行
alter user 'root'@'localhost' identified by '您的root密码';

此时,应该可以用视图工具连接mysql了

设置开机启动mysql5.7

chkconfig --list
chkconfig --add mysql5.7
chkconfig  mysql5.7 On