CentOS7入门_安装并配置mysql5.7.18

  1. 下载mysql5.7 

mysql的官方下载地址

 

打开之后我们选择对应的系统版本进行下载,之后选择nothanks,不登陆直接下载(如果只是搭建最基本的的mysql的server只需要下载上图4个基本rpm文件即可):

如果你的linux系统可以直接上网,那么可以直接复制下面的命令执行,即可在当前目录下载mysql。

服务器端下载:

wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-community-server-5.7.18-1.el7.x86_64.rpm

客户端下载:

wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-community-client-5.7.18-1.el7.x86_64.rpm

lib下载:

wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-community-libs-5.7.18-1.el7.x86_64.rpm

common下载:

wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-community-common-5.7.18-1.el7.x86_64.rpm

嫌麻烦的童鞋可以直接下载第一个rpm-bundle(集合版)可以一劳永逸,这里我也给出下载地址:

wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.18-1.el7.x86_64.rpm-bundle.tar
  1. 安装mysql

下载完成后,首先需要我们看一下4个包的依赖关系。

mysql-community-common-5.7.18-1.el7.x86_64.rpm
mysql-community-libs-5.7.18-1.el7.x86_64.rpm           --(依赖于common)
mysql-community-client-5.7.18-1.el7.x86_64.rpm         --(依赖于libs)
mysql-community-server-5.7.18-1.el7.x86_64.rpm         --(依赖于client、common)

我们依次执行安装命令:

rpm -ivh mysql-*.rpm

出现了如下错误:

error: Failed dependencies:
libnuma.so.1()(64bit) is needed by mysql-community-server-5.7.18-1.el7.x86_64
libnuma.so.1(libnuma_1.1)(64bit) is needed by mysql-community-server-5.7.18-1.el7.x86_64
libnuma.so.1(libnuma_1.2)(64bit) is needed by mysql-community-server-5.7.18-1.el7.x86_64

通过读错误信息我们可以看出是缺少了依赖,经过我的研究发现是缺少了numactl.rpm,我在centos7安装镜像的package目录中提取三个numactl.rpm文件,

把三个文件复制至同一文件夹下,使用通配符安装目录下所有rpm文件:

rpm -ivh numactl-*.rpm 

如果找不到numactl.rpm文件,但是你的linux可以联网的话也已使用包管理器yum安装:

yum install numactl

numactl.rpm安装完成之后我们又看到如下错误:

error: Failed dependencies:
    mariadb-libs is obsoleted by mysql-community-libs-5.7.18-1.el7.x86_64

这是因为centos7 已经不支持mysql,所以内部集成了mariadb,而安装mysql的话会和mariadb的文件冲突,所以需要先卸载掉mariadb。

列出所有被安装的rpm package 

rpm -qa | grep mariadb

卸载 mariadb

rpm -e mariadb-libs-5.5.35-1.el7_0.x86_64

错误:依赖检测失败:

libmysqlclient.so.18()(64bit) postfix-2:2.10.1-6.el7.x86_64 
libmysqlclient.so.
18(libmysqlclient_18)(64bit) postfix-2:2.10.1-6.el7.x86_64

这时我们忽略依赖,强制卸载,加上 --nodeps

rpm -e --nodeps mariadb-libs-5.5.37-1.el7_0.x86_64

卸载完毕后重新安装mysql

rpm -ivh mysql-*.rpm

最后检查(注意大小写)

rpm -qa | grep mysql

有如下提示说明安装成功

  1. 配置mysql

 安装完毕之后我们就可以尝试登录mysql数据库了,但是当我运行mysql的时候又发生了意外,

经过我的初步判断应该是mysql的服务没有启动,我们查询一下mysql的状态

service mysqld status  --注意此处是 mysqld

果然不出我所料,下面我们启动mysql的服务

service mysqld start

再次查询mysql的状态

 

我们发现mysql的服务已经处于runing状态。此时我们再次登录mysql,正常情况下此时应该已经登录成功了,但是博主的mysql却并不能免密登录,可能是mysql的版本问题。

 经过查找资料得知,我们需要首先需要初始化mysql的密码,有两种方法。我们先停止mysql:

service mysqld stop
mysql_install_db --datadir=/var/lib/mysql   //必须指定datadir,执行后会生成~/.mysql_secret密码文件  
mysqld --initialize                         //新版的推荐此方法,执行后会在/var/log/mysqld.log生成随机密码  

我使用第一种方法,执行成功后在~/目录即root目录下并没有生成 .mysql_secret密码文件。(此处可能是因为我已经启动过一次服务的原因,后面也会提到)。

我遂放弃这一种方法,因为下面的方法也正好是新版推荐的。(如果需要深入了解此命令请查看官方文档

但是当我执行第二种方法时,却产生如下错误。

2017-05-11T01:41:54.675302Z 0 [ERROR] --initialize specified but the data directory has files in it. Aborting.
2017-05-11T01:41:54.675339Z 0 [ERROR] Aborting

意思就是说我的/var/lib/mysql目录下有文件,我猜这两个命令都不成功的原因是因为我运行过一次mysql,

于是我清空/var/lib/mysql目录,在/var/lib/mysql下执行

rm -rf *

再次执行

mysqld --initialize

果然成功,执行以下命令查看日志。

cat /var/log/mysqld.log

上面的我们都不看,直接看最下面有一个临时密码。

此时我们再次启动mysql

service mysqld start

启动mysql后,我们使用临时密码登录.

mysql -uroot -p

登陆成功后是不能进行任何操作的,否则会报

ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

此时我们必须先修改mysql的密码:

SET PASSWORD = PASSWORD('new password');

然后退出quit或者exit,并用新密码重新登录。

如果登录成功,我们的mysql就安装好啦。

恭喜你,让我们开启愉快的mysql之旅吧!

补充一点,这样设置完成之后只允许本机登录,如果你需要其他客户端远程连接时,则必须执行下一语句授权:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '你的密码' WITH GRANT OPTION;
原文地址:https://www.cnblogs.com/Jxiaobai/p/6836081.html