此文介绍的是使用rpm的方式安装mysql,并不涉及到yum,如需查找yum方式的同学可跳过此文。
1、安装环境:
操作系统:CentOS 7 x64
数据库:MySQL 5.6
2、卸载MariaDB
在CentOS 7版本之后,系统自带的数据库不再是MySQL,而是MariaDB,MariaDB其实是MySQL的一个分支,主要由开源社区维护,并采用GPL授权许可。
开发这个分支的主要原因之一是:Oracle收购MySQL后,有将MySQL闭源的风险,因此开源社区采用分支的方式来避开这个风险。
MariaDB的目标是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的替代品。
查看当前的MariaDB包:
#rpm -qa | grep mariadb
并将其所有包都卸载:
#rpm -e --nodeps mariadb-*
3、安装MySQL
使用该命令安装server,-ivh 后面是文件名
# rpm -ivh MySQL-server-advanced-5.6.24-1.el7.x86_64.rpm
此版本的mysql的默认配置文件在/usr/my.cnf,控制台输出有说明。
如果mysql已经启动,可通过以下命令验证
ps -aux | grep mysqld
通过该命令安装client
# rpm -ivh MySQL-client-advanced-5.6.24-1.el7.x86_64.rpm
注意:如果安装的时候出现以下错误:
FATAL ERROR: please install the following Perl modules before executing /usr/bin/mysql_install_db:Data::Dumper
那么可以使用
#yum install -y perl-Module-Install.noarch
来解决
4、启动MySQL服务
在启动之前,需要先将selinux关闭,在CentOS中selinux会默认开启,如果开启了selinux,启动MySQL会报ERROR!The server quit without updating PID file的错误
打开/etc/selinux/config,将SELINUX=enforcing改为SELINUX=disabled,保存退出。
还有一个步骤就是初始化
使用该命令初始化数据库即可
#mysql_install_db --user=mysql
之后就可以开启数据库服务了
CentOS 7版本后,服务开启的方法是systemctl start mysql,但试过用老的方法service mysqld start也可以
之后就可以使用以下命令更改数据库密码了
#mysqladmin -u root password '123456'
更改完密码之后就可以mysql -uroot -p登录了
5、以下贴出一些较常见的问题和解决方案
问题一:
[root@localhost install-files]# rpm -ivh MySQL-server-5.6.27-1.el6.x86_64.rpm
Preparing... ################################# [100%]
file /usr/share/mysql/charsets/README from install of MySQL-server-5.6.27-1.el6.x86_64 conflicts with file from package mariadb-libs-1:5.5.41-2.el7_0.x86_64
file /usr/share/mysql/czech/errmsg.sys from install of MySQL-server-5.6.27-1.el6.x86_64 conflicts with file from package mariadb-libs-1:5.5.41-2.el7_0.x86_64
……………………
解决方案:
出现以上安装错误列表的原因是:系统已经安装了其他版本的mysql-libs包和mysql数据库文件导致不兼容。
[root@localhost install-files]# yum remove mysql-libs
执行之后,还要详细检查卸载MySQL安装的所有文件,否则在后续安装发生各种错误,关于卸载,可以参考这篇文章:http://blog.csdn.net/typa01_kk/article/details/49057073
问题二:
[root@Tony_ts_tian developer]# rpm -ivh MySQL-server-5.5.46-1.el6.x86_64.rpm
warning: MySQL-server-5.5.46-1.el6.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
Preparing... ########################################### [100%]
1:MySQL-server ########################################### [100%]
解决方案:
从 rpm版本 4.1 开始,在安装或升级软件包时会检查软件包的签名。如果签名校验失败,你就会看到类似以上的错误消息:
注:新的、只针对文件头的签名:错误消息:error: Header V3 DSA signature: BAD, key ID 0352860f
注:没有安装合适的钥匙来校验签名,消息中就会包含 NOKEY:错误消息:warning: V3 DSA signature: NOKEY, key ID 0352860f
由于yum安装了旧版本的GPG keys造成的,解决办法就是(设置后无效):
rpm --import /etc/pki/rpm-gpg/RPM*
此签名是检验安装包的有效性和安装性的。我直接跳过(安装时不校验,加--nosignature参数)检验安装:
[root@localhost install-files]# rpm -ivh MySQL-server-5.6.27-1.el6.x86_64.rpm --nosignature
问题三:
mysqld: unrecognized service
# service mysqld start
mysqld: unrecognized service
解决方案:
启动脚本文件mysql的目录
[root@localhost install-files]# cd /etc/rc.d/init.d/
[root@localhost init.d]# ls
functions mysql netconsole network README
发现并没有mysqld:
# service mysql start
也可以:
# mv mysql mysqld
# service mysqld start
问题四:
[root@localhost install-files]# rpm -ivh MySQL-server-5.6.27-1.el6.x86_64.rpm --nosignature
Preparing... ################################# [100%]
Updating / installing...
1:MySQL-server-5.6.27-1.el6 ################################# [100%]
warning: user mysql does not exist - using root
warning: group mysql does not exist - using root
FATAL ERROR: please install the following Perl modules before executing /usr/bin/mysql_install_db:
Data::Dumper
解决方案:
# yum install -y perl-Module-Install.noarch
问题五:
[root@localhost mysql]# service mysql start
Starting MySQL... ERROR! The server quit without updating PID file (/var/lib/mysql/localhost.localdomain.pid).
解决方案:
查看/var/lib/mysql/中的数据文件是否完整,这很大部分原因是之前的数据库卸载不完全导致,需要完全卸载数据库,然后重新安装