1.背景
最近得到一份文档,上面写了用binary文件在centos上安装mysql的全过程,按照文档的步骤安装,最后发现mysql总是启动不起来,原因也找不到。
把解压文件
tar -zxvf mysql-5.7.32-linux-glibc2.12-x86_64.tar.gz
重命名方便操作
mv mysql-5.7.32-linux-glibc2.12-x86_64 mysql-5.7.32
安装数据库
1)添加系统mysql组和mysql用户
groupadd mysql
useradd -r -g mysql mysql
#useradd -r参数表示mysql用户是系统用户,不可用于登录系统
2)创建data目录
cd mysql-5.7.32
mkdir data
3)将/usr/local/mysql-5.7.32 的所有者及所属组改为mysql
chown -R mysql.mysql /usr/local/mysql-5.7.32
3)在/usr/local/mysql-5.7.32/support-files目录下创建touch my_default.cnf
输入以下内容:
----------------------------------------------------------------------------------
[mysqld]
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
basedir = /usr/local/mysql-5.7.32
datadir = /usr/local/mysql-5.7.32/data
port = 3306
socket = /tmp/mysql.sock
character-set-server=utf8
max_allowed_packet = 4M(默认1M或4M)
log-error = /usr/local/mysql-5.7.32/data/mysqld.log
pid-file = /usr/local/mysql-5.7.32/data/mysqld.pid
---------------------------------------------------------------------------
4)返回上级拷贝覆盖原配置文件,如果提示是否覆盖,y
cp /usr/local/mysql-5.7.32/support-files/my_default.cnf /etc/my.cnf
5)初始化 mysqld
cd /usr/local/mysql-5.7.31
./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql-5.7.32/ --datadir=/usr/local/mysql-5.7.32/data/
6)初始化完成之后,查看日志,初始密码
cat /usr/local/mysql-5.7.32/data/mysqld.log
把启动脚本放到开机初始化目录
cp support-files/mysql.server /etc/init.d/mysql (文件复制到这里,可以通过service mysql start来启动了)
7)启动mysql服务
service mysql start
登录mysql,密码为初始密码
cd /usr/local/mysql-5.7.32
./bin/mysql -u root -p
# 输入上面的临时密码
8)修改密码
mysql> set password=password('root');
mysql> grant all privileges on *.* to root@'%' identified by 'root';(此步骤最好不要使用)
mysql> flush privileges;
安装到最后用systemctl start mysqld时总是报错,报错集中在两部分,一是报service unit not found,二是报update pid file错误。从这种错误无法判断是哪里出了问题,并且错误日志文件无法找到(提示的错误文件在相应的目录下无法找到)。
部署使用的系统版本是centos7.8,mysql版本是8.0.23。初步怀疑可能是以下几个点:
(1)mysql版本不对,部署文档使用的是mysql5.7,8.0的版本二进制文件部署方式可能不一样;
(2)权限不足,为mysql服务赋予的权限不足导致mysql启动不起来;
(3)操作步骤问题。
基于以上的问题,重新装了一个虚拟机并装了centos7.8,使用mysql8.x的二进制文件按上述文档又试了一遍,这次给予mysql root权限,发现问题仍然存在,所以怀疑是部署文档存在错误。其实部署文档和官方的部署手册差别并不是很大,所以这一点又值得怀疑。
2.解决方法
既然二进制文件的方式行不通,那么就考虑其他安装方式。最后通过yum repository的方式安装成功。但这种方法在服务器上安装时又遇到了问题,因为这种方式需要在线下载安装包,而服务器下载的太慢了。最后采用的方式是下载rpm包直接安装,省去在线下载的过程。这种方法终于可以行得通了。