最近购买了一个阿里云的ESC,操作系统是CentOS7,小项目,不想多花钱再买一个云数据库,所以直接在这个服务器上安装mysql。由于之前我都是自己下载安装RedHat Enterprise版本的系统,服务器上的各种软件也都是自己下载安装的,本以为可以很顺利的安装完成,毕竟CentOS跟Redhat非常接近。但不曾想到碰到了一堆问题。特别别对于mysql的安装更是耗费了我一天的时间,真是被坑的不清。网上也有很多linux安装mysql的问题,但很多文章的解决方法都是相似,而且不能解决问题,经过思考摸索,查看mysql官方文档,我找到了一些更简单的方法,实践操作有效。
软件环境:CentOS7, mysql 5.6.32。
从官网下载mysql rpm包,解压安装,安装过程中出错,报与mariadb文件冲突。不同于Redhat操作系统,CentOS默认安装的是mariadb数据库,需先将其卸载,再进行安装。
安装完成后,运行servcie mysql start命令启动mysql但启动失败。这个问题是整个安装过程最麻烦的一个问题。问题的解决过程如下:
首先根据报错Starting MySQL. ERROR! The server quit without updating PID file (/var/lib/mysql/iZ237ajgbr6Z.pid).,查看/var/lib/mysql/xxxxx.pid文件,实际生成的是/var/lib/mysql/xxxxx.err文件。文件中关键报错信息:can't open the mysql plugin table,以及table 'mysql.user' doesn't exist。到mysql的数据目录中查看,确实没有任何msyql自带的数据库。根据阿里云以及网上的文章,这是因为mysql的数据库没有初始化,需执行mysql_install_db可执行文件初始化数据库(在我的系统环境下该可执行文件在/usr/bin/文件夹里,而网上的是在mysql/scripts下,所以不同的环境、软件安装包,mysql的一些执行文件路径可能会不一样)。初始化数据库并且制定datadir和basedir语句如下:
#./mysql_install_db --verbose --user=root --defaults-file=/etc/my.cnf --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql --tmpdir=/tmp
按照此语法我却执行失败。在网上寻找解决其他方法,并且尝试更换rpm包,都无果。遂查看mysql官方文档,看是否因为mysql版本不同,安装方式也有所不同。然而对于rpm包的安装,就只有那么简单的几条命令。重新思考mysql报错的原因,我把问题锁定在mysql未初始化数据库上,并查看mysql_install_db的使用方法,结果发现一个重要的信息
此文档中说了三个点很重要:
看到Perl这个字眼的时候我突然想起,在先前的安装过程中,确实有缺少Perl Module的报错,但我运行yum install安装Perl,安装过程中也报错了,我再运行rpm查看Perl是否安装时,看到有许多Perl的程序安装了,于是抱着试试想法,在此安装mysql,结果显示Complete,但却无法启动mysql。于是我回头看了下mysql的安装结果信息,发现了一个重要的报错被我忽视了:FATAL ERROR: please install the following Perl modules before executing /usr/bin/mysql_install_db。错误明确提示了要在运行mysql_install_db前安装Perl Modules。然后,我看了下我之前顺利安装mysql的服务器,Redhat已经给我默认安装了Perl,而阿里云的CentOS并没有安装,这也就是为什么我之前没有碰到此问题的原因。我猜测只要安装了Perl modules,mysql其实是会自动执行mysql_install_db初始化数据库的,根本不需要我人为去执行那麻烦的初始化语句。
根据猜测,我先安装了Perl Modules。先用yum list查找module:#yum list | grep -i perl-module*。然后安装perl-module:# yum install -y perl-Module-Install.noarch。
之后把mysql卸载,再重新安装。成功,并且可以启动mysql服务。
最后使用mysql命令连接数据库,提示出错,无mysql命令,因为未安装mysql-client客户端,导致无法连接数据库,安装后问题解决。
吸取今天问题的教训,总结如下几点:
1、mysql安装完成后的Complete!提示,不代表就真的安装成功了,要看看整个安装过程是否有报错,如FATAL_ERROR.
2、对于一些报错的解决,还是要多参考官方文档,这会比单纯的百度解决问题要更好更快。
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。