- 下载mysql5.7
打开之后我们选择对应的系统版本进行下载,之后选择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
- 安装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
有如下提示说明安装成功
- 配置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;