Centos6安装mysql5.7最新版
最近因为公司的服务器需要做基线和漏洞扫描,基线方面问题不大,按照报告上的加固建议,选一些权重高的问题处理一下就好了。但是漏洞扫描就比较坑了,扫出来了十几个高危和一百六十多个中危漏洞,不过还好漏洞基本上都出在openssh和mysql上,升级一下这两个的版本就好了。因为是云主机openssh不敢乱动,所以我们先把mysql升级到最新版。centos并不能像window简单快捷的直接运行升级包,所以我们采取的方式是卸载重装。
卸载mysql
首先把数据库里面的数据备份一下
$> mysqldump -u root -p --all-databases > backdb.sql
输入密码即可开始备份,完成后的备份文件会放在当前目录里,用 ll 命令即可看到
通过 whereis mysql 和 which mysql 来查找mysql文件夹,通过rm命令删除文件夹,删除 /etc/my.cnf配置文件
查看当前mysql: rpm -qa|grep mysql
没有显示任何内容可进行下一步,如果有输出的话通过 yum remove 后面跟上一行输出的mysql内容进行删除
删除完mysql后,可以准备开始重新安装了。
下载mysql
因为服务器是纯内网的,所以只能通过源码来进行安装。mysql下载:https://dev.mysql.com/downloads/mysql/
自行选择你需要下载的版本,因为之前安装的是5.7,所以为了保证数据不出现问题,这次仍然准备安装5.7。
最新的版本是5.7.27,其他的按图片上的选择,64位或32位则要看系统本身了可以通过 getconf long_bit 命令查看。
安装mysql
下载完成后上传到服务器里的 /usr/local/ 目录下
解压: tar -zxvf (文件名) 然后通过 mv 命令将文件夹名修改为mysql
创建用户组和用户
用户组: groupadd mysql
用户: useradd -r -g mysql mysql
给mysql用户指定专有用户和用户组
进入mysql文件夹:cd /usr/local/mysql
创建data目录:mkdir data
指定用户和用户组
cd /usr/local/
chown -r mysql mysql/
chgrp -r mysql mysql/
初始化mysql
进入bin目录:cd /usr/local/mysql/bin
./mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ --lc_messages_dir=/usr/local/mysql/share --lc_messages=en_us
记住最后面的的临时密码,如果忘记密码或者想重新初始化,可以先将mysql/data目录中文件删除,然后再执行初始化命令。
配置my.cnf
vi /etc/my.cnf 没有的话会自动创建
输入如下内容:
[mysqld] basedir=/usr/local/mysql/ datadir=/usr/local/mysql/data/
启动mysql
cd /usr/local/mysql/bin
./mysqld_safe --user=mysql &
我实际上在走到这一步的时候出现了bug,输出显示linxu守护进程已经启动,但是 ps -ef|grep mysql 始终找不到mysql进程,这个时候如果你去百度的话,会得到各种各样的答案,可能对你并不适用,最好的方式是去看mysql的错误日志,一般存放在mysql目录下的data文件夹里后缀是.err。如果没有的话可以通过 find / -name 主机名.err 命令查找,主机名可以通过 hostnamectl 命令查看。通过报错来查找问题就会更有针对性,后来发现我配置文件里少打了两个字母,粗心害死人啊!!!
登陆mysql
cd /usr/local/mysql/bin
登录:./mysql -u root -p
登录上mysql之后,必须先修改密码才能进行其他操作
修改密码: set password=password("root");
登录授权:grant all privileges on *.* to'root' @'%' identified by 'root';
授权生效: flush privileges;
至此mysql的安装升级以及完成了,现在就是把之前备份的文件导回到mysql里面了
进入一个数据库: use mysql;
设置编码: set names utf8;
导入sql文件: source ....../backdb.sql;
上一篇: JS 调试命令——你只会console.log() ?
下一篇: 使用Postman做自动化测试