MYSQL5.7的安装(yum、二进制、编译安装)
我叫张贺,贪财好色。一名合格的LINUX运维工程师,专注于LINUX的学习和研究,曾负责某中型企业的网站运维工作,爱好佛学和跑步。
个人博客:https://www.cnblogs.com/yizhangheka
笔者微信:zhanghe15069028807
一、环境说明
SYSTEMCTL | HOSTNAME | IPADDR | DISCRIPTION |
---|---|---|---|
CentOS Linux release 7.6.1810 (Core) | mysql01 | 192.168.80.140 | yum-install |
CentOS Linux release 7.6.1810 (Core) | mysql02 | 192.168.80.141 | binary-install |
CentOS Linux release 7.6.1810 (Core) | mysql03 | 192.168.80.142 | make-install |
二、YUM安装
1、安装MYSQL-YUM源
2、安装说明
[root@mysql01 ~]# ll /etc/yum.repos.d/
-rw-r--r-- 1 root root 2523 Jun 16 2018 CentOS-Base.repo
-rw-r--r-- 1 root root 664 May 11 2018 epel.repo
[root@mysql01 ~]# rpm -ivh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
[root@mysql01 ~]# ll /etc/yum.repos.d/
total 16
-rw-r--r-- 1 root root 2523 Jun 16 2018 CentOS-Base.repo
-rw-r--r-- 1 root root 664 May 11 2018 epel.repo
-rw-r--r-- 1 root root 2076 Apr 25 2019 mysql-community.repo
-rw-r--r-- 1 root root 2108 Apr 25 2019 mysql-community-source.repo
[root@mysql01 ~]# yum repolist all | grep mysql
mysql55-community/x86_64 MySQL 5.5 Community Server disabled
mysql55-community-source MySQL 5.5 Community Server - disabled
mysql56-community/x86_64 MySQL 5.6 Community Server disabled
mysql56-community-source MySQL 5.6 Community Server - disabled
mysql57-community/x86_64 MySQL 5.7 Community Server disabled #5.7版本处于关闭状态
mysql57-community-source MySQL 5.7 Community Server - disabled
mysql80-community/x86_64 MySQL 8.0 Community Server enabled: #8.0版本处于开启状态
mysql80-community-source MySQL 8.0 Community Server - disabled
因为我们的目前是要安装5.7版本,而非8.0版本,所以,我们要将5.7版本的yum源打开,而将8.0版本的yum源关闭,有两种方法。
1、 第一种方法
[root@mysql01 ~]# yum-config-manager --enable mysql57-community
[root@mysql01 ~]# yum-config-manager --disable mysql80-community
[root@mysql01 ~]# yum repolist all | grep mysql
mysql55-community/x86_64 MySQL 5.5 Community Server disabled
mysql55-community-source MySQL 5.5 Community Server - disabled
mysql56-community/x86_64 MySQL 5.6 Community Server disabled
mysql56-community-source MySQL 5.6 Community Server - disabled
mysql57-community/x86_64 MySQL 5.7 Community Server enabled: 384
mysql57-community-source MySQL 5.7 Community Server - disabled
mysql80-community/x86_64 MySQL 8.0 Community Server disabled
mysql80-community-source MySQL 8.0 Community Server - disabled
2、 第二种方法
[root@mysql01 ~]# rpm -ql mysql80-community-release-el7
/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
/etc/yum.repos.d/mysql-community-source.repo
/etc/yum.repos.d/mysql-community.repo
[root@mysql01 ~]# vim /etc/yum.repos.d/mysql-community.repo
[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/
enabled=1 #5.7版本默认关闭
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
[mysql80-community]
name=MySQL 8.0 Community Server
baseurl=http://repo.mysql.com/yum/mysql-8.0-community/el/7/$basearch/
enabled=0 #8.0版本默认开启
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
3、安装前的准备
先要考虑好数据库应该存哪个目录,方便以后以后的迁移和备份,所以要修改/etc/my.cnf
文件的datadir
的参数,我们安装到/mysql/
下。
[root@mysql01 ~]# mkdir /mysql
[root@mysql01 ~]# cat /etc/my.cnf
[mysqld]
datadir=/mysql
socket=/var/lib/mysql/mysql.sock
4、安装
[root@mysql01 ~]# yum -y install mysql-community-server
[root@mysql01 ~]# systemctl start mysqld
[root@mysql01 ~]# systemctl enable mysqld
5、启动
yum
安装已经初始化完成,密码也已经设置完成,我们在第一次启动失败之后去错误日志里面找到即可,如下所示:
[root@mysql01 ~]# systemctl restart mysqld
[root@mysql01 ~]# mysql -uroot
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
[root@mysql01 ~]# grep 'password' /var/log/mysql.log #如果系统是第一次安装的话,会过滤出root用户的密码,反之,没有,我们可以跳过密码验证。
三、变更root密码
两种方法:一是记得原本的密码,改成新的密码;二是不记得原来的密码,强行更改密码。
## 1、知道原始密码
//第一种方式,先通过原本的密码登录进数据库,使用`update`命令更改`mysql.user`表的字段;
[root@mysql01 ~]# mysql -uroot -p'cba-123'; #原密码
mysql> update mysql.user set authentication_string=password('abc-123') where user='root'; #新密码
mysql>FLUSH PRIVILEGES;
## 2、不知道原始密码
//第二种方式,二是不记得原来的密码,强行更改密码。
[root@mysql01 ~]# vim /etc/my.cnf
[mysqld]
skip-grant-tables
[root@mysql01 ~]#systemctl restart mysqld
[root@mysql01 ~]# mysql
mysql> update mysql.user set authentication_string=password('abc-123') where user='root'; #新密码
mysql>FLUSH PRIVILEGES; #退出后,再删除`skip-garnt-talbes`参数,重启数据库,即可通过新密码登录。
update user set authentication_string='' where user='root'; #8.0的语法变成这样了
## 3、`mariadb`变量密码的方式
更改`mysql.user`表的方式与mysql相同,但是密码字段不同,提前用`desc`查看一下即可。
mysqladmin是通用的,如果是mariadb刚安装启动,没有设置密码,就用`mysql password cba-123`设置密码。
如果是更改密码的话,就用这个`mysqladmin -u root -poldpassword password 'newpassword'`
有时候安装完成之后会出现这样的提示:You must reset your password using ALTER USER statement before executing
ALTER USER USER() IDENTIFIED BY 'cba-123';
//策略改为LOW之后,仅检查密码的长度,默认是8位
mysql> set global validate_password_policy=LOW;
Query OK, 0 rows affected (0.00 sec)
mysql> ALTER USER USER() IDENTIFIED BY 'cba-123@';
Query OK, 0 rows affected (0.00 sec)
mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+-------+
| Variable_name | Value |
+--------------------------------------+-------+
| validate_password_check_user_name | OFF |
| validate_password_dictionary_file | |
| validate_password_length | 8 |
| validate_password_mixed_case_count | 1 |
| validate_password_number_count | 1 |
| validate_password_policy | LOW |
| validate_password_special_char_count | 1 |
+--------------------------------------+-------+
7 rows in set (0.00 sec)
四、BINARY-INSTALL
采⽤⼆进制免编译⽅式安装MYSQL
,不需要复杂的编译设置和编译时间等待,解压下载的软件包,初始化即可完成MySQL
的安装和启动。MYSQL二进制包下载地址
1、基础环境准备
[root@mysql02 ~]# systemctl stop firewalld;
[root@mysql02 ~]# systemctl disable firewalld;
[root@mysql02 ~]# setenforce 0
2、建立用户与相应目录
[root@mysql02 ~]# groupadd mysql;
[root@mysql02 ~]# useradd -r -g mysql -s /sbin/nologin mysql;
[root@mysql02 ~]# mkdir /soft/src -p && cd /soft/src
3、下载&解压&软链接
[root@mysql02 src]# wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz
[root@mysql02 src]# tar xf mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz -C /soft/
[root@mysql02 src]# ln -s /soft/mysql-5.7.28-linux-glibc2.12-x86_64/ /soft/mysql
4、初始化
//创建数据库的文件目录和数据目录,并递归用户授权
[root@mysql02 ~]# mkdir /soft/mysql{mysql-file,data}
[root@mysql02 ~]# chown -R mysql:mysql /soft/mysql
//初始化数据库
[root@mysql02 ~]# /soft/mysql/bin/mysqld --initialize \
> --user=mysql --basedir=/soft/mysql \ #初始时指定`mysql`的运行用户,基础目录和数据目录,出现密码表示成功。
> --datadir=/soft/mysql/data
2019-11-20T01:49:32.945198Z 1 [Note] A temporary password is generated for root@localhost: Pk>,vkLD,8S)
5、根据初始化的参数建立MYSQL配置文件
[root@mysql02 ~]# vim /etc/my.cnf
[mysqld]
datadir=/soft/mysql/data
basedir=/soft/mysql
6、启动服务
//二进制包里面人家已经为我们准备好了启动文件,我们将之复制到`/etc/init.d`里面即可以使用chkconfig进行管理了。
[root@mysql02 ~]# cp /soft/mysql/support-files/mysql.server /etc/init.d/mysqld
[root@mysql02 ~]# chkconfig --add mysqld
[root@mysql02 ~]# chkconfig mysqld on
//修改启动文件里面的参数,就是修改数据库的基础目录和数据目录,默认的与我们的环境对不上。
[root@mysql02 ~]# sed -i '/^basedir=/cbasedir=\/soft\/mysql' /etc/init.d/mysqld
[root@mysql02 ~]# sed -i '/^datadir=/cdatadir=\/soft\/mysql\/data' /etc/init.d/mysqld
//启动数据库,比较慢
[root@mysql02 ~]# /etc/init.d/mysqld start
//检查
[root@mysql02 ~]# ss -tnlp | grep 3306
[root@mysql02 ~]# lsof -i :3306
7、连接
//默认`PATH`变量没有`mysql`*客户端*命令连接数据库,`mysql`客户端命令在二进制文件里面,我们只要将`mysql`的二进制文件路径加入`PATH`变量即可。
[root@mysql02 ~]# mysql
bash: mysql: command not found...
[root@mysql02 ~]# echo "export PATH=$PATH:/soft/mysql/bin" >> /etc/profile
[root@mysql02 ~]# source /etc/profile
[root@mysql02 ~]# mysql -uroot -p"Pk>,vkLD,8S"
五、YUM安装和二进制安装总结
1、YUM安装总结
YUM
安装最是简单不过了,只要yum install
就可以了,但是我们并没有这么做,因为我们的源用的是第三方源,用第三方源安装不如直接用MYSQL
官方源安全靠谱,所以我们首先通过官网的提示更新了源,然后再安装;默认的安装位置是/etc/my.cnf
指定的,所以我们在yum
之前先定义好到底安装到什么地方。
2、二进制安装总结
二进制安装无需yum,只要解压然后初始化即可。同样的,我们在用二进制安装之前先创建好运行的用户,数据库文件存放的位置,数据库数据存放的位置,注意别忘记授权用户对目录的权限,然后,在初始化的时候告诉二进制文件运行它的用户是谁,它的基础目录和它的数据目录。
安装好之后,默认不能用systemctl
来管理,我们可以将启动文件放到/etc/init.d/
目录下来管理,注意启动文件也要修改一下,里面的基本目录和数据目录可能与我们的实际环境不符。
通过/etc/init.d/mysqld start
启动之后启动的是服务端,我们想要连接到服务端需要客户端命令mysql
,默认PATH变量下没有,好在二进制文件里面MYSQL官方给我们准备好了,我们只需要将目录加入到PATH变量里面即可。
3、在安装过程中的报错总结
- 无论是YUM安装还是二进制安装,默认都给我们设置好了密码,YUM安装的需要去日志里面找一找,二进制安装的初始化时就直接显示的。
- 在跳过密码重启服务的时候出现了这么一个错误
Starting MySQL... ERROR!
The server quit without updating PID file
是因为我把skip-grant-talbes
里面的grant
拼写错误了。
六、技巧
当我们进入一家新公司的时候,我们可以通过pa aux | grep mysql
看到二进制安装mysql时用到的参数,通过这些参数我们可以看到安装环境了,便于我们快速熟悉工作。
[root@mysql02 ~]# ps aux | grep mysql
avahi 8330 1.1 0.0 62268 2280 ? Ss 09:27 1:27 avahi-daemon: registering [mysql02-157.local]
root 75548 0.0 0.0 113312 1612 pts/0 S 10:28 0:00 /bin/sh /soft/mysql/bin/mysqld_safe --datadir=/soft/mysql/data --pid-file=/soft/mysql/data/mysql02.pid
mysql 75680 4.0 5.2 1187232 176204 pts/0 Sl 10:28 2:42 /soft/mysql/bin/mysqld --basedir=/soft/mysql --datadir=/soft/mysql/data --plugin-dir=/soft/mysql/lib/plugin --user=mysql --log-error=mysql02.err --pid-file=/soft/mysql/data/mysql02.pid
MYSQL5.7的安装(yum、二进制、编译安装)的更多相关文章
- Mysql5.7.34 数据库源码编译安装
Mysql 数据库源码编译安装 MySQL是一个关系型数据库管理系统,关系型数据库是将数据保存在不同的表中,而非将所有数据放在一个大仓库内,这样就加快了速度并提高了灵活性.由于其体积小.速度快.总体拥 ...
- swoole模块的编译安装:php编译安装swoole模块的代码
本篇文章给大家带来的内容是关于swoole模块的编译安装:php编译安装swoole模块的代码,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 1.下载swoole 1 wget ht ...
- 转-httpd 2.4.4 + mysql-5.5.28 + php-5.4.13编译安装过程
一.编译安装apache 1.解决依赖关系 httpd-2.4.4需要较新版本的apr和apr-util,因此需要事先对其进行升级.升级方式有两种,一种是通过源代码编译安装,一种是直接升级rpm包.这 ...
- 烂泥:mysql5.5数据库cmake源码编译安装
本文由秀依林枫提供友情赞助,首发于烂泥行天下. 以前也写过一篇有关mysql5.0源码编译的文章,该文章为<烂泥:mysql5.0数据库源码编译安装>.但是MySQL自5.5版本以后,就开 ...
- 十七、程序包管理之yum和编译安装
YUM Redhat二次发行版 Yellow Dog Linux,上使用的yum(Yellowdog Update Modifier),由yellow dog 研发 yum命令的工作原理 1.接收用户 ...
- 二进制编译安装httpd服务
systemctl stop httpd yum remove httpd-----------------------(在做之前 先删掉httpd) 安装编译环境 yum -y groupinsta ...
- Centos7:yum安装apache,编译安装php5.6,不解析php的解决方法
首先,说一下问题发生的场景: 因为懒,所以用 yum 安装 apache ,因为 centos 的源自带 php 5.4 不能符合环境要求,而不想用其他源,所以选择源码编译安装 php 5.6 安装完 ...
- centos7 yum安装nginx和 编译安装tengine
说明 我这里给大家演示一下如何安装nginx,nginx我就不多介绍了,然后我再说一点就是,安装的两种方法都可以,编译安装和yum安装,我不能每个都演示两遍呀,所以看到我这博客的你,学会举一反三好吧? ...
- redhat 7.6 rpm ,yum ,编译安装
rpm rpm -ivh 包名 //安装 rpm -e 包名 //卸载 which mount 查看命令安装目录 rpm -qf /usr/bin/mount // ...
- nginx php-fpm安装配置 CentOS编译安装php7.2
CentOS编译安装php7.2 介绍: 久闻php7的速度以及性能那可是比php5系列的任何一版本都要快,具体性能有多好,建议还是先尝试下再说.如果你是升级或新安装,那你首先需要考虑php7和程序是 ...
随机推荐
- [debug] 解决新建项目属性中没有 c\c++
写一些代码(不写不行),然后生成,然后就可以看到这个选项了
- 收藏收藏:工作用了很久的自主开发的Sql Server代码生成器,我开源了(.NET Winform)
大家好,已经一年没见了,我的技术已经有了惊人的进步.于是乎就来为大家分享技术了,今天呢为大家带来的是很早之前开发的老工具分享给大家. 相信大家都使用过代码生成器,用起来顺手的有多少?根据自己的业务配置 ...
- 简洁优雅的Python教你如何在工作中“偷懒”
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: A字头 PS:如有需要Python学习资料的小伙伴可以加点击下方链 ...
- k8s的yaml说明
理解k8s里的几个概念 Kubernetes 通过各种 Controller 来管理 Pod 的生命周期.为了满足不同业务场景,Kubernetes 开发了 Deployment.ReplicaSet ...
- Cesium数据可视化-仓储调度系统可视化部分(附github源码)
Cesium数据可视化-仓储调度系统可视化部分 目的 仓储调度系统需要一个可视化展示物资运输实况的界面,需要配合GPS设备发送的位置信息,实时绘制物资运输情况和仓储仓库.因此,使用Cesium可视化该 ...
- bayaim_Centos7.6_mysql源码5.7-multi_20190424.txt
用户名/密码mysql/mysql 一.安装mysql: 位置位于 /data/mysql 如果遇到依赖,无法删除,使用 rpm -e --nodeps <包的名字> 不检查依赖,直接删除 ...
- JavaScript-双层for循环打印九九乘法表
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- (day67)组件、组件化、组件传参、JS补充(命名转换、for in 、数据转换)、css取消选中和模拟小手
目录 一.初识组件 (一)概念 (二)特点 二.组件的分类 (一)根组件 (二)局部组件 (三)全局组件 二.数据组件化 三.组件的传参 (一)父传子 (二)子传父 四.JS补充 (一)与html命名 ...
- 一文掌握 Lambda 表达式
本文将介绍 Java 8 新增的 Lambda 表达式,包括 Lambda 表达式的常见用法以及方法引用的用法,并对 Lambda 表达式的原理进行分析,最后对 Lambda 表达式的优缺点进行一个总 ...
- 图解Numpy的tile函数
Numpy的tile(A, reps)函数,就是将原矩阵横向.纵向地复制.tile是瓷砖的意思,顾名思义,这个函数就是把数组像瓷砖一样铺展开来. 举个例子,原矩阵: 横向铺展: 纵向铺展: 横向铺 ...