摘要
本文详细记录了Linux下MySQL 5.7的安装步骤,基于CentOS 7.2与中标麒麟7两个版本的操作系统下的实践总结而成(大多数图片截取自中标麒麟7)。
引子
我所在的人力资源和社会保障行业线,项目的业务数据库绝大多数是Oracle,其实很少见到MySQL。近几年有从Oracle向国产数据库(OceanBase、达梦、GBase等)过渡的趋势。
虽然业务库很少选择MySQL,但MySQL依然有其用武之地:
1 安装包准备
MySQL安装包官方下载地址:downloads.mysql.com/archives/co…。
选择MySQL与操作系统的版本,下载对应的软件安装包(本文选取的是5.7.10-1.el7.x86_64版本)。
我们只需要下载、安装以下四个软件包就可以了:
- mysql-community-server-5.7.10-1.el7.x86_64.rpm:服务端和相关工具
- mysql-community-client-5.7.10-1.el7.x86_64.rpm:客户端
- mysql-community-common-5.7.10-1.el7.x86_64.rpm:服务端和客户端常用库文件
- mysql-community-libs-5.7.10-1.el7.x86_64.rpm:客户端共享库
另:mysql-5.7.10-1.el7.x86_64.rpm-bundle.tar可以理解为集成包,集成包在解压后可以得到当前版本相关的所有rpm安装包。
2 卸载MariaDB
以前的Linux系统中的数据库大部分是MySQL,但自从MySQL被Sun收购之后,就没有再集成到CentOS这些开源的Linux系统中了,因此Linux内部集成了MariaDB,而安装MySQL会和MariaDB的文件冲突,所以需要先卸载MariaDB。
查看已经安装的MariaDB相关软件:
rpm -qa|grep mariadb
注:实践中,中标麒麟7(上)与CentOS 7.2(下)所安装的mariadb软件包有些不同,不必纠结,有什么卸载什么就可以了。
卸载MariaDB:
rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64
rpm -e --nodeps mariadb-5.5.60-1.el7_5.x86_64
rpm -e --nodeps mariadb-server-5.5.60-1.el7_5.x86_64
--nodeps
指定在安装或卸载时,不检查依赖关系。如果没有使用--nodeps
,卸载会出现如下错误:
3 安装MySQL
MySQL的软件包在安装时是存在依赖顺序的,需要按照common --> libs --> clients --> server
的顺序依次安装。
或者也可以通过一条安装命令同时安装所有软件包:
rpm -ivh mysql*
注:截图中多安装了一个mysql-community-devel-5.7.10-1.el7.x86_64.rpm开发库,实际上可以不装。
安装完成后,MySQL的默认配置文件所在位置:/etc/my.conf。
4 启动MySQL服务
service mysqld start
查看MySQL服务运行状态:
service mysqld status
5 修改MySQL密码
MySQL启动后,查询root用户的临时密码:
cat /var/log/mysqld.log | grep password
使用临时密码登录MySQL:
mysql -uroot -p
修改root用户的密码:
alter user 'root'@'localhost' identified by '新密码';
修改密码时,可能会因为不符合安全策略而修改失败:
查看当前的密码策略:
show variables like 'validate_password%';
(注:使用相同的MySQL安装包,在CentOS7.2下执行此命令,要求必须先完成首次的root密码修改,而中标麒麟7下则不需要,可以在临时密码的状态下查看当前密码策略)
如有需要,可以将密码策略调整为“LOW”、降低密码最低长度,这样就可以将root的密码修改为较简单的密码了:
set global validate_password_policy=LOW;set global validate_password_length=4;
6 开放3306端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
重启防火墙:
service firewalld restart
查看防火墙已开放端口:
firewall-cmd --list-ports
7 设置MySQL自启动
systemctl enable mysqld
systemctl daemon-reload
标签:x86,RedHat,5.7,--,RPM,64,MySQL,rpm,el7 From: https://blog.51cto.com/u_15167487/7230079CentOS7.x之前的版本,系统在启动时第一支呼叫的程序是init,然后init会去唤起所有的系统所需要的服务,这些服务的启动脚本都放置于
/etc/init.d
下面,它们基本上都是使用bash、shell-script所写成的脚本程序。
CentOS7.x以后,RedHat放弃了通过init启动脚本的方法,改用systemd这个启动服务管理机制。