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 #配置文件
流程:
- 做好准备,准备好用户名,用户组,依赖包
libaio - 到想要安装的位置进行解压
- 权限设置,将安装目录以及数据存储目录的所属用户和所属变更为
mysql - 数据库初始化,使用命令
/usr/local/mysql/scripts/mysql_install_db(mysql前面的路径可以自定义)- 如果
/etc/my.cnf文件不存在,则会安装到默认路径/var/lib/mysql/,如果存在则按照配置文件中的配置安装 mysql_install_db脚本中有一行命令是./bin/my_print_defaults- 如果不使用
--basedir来指定根目录,那么执行mysql_install_db时就要在mysql的安装根目录下才行
- 如果不使用
- 必须带
--user=xxx,这样才能在启动时正常生成.pid文件,不然会报错
- 如果
- 启动
mysql server,使用命令/usr/local/mysql/support-file/mysql.server start- 该命令会默认
mysql安装目录为/usr/local/services/mysql/,如果你的安装目录不是,该命令就需要使用到/etc/my.cnf文件,如果文件不存在会报错。第四步初始化时也可以设置--datadir,如果设置要特别注意和my.cnf中的保持一致 - 这个时候会需要
.pid文件,如果在初始化中不指明--user=xxx,这里会报错
- 该命令会默认
- 将
mysql加入到环境变量中export PATH=$PATH:/usr/local/mysql/bin
完整的命令
/usr/local/mysql/scripts/install_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/因为我执行命令时在 /root/ 目录下,所以加了 –basedir 来避免报错
/usr/local/mysql/support-file/mysql.server start
可能碰到的问题
权限问题
mysql默认使用的用户和用户组都是mysql,在linux下需要确保mysql用户和用户组是存在的,且涉及到mysql读写的文件目录需要变更所属用户和所属组,这里的文件目录一般就是mysql的安装目录以及mysql数据存储目录顺序问题
在数据库初始化之前要配置好
my.cnf文件,最佳实践是将安装目录下的my.cnf复制到/etc/my.cnf下配置文件条目
常规配置包括(其中的路径可以随意指定):[mysqld] basedir = /usr/local/mysql datadir = /data/mysql socket = mysql.sock port = 3306 pid-file = mysql.pid log-error = mysql.errbasedir
这是软件的安装路径,结合 1 中所说的权限问题,需要将/usr/local/mysql的所属用户和所属组变更为mysql:mysqldatadir
这是数据库的数据存放地址,初始化生成的一些数据也会放置在该文件夹下pid-file
pid文件的路径是基于datadir的,如上,最终的 pid 文件路径会是:/data/mysql/mysql.socklog-error也是一样root 密码变更
一般情况下,
mysql正常安装之后,可以使用root进行无密码登录。有的情况下会随机生成一个密码,存放在log文件中,在上诉的配置下,就是在/data/mysql/mysql.err中。除了这两种情况之外,还有一种新情况,生成了root密码但又找不到,类似于忘记了root密码。这样的情况下,需要先停掉
mysql server然后在特定条件--skip-grant-tables下启动。停掉 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密码。将新的命令加入到环境变量中
#该命令查看当前环境变量 echo $PATH #将 mysql 加入到环境变量中 export PATH=$PATH:/usr/local/mysql/bin/
本作品采用《CC 协议》,转载必须注明作者和本文链接
关于 LearnKu