Linux 下安装 MySQL-5.6.24.tar.gz

背景介绍

因为业务稳定性上面的考量,采用的安装方式是从服务器上打包,然后直接搬运到新服务器上解压使用。

在这个过程中,碰到了一些问题,本文做一些记录。

安装过程

Mysql 有一个默认的安装路径,在 mysql/support-files/mysql.server 的注释中有说明,期望的安装路径是 /usr/local/services/mysql,如果不是安装在这个路径,就需要自己在 my.cnf 文件中进行配置。

**.tar.gz 解压之后的文件包括

# bin//表明这是一个目录
mysql/
    bin/
    data/
    docs/
    include/
    lib/
    man/
    mysql-test/
    scripts/
    share/
    sql-bench/
    supports-file/
    README
    my.cnf
    my.default.cnf

其中需要关注的有这么一些目录和文件

    bin/    #存储相关命令
    data/   #储存数据
    scripts/    #初始化脚本
    support-file/  #启动脚本
    my.cnf #配置文件

流程:

  1. 做好准备,准备好用户名,用户组,依赖包 libaio
  2. 到想要安装的位置进行解压
  3. 权限设置,将安装目录以及数据存储目录的所属用户和所属变更为 mysql
  4. 数据库初始化,使用命令/usr/local/mysql/scripts/mysql_install_db(mysql前面的路径可以自定义)
    1. 如果 /etc/my.cnf 文件不存在,则会安装到默认路径 /var/lib/mysql/,如果存在则按照配置文件中的配置安装
    2. mysql_install_db 脚本中有一行命令是 ./bin/my_print_defaults
      1. 如果不使用 --basedir 来指定根目录,那么执行 mysql_install_db 时就要在 mysql 的安装根目录下才行
    3. 必须带 --user=xxx,这样才能在启动时正常生成 .pid 文件,不然会报错
  5. 启动 mysql server,使用命令 /usr/local/mysql/support-file/mysql.server start
    1. 该命令会默认 mysql 安装目录为 /usr/local/services/mysql/,如果你的安装目录不是,该命令就需要使用到 /etc/my.cnf 文件,如果文件不存在会报错。第四步初始化时也可以设置 --datadir,如果设置要特别注意和 my.cnf 中的保持一致
    2. 这个时候会需要 .pid 文件,如果在初始化中不指明 --user=xxx,这里会报错
  6. mysql 加入到环境变量中
    export PATH=$PATH:/usr/local/mysql/bin

完整的命令

  1. /usr/local/mysql/scripts/install_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/

    因为我执行命令时在 /root/ 目录下,所以加了 –basedir 来避免报错

  2. /usr/local/mysql/support-file/mysql.server start

可能碰到的问题

  1. 权限问题

    mysql 默认使用的用户和用户组都是 mysql,在 linux 下需要确保 mysql 用户和用户组是存在的,且涉及到 mysql 读写的文件目录需要变更所属用户和所属组,这里的文件目录一般就是 mysql 的安装目录以及 mysql 数据存储目录


  2. 顺序问题

    在数据库初始化之前要配置好 my.cnf 文件,最佳实践是将安装目录下的 my.cnf 复制到 /etc/my.cnf


  3. 配置文件条目
    常规配置包括(其中的路径可以随意指定):

     [mysqld]
     basedir = /usr/local/mysql
     datadir = /data/mysql
     socket = mysql.sock
     port = 3306
     pid-file = mysql.pid
     log-error = mysql.err

    basedir
    这是软件的安装路径,结合 1 中所说的权限问题,需要将 /usr/local/mysql 的所属用户和所属组变更为 mysql:mysql

    datadir
    这是数据库的数据存放地址,初始化生成的一些数据也会放置在该文件夹下

    pid-file
    pid 文件的路径是基于 datadir 的,如上,最终的 pid 文件路径会是:/data/mysql/mysql.sock
    log-error 也是一样


  4. root 密码变更

    一般情况下,mysql 正常安装之后,可以使用 root 进行无密码登录。有的情况下会随机生成一个密码,存放在 log 文件中,在上诉的配置下,就是在 /data/mysql/mysql.err 中。除了这两种情况之外,还有一种新情况,生成了 root 密码但又找不到,类似于忘记了 root 密码。

    这样的情况下,需要先停掉 mysql server 然后在特定条件 --skip-grant-tables 下启动。


  5. 停掉 mysql server 服务

    本文因为是直接使用自己打包的 .tar.gz 来安装,所以无法借助操作系统提供的便捷管理功能,比如 service 或者 systemctl
    在这样的情况下,需要使用 kill 命令,手动的结束进程。ps -A|grep mysql 可以用来查找 PID,然后即可使用 kill -9 PID 命令。结束进程之后,重启 mysql server,使用 /usr/local/mysql/bin/mysqld_safe --skip-grant-tables & 重启服务,这个时候可以无密码进入,然后重设 root 密码。

  6. 将新的命令加入到环境变量中

     #该命令查看当前环境变量
     echo $PATH
    
     #将 mysql 加入到环境变量中
     export PATH=$PATH:/usr/local/mysql/bin/
本作品采用《CC 协议》,转载必须注明作者和本文链接

城里的野山参

讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!