一 下载

可以选择 RPM Bundle,里面包含了所有的rpm安装包,如果选择了这个就不需要再分开下载下面的各个rpm包

如果不想全部下载,也可以细化下载,下载须要的mysql组件,有4个:分别是 server、client、common、libs(可选)

选择好后点击download进入到登陆页面,这一步如果没有账号可以选择不用登陆直接下载,点击下面的No thanks, just start my download.开始下载,可以将下载地址复制在下载器中下载,如迅雷,具体的下载地址为:

https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.27-1.el7.x86_64.rpm-bundle.tar

下载完成后的tar包解压后里面是每个组件的rpm包

二 安装单机版MySql

  • 卸载mariadb

centos默认安装了mariadb,因此,在安装mysql之前,需要卸载系统中安装的mariadb。

查看系统中所有已安装的mariadb包。命令:

rpm -qa | grep mariadb

卸载mariadb

rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64

  • 安装MySql组件

使用命令rpm -ivh {-file-name}进行安装操作。(ivh中, i-install安装;v-verbose进度条;h-hash哈希校验)

按照依赖关系依次安装rpm包 依赖关系依次为common→libs→client→server,在下载的安装包中会有很多组件,mysql的正常运行只需要安装common、libs、client、server四个组件就可以,不需要全部安装

将所需组件的rpm包上传到服务器

执行安装命令

rpm -ivh mysql-community-common-5.7.27-1.el7.x86_64.rpm

rpm -ivh mysql-community-libs-5.7.27-1.el7.x86_64.rpm

rpm -ivh mysql-community-client-5.7.27-1.el7.x86_64.rpm

rpm -ivh mysql-community-server-5.7.27-1.el7.x86_64.rpm

在安装mysql-community-server-5.7.27-1.el7.x86_64.rpm如果出现下面错误:

原因:这是由于yum安装了旧版本的GPG keys造成的 解决办法:后面加上  --force --nodeps 如:

rpm -ivh mysql-community-server-5.7.27-1.el7.x86_64.rpm --force --nodeps

从 RPM 版本 4.1 开始,在安装或升级软件包时会检查软件包的签名。

注意细节

1、执行 yum remove mysql-libs   命令后,会自动删除掉 /etc/ 下的 my.cnf 文件

2、对于安装mysql组件,只有安装了 mysql-community-server-5.7.22-1.el7.x86_64.rpm 组件,才会:

a)在 /etc/下生成 my.cnf 文件 和 my.cnf.d 文件夹

b)在/var/lib/下生产以下三个文件夹:mysql、mysql-files、mysql-keyring

c) 在/var/log/ 下生成 mysqld.log 文件

d) 在/var/run/ 下生成 mysqld 目录

  • 初始化mysql数据库

安装成功后执行 systemctl start mysqld 进行数据库初始化操作,若不进行初始化则不能生成root用户的初始密码

初始化启动使用命令:systemctl start mysqld (如果mysql无法启动可以尝试重启系统)

其他初始化命令:

启动:systemctl start mysqld

停止:systemctl stop mysqld

重启:systemctl restart mysqld

查看mysql状态:systemctl status mysqld

查看mysql进程:ps -ef|grep mysql

查看3306端口:netstat -anop|grep 3306

初始化启动完成后若要再管理mysql服务则需要用下命的命令

service mysql start

service mysql stop

service mysql restart

  • 修改mysql配置文件

vi /etc/my.cnf

将文件原来的内容全部删除,重新添加如下内容

[mysqld]

character_set_server = utf8

bind-address = 0.0.0.0

skip-name-resolve

重启mysql:systemctl restart mysqld

如果上面的命令失败可以试试service mysql restart

  • 初始化MySQL数据库

查看mysql初始密码,查看的密码要记录下来,在下一步修改mysql密码时要输入

cat /var/log/mysqld.log | grep "A temporary password"

修改MySQL密码

mysql_secure_installation

根据提示输入密码,新密码,选择等

在5.6后,mysql内置密码增强机制,低强度密码会报错,可以设置

修改密码需要提示信息依次为:

  • Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) :

    您想用提供的密码继续吗?(按y | y表示是,按任何其他键表示否):y

  • Remove anonymous users? (Press y|Y for Yes, any other key for No) :

    删除匿名用户?(按y | y表示是,按任何其他键表示否):y(一般会选择删除匿名用户,安全)

  • Disallow root login remotely? (Press y|Y for Yes, any other key for No) : n

    不允许远程根用户登录?(按y | y表示是,按任何其他键表示否):n(输入y表示禁止root用户远程登陆,这样安全,但需要创建其他用户使用)

  • Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y

    删除测试数据库并访问它?(按y | y表示是,按任何其他键表示否):y(是否都可以)

  • Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y

    现在重新加载特权表?(按y | y表示是,按任何其他键表示否):y

修改成功后本地登陆管理员账户

mysql -u root -p

使用root账户创建一个新的账户

CREATE USER 'admin'@'%' IDENTIFIED BY 'Abc_123456';

GRANT all privileges ON *.* TO 'admin'@'%';

FLUSH PRIVILEGES;

创建完成之后可以使用admin用户操作,可以使用客户端登陆测试。

注:本安装步骤中限制了root用户的远程登陆,所以在使用客户端远程登陆时使用root用户登陆失败,要使用admin用户可以远程登陆,若需要root用户远程登陆,请参考下面

  • 设置mysql开机自启

    Systemctl enable mysqld

  • 配置只要是root用户+密码,在任何主机上都能登录MySQL数据库。

(1)进入MySQL

[root@hadoop102 mysql-libs]# mysql -uroot -p000000

(2)显示数据库

mysql>show databases;

(3)使用MySQL数据库

mysql>use mysql;

(4)展示MySQL数据库中的所有表

mysql>show tables;

(5)展示user表的结构

mysql>desc user;

(6)查询user表

mysql>select User, Host from user;

(7)修改user表,把Host表内容修改为%

mysql>update user set host='%' where host='localhost';

(8)删除root用户的其他host

mysql>

delete from user where Host='hadoop102';

delete from user where Host='127.0.0.1';

delete from user where Host='::1';

(9)刷新

mysql>flush privileges;

(10)退出

mysql>quit;

至此,数据库的初始化工作完成,以上操作可以作为单机版的mysql安装步骤。

三 主从复制配置

按照单机版的按照步骤在另一台服务器上安装mysql,在搭建主从复制之前两台单机版的mysql之间是互相独立的,dajian 主从复制的原理就是从读取主的blog日志,将数据写入到从服务器

配置演示

主节点:192.168.194.161

从节点:192.168.194.162

MySQL版本:5.7.27

Linux:centOS7.6

3.1 主节点配置

  • 编辑主节点配置文件

    vi /etc/my.cnf

    添加如下内容

log-bin=mysql-bin

server-id=1

innodb-file-per-table=ON

skip_name_resolve=ON

binlog-ignore-db=mysql

binlog_format=mixed

  • 重启mysql服务

    systemctl restart mysqld

  • 查看MySQL信息

    使用root用户登陆主节点

    mysql -u root -p

    查看二进制日志是否开启

    show global variables like '%log%';

查看主节点二进制日志列表(已经生成的日志列表)

show master logs;

查看主节点的server id

show global variables like '%server%';

  • 在主节点上创建有复制权限的用户

    slave想要同步master上的数据首先肯定需要权限,所以我们要在master上面开通权限

    grant replication slave, replication client on *.* to 'root'@'192.168.194.162' identified by '9o0p(O)P';

    账号是root密码是9o0p(O)P ,允许192.168.194.162(从节点ip)这台机器向master发送同步请求,当然也可以设成其他用户

    刷新一下授权信息,然后查看当前master的状态

    flush privileges;

    show master status;

3.2 从节点配置

  • 编辑从节点配置文件

    添加以下内容

    relay-log=relay-log

    relay-log-index=relay-log.index

    server-id=2 #全局唯一的,不能和其他节点重复

    innodb_file_per_table=ON

    skip_name_resolve=ON

  • 重启从节点

    systemctl restart mysqld

  • 查看从节点配置信息

    使用root用户登陆从节点

    mysql -u root -p

    查看中继日志是否开启

    show global variables like '%log%';

    查看看server 相关信息

    show global variables like '%server%';

  • 在从节点配置访问主节点的参数信息

添加 主节点主机,访问主节点的用户名及密码,主节点二进制文件信息。

注意:主节点的二进制文件一定要是二进制列表中的最后一个二进制文件。

查看主节点的二进制文件

这里的二进制文件只有一个,如果数据库已经运行了一段时间,会产生多个二进制文件,这里添加的要使用最后一个生成的二进制文件

在从节点上执行下面命令配置访问主节点的参数信息

change master to master_host='192.168.194.161',master_user='root',master_password='9o0p(O)P',master_log_file='mysql-bin.000001',master_log_pos=775;

其中

master_host='192.168.194.161':主节点的ip

master_user='root':登陆主节点的用户名,可以是root用户

master_password='9o0p(O)P':登陆密码

master_log_file='mysql-bin.000001':主节点的最后一个二进制文件名

master_log_pos=775:主节点的最后一个二进制文件名File_size值

  • 查看从节点的状态信息

    show slave status\G (G要大写,如果是小写则显示的不整齐)

    因为没有启动 从节点的复制线程,IO线程 和 SQL 线程都为NO.

  • 启动复制线程

    start slave;

    再次查看从节点状态信息

至此,mysql的主----从复制配置完成。

3.3测试

  • 创建数据库

    在主节点创建一个数据库

    create database mydb;

    在从节点查看

    show databases;

也可以使用客户端软件远程登陆测试数据的增删该操作,注意,远程登陆需要使用admin用户,root用户已经现在了远程登陆。

3.4主从复制架构中应注意的问题

从节点要设置某些限定使得它不能进行写操作,才能保证复制当中的数据一致。

  • 限制从服务器为只读

    在从服务器上设置:

    read_only = ON,但是此限制对拥有SUPER权限 的用户均无效。

    阻止所有用户:

    mysq>FLUSH TABLES WITH READ LOCK;

  • 如何保证主从复制时的事物安全?

1:在主节点设置参数

sync_binlog=1: Mysql开启bin-log日志使用bin-log时,默认情况下,并不是每次执行写入就与硬盘同步,这样在服务器崩溃时,就可能导致bin-log最后的语句丢失。可以通过这个参数来调节,sync_binlog=N,使执行N次写入后,与硬盘同步。1是最安全的,但是也是最慢的。

如果用到innode 存储引擎:innodb_flush_logs_at_trx_commit=ON(刷写日志:在事务提交时,要将内存中跟事务相关的数据立即刷写到事务日志中去。)

innodb_support_xa=ON (分布式事务:基于它来做两段式提交功能)

sync_master_info=1:每次给从节点dump一些事件信息之后,主节点的master info 信息会立即同步到磁盘上。让从服务器中的 master_info 及时更新。

2:在每个slave节点

skip_slave_start =ON (跳过自动启动,使用手动启动。)

relay_log也会在内从中先缓存,然后在同步到relay_log中去,可以使用下面参数使其立即同步。

sync_relay_log =1 ,默认为10000,即每10000次sync_relay_log事件会刷新到磁盘。为0则表示不刷新,交由OS的cache控制。

sync_relay_log_info=1每间隔多少事务刷新relay-log.info,如果是table(innodb)设置无效,每个事务都会更新

注: 在从节点中 master.info是记录在主节点复制位置的文件。

relylog_info: 本地将来至于主节点的哪一个二进制文件中position并且保存文本地哪一个中继日志中的哪一个postion. 从节点启动时也需要根据relay-log.info定位本地relay-log.

CentOS 7安装mysql5.7-单节点&主从的更多相关文章

  1. 安装简易OpenShift单节点并配置DNS泛域名

    1 楔子 公司有个项目部署在 OpenShift 容器云平台上,出现问题较多,于是萌生在公司环境搭建现场仿真环境,由于资源没有生产环境多,就使用单节点简单模拟下 本文主要内容包括以下: 使用 Dnsm ...

  2. Centos7安装 Hadoop(单节点)

    1.Hadoop简介 Hadoop是一个由Apache基金会所开发的开源分布式系统基础框架,使用Java开发,是处理大规模数据的软件平台. Hadoop可以从单一节点扩展到上千节点.用户可以在不了解分 ...

  3. 在centos上安装mysql5.7的三种方法

    带OS信息的是已编译的二进制文件,不带OS信息的是源码包 mysql-5.7.14-linux-glibc2.5-x86_64.tar.gz 二进制包 mysql-5.5.51.tar.gz 源码包 ...

  4. centos 7安装mysql5.5

    首先centos7 已经不支持mysql,因为收费了你懂得,所以内部集成了mariadb,而安装mysql的话会和mariadb的文件冲突,所以需要先卸载掉mariadb,以下为卸载mariadb,安 ...

  5. centOS上安装MySQL5.7

    在centos上安装mysql,前提得有sudo的权限.没有的话先去跟管理员申请一个. STEP 1 - 安装MySQL 首先打开浏览器访问下 https://dev.mysql.com/downlo ...

  6. centos6.6手动安装mysql5.5并配置主从同步

    0.实验环境 主机IP(Master) 192.168.61.150 centos6.6 从机IP(Slave)   192.168.61.157 centos6.6 1.查看centos系统版本 [ ...

  7. CentOS RPM安装MySQL-5.6

    1.检查是否有安装 安装之前应该先查询系统是否自在了mysql的软件包 rpm -qa|grep -i mysql 如果有的话需要先删除 rpm -e 软件名 --nodeps 2.下载安装包 cd/ ...

  8. centos 下安装mysql-5.6.11

    这次是在centos6.4下安装mysql,在安装之前,你要先确定你的linux已经安装了这些包: wget, gcc-c++, ncurses-devel ,cmake, make ,perl 如果 ...

  9. Centos 7 安装 mysql5.7

    1.需要下载mysql 下载地址:http://dev.mysql.com/downloads/mysql/ 2.将下载的rpm包上传到centos 7上(我是放在根下面的opt目录) 3. 安装my ...

随机推荐

  1. day10-习题

    习题 1.Homework01 (1) D -- 没有在别名上加引号(ps:别名的as可以省略) (2) B -- 判断null或非空不能用不等于号 (3) C 2.Homework02 写出查看de ...

  2. TF-GNN踩坑记录(二)

    引言 最近在尝试构建GraphTensor时,尝试把默认的特征名hidden_state改成其他时,出现了奇怪的报错. 报错 WARNING:tensorflow:Gradients do not e ...

  3. 虚拟机安装Linux系统的网络配置

    1. 进入配置文件配置.如果不知道ifcfg 后的内容.使用ifconfig vi /etc/sysconfig/network-scripts/ifcfg-ens33 如果不知道网关怎样配置就找到这 ...

  4. Java并发编程 | Synchronized原理与使用

    Java提供了多种机制实现多线程之间有需要同步执行的场景需求.其中最基本的是Synchronized ,实现上使用对象监视器( Monitor ). Java中的每个对象都是与线程可以锁定或解锁的对象 ...

  5. linux读写一个NTFS分区

    为了读写一个NTFS分区的数据,挂载的时候出现错误提示如下: root@tv:/home/xx# mount -t ntfs-3g /dev/sdb1 /media/sxx/硬盘B-临时文件 The ...

  6. Pyserial 学习

    # 连接串口 ser = serial.Serial("COM12", 115200, timeout=0.5, bytesize=8, parity=serial.PARITY_ ...

  7. TypeScript(基础篇)day01

    一.TS介绍 1.1 简介 ts是2012年由微软开发,在js的基础上添加了类型支持 1.2 优劣势 优势 :任何位置都有代码提示,增加效率:类型系统重构更容易:使用最新的ECMAscript语法 劣 ...

  8. 真正“搞”懂HTTP协议04之搞起来

    前两篇文章,我们从空间和时间的角度都对HTTP有了一定的学习和理解,那么基于上一篇的HTTP发展的时间顺序,我会在后面的文章由浅入深,按照HTTP版本内容的更迭,一边介绍相关字段的使用方法,一边讲解其 ...

  9. 2022春每日一题:Day 14

    题目:字符串归类 发现字符串长度总数不大,因此把每个字符串有的字母分离,存放到桶中,再枚举合并即可,时间复杂度O(len) 赛时代码: #include <cstdio> #include ...

  10. vulnhub靶场之DEATHNOTE: 1

    准备: 攻击机:虚拟机kali.本机win10. 靶机:DEATHNOTE: 1,网段地址我这里设置的桥接,所以与本机电脑在同一网段,下载地址:https://download.vulnhub.com ...