Linux--5 mariadb和redis的安装
一、MYSQL(mariadb)
MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。
开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。
MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。
Red Hat Enterprise Linux/CentOS 7.0 发行版已将默认的数据库从 MySQL 切换到 MariaDB。

1、安装方式的比较
1)我们知道linux上安装软件的方式有如下几种:
- 源码编译安装
- 下载rpm包安装
- yum安装
2)yum和源码编译安装的区别?
- 路径有区别,yum安装的软件是他自定义的,源码编译安装的软件./configure --preifx=软件安装的绝对路径;
- yum仓库的软件,版本可能比较低,而源码编译安装,版本可控;
- 编译安装的软件,支持第三方功能扩展./configure 这里可以加上很多参数,定制功能;
yum仓库之间的区别?
- 我们之前使用过阿里云的yum仓库,其中有我们需要的一些软件包;
- 假设要下载mysql软件,则mysql官网,也会提供rpm包,源码包,以及yum源,供给下载;
2、安装MariaDB的步骤
阿里云提供的yum仓库和epel源仓库,它们都也有mariadb,但是版本可能会很低,所以我们下面就选用mariadb的官方yum源。
第一步:添加 MariaDB yum 仓库
|
1
|
vi /etc/yum.repos.d/MariaDB.repo 编辑创建mariadb.repo仓库文件 |
将下面代码写入创建的MariaDB.repo仓库中,即配置官方的mariadb的yum源
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=
第二步:在 CentOS 7 中使用yum命令安装 MariaDB
当 MariaDB 仓库地址添加好后,你可以通过下面的一行命令轻松安装 MariaDB。
|
1
|
yum install MariaDB-server MariaDB-client -y 安装mariadb服务端和客户端 |
注意:由于是国外镜像源,因此下载速度可能很慢
若不想使用MariaDB官方的yum源,而选择使用阿里云的yum源中的mariadb,则将上述的Mariadb.repo删除,并清空yum缓存,然后使用如下命令从阿里云的yum下载
|
1
|
yum install mariadb-server mariadb -y 注意阿里云的包名是小写,官方是大写 |
第三步:启动mariadb相关命令
|
1
2
3
4
|
systemctl start mariadb #启动MariaDBsystemctl stop mariadb #停止MariaDBsystemctl restart mariadb #重启MariaDBsystemctl enable mariadb #设置开机启动 |

此时数据库客户端便可以去连接数据库,如下:

第四步:初始化mysql
在确认 MariaDB 数据库软件程序安装完毕并成功启动后请不要立即使用。为了确保数据库的安全性和正常运转,需要先对数据库程序进行初始化操作。确保mariadb服务器启动后,执行如下命令初始化:
|
1
|
mysql_secure_installation |
这个初始化操作涉及下面 5 个步骤:
- 设置 root 管理员在数据库中的密码值(注意,该密码并非 root 管理员在linux系统中的密码,这里的密码值默认应该为空,可直接按回车键)。
- 设置 root 管理员在数据库中的专有密码。
- 随后删除匿名账户,并使用 root 管理员从远程登录数据库,以确保数据库上运行的业
务的安全性。
- 删除默认的测试数据库,取消测试数据库的一系列访问权限。
- 刷新授权列表,让初始化的设定立即生效。
具体效果如下图:

3、设置mysql的中文编码支持,修改/etc/my.cnf
进入数据库,输入 \s 查看数据库编码,如下图:

|
1
|
vi /etc/my.cnf 编辑文件/etc/my.cnf,在[mysqld]下边写入下面两行代码 |
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
|
1
|
systemctl restart mariadb 重启mariadb服务,读取my.cnf新配置 |
登录数据库,再次\s查看字符编码,此时都为utf8,如下图:

注意:此时若编码问题还没解决,那问题应该是数据库创建时没有指定编码,默认了非utf8编码,按以上方法修改完/etc/my.cnf文件后再进行创建的数据库编码就是utf8了。
|
1
|
MariaDB [(none)]> show create database s15; 查看数据库s15的编码 |

4、mysql基本命令
|
1
|
MariaDB [(none)]> set password = PASSWORD('redhat123'); 修改mysql密码 |
生产环境里不会死磕root用户,为了数据库的安全以及和其他用户协同管理数据库,就需要创建其他数据库账户,然后分配权限,满足工作需求
|
1
2
3
|
MariaDB [(none)]> create user wll@'127.0.0.1' identified by 'wll123'; 创建用户wllMariaDB [(none)]> use mysql; 切换到mysql数据库下,其中user表存放用户信息MariaDB [mysql]> select host,user,password from user where user='wll'; 查看用户信息 |
切换普通用户wll,查看数据库信息,发现无法看到完整的数据库列表
|
1
2
|
[root@master ~]# mysql -uwll -p -h 服务器地址 以普通用户wll身份登录数据库MariaDB [(none)]> show databases; 查看数据库信息,无法看到完整的数据库列表 |
5、数据库权限设置
1)mysql使用grant命令对账户进行授权,grant命令常见格式如下:
grant 权限 on 数据库.表名 to 账户@主机名; 对特定数据库中的特定表授权
grant 权限 on 数据库.* to 账户@主机名; 对特定数据库中的所有表授权
grant 权限1,权限2,权限3 on *.* to 账户@主机名; 对所有库中的所有表给予多个授权
grant all privileges on *.* to 账户@主机名; 对所有库和所有表授权所有权限
使用root用户登录,进行权限设置
|
1
|
[root@localhost ~]# mysql -uroot -p |
授予用户wll操作所有数据库的所有表的所有权限
|
1
2
3
4
|
MariaDB [(none)]> grant all privileges on *.* to wll@127.0.0.1; MariaDB [(none)]> flush privileges; 刷新权限表MariaDB [(none)]> use mysql;MariaDB [mysql]> show grants for wll@127.0.0.1; |
2)授权配置
远程连接设置,设置所有库,所有表的所有权限,赋值权限给所有ip地址的root用户
|
1
2
3
|
> grant all privileges on *.* to root@'%' identified by 'password';> create user 'username'@'%' identified by 'password'; 创建用户> flush privileges; 刷新权限 |
6、数据库备份与恢复
mysqldump命令用于备份数据库数据,导出当前数据库中的所有db到一个文件,如下:
|
1
|
[root@localhost ~]# mysqldump -u root -p --all-databases > /tmp/db.dump |
进入mariadb数据库,删除一个db,如下:
|
1
2
|
[root@localhost ~]# mysql -uroot -pMariaDB [(none)]> drop database s15; |
进行数据恢复,把刚才重定向备份的数据库文件导入到mysql中,再查看数据库显示已经恢复
方式一:通过命令方式导入
|
1
|
[root@localhost ~]# mysql -uroot -p < /tmp/db.dump |
方式二:登录数据库后通过source导入
|
1
2
|
[root@localhost ~]# mysql -uroot -pMariaDB [(none)]> source /tmp/db.dump |
二、mysql主从复制
MySQL数据库的主从复制方案,是其自带的功能,并且主从复制并不是复制磁盘上的数据库文件,而是通过binlog日志复制到需要同步的从服务器上。
MySQL数据库支持单向、双向、链式级联等不同业务场景的复制。在复制的过程中,一台服务器充当主服务器(Master),接收来自用户的内容更新,而一个或多个其他的服务器充当从服务器(slave),接收来自Master上binlog文件的日志内容,解析出SQL,重新更新到Slave,使得主从服务器数据达到一致。
主从复制的逻辑有以下几种:
1)一主一从,单向主从同步模式,只能在Master端写入数据;

2)一主多从;

3)双主复制逻辑架构,此架构可以在Master1或Master2进行数据写入,或者两端同时写入(特殊设置);

在生产环境中,MySQL主从复制都是异步的复制方式,即不是严格的实时复制,但是给用户的体验都是实时的。MySQL主从复制集群功能使得MySQL数据库支持大规模高并发读写成为可能,且有效的保护了服务器宕机的数据备份。
应用场景:利用复制功能当Master服务器出现问题时,我们可以人工的切换到从服务器继续提供服务,此时服务器的数据和宕机时的数据几乎完全一致。复制功能也可用作数据备份,但是如果人为的执行drop,delete等语句删除,那么从库的备份功能也就失效了。
主从机制实现原理,如下图:

1)master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events);
2)slave将master的binary log events拷贝到它的中继日志(relay log);
3)slave重做中继日志中的事件,将改变反映它自己的数据;
练习主从复制架构:mysql的主从复制架构,需要准备两台机器,并且可以通信,安装好2个mysql,保持版本一致性。
|
1
|
mysql -V # 查看数据库版本 |
1、master主库配置
|
1
2
|
systemctl status mariadb # 查看数据库状态systemctl stop mariadb # 若数据库开启,则停止mariadb服务 |
在主库的配置文件/etc/my.cnf文件中写入开启主库的参数
|
1
|
vi /etc/my.cnf # 编辑配置文件/etc/my.cnf,写入下面两行代码 |
server-id=1 # 一个标注,代表主库的身份id
log-bin=s15mysql-bin # 那个binlog的文件名
|
1
2
3
|
[root@localhost ~]# systemctl restart mariadb # 重启mairadb,读取配置文件[root@localhost ~]# mysql -uroot -p # 登录数据库MriaDB [(none)]> show master status; # 查看日志文件的名字,以及数据起始点 |
2、master主库添加从库账号
创建用于主从数据同步的账户
|
1
|
MriaDB [(none)]> create user 'yuanhao'@'%' identified by 'passwd'; |
授予主从同步账号的,复制数据的权限
|
1
|
MriaDB [(none)]> grant replication slave on *.* to 'yuanhao'@'%'; |
进行数据库的锁表,防止数据写入,从库导入数据后解锁
|
1
2
|
MriaDB [(none)]> flush table with read lock; # 锁表MriaDB [(none)]> unlock tables; # 解锁表,从库同步完数据后解锁 |
将数据导出
|
1
|
[root@localhost ~]# mysqldump -u root -p --all-databases > /tmp/zhucong.dump |
然后将主库的数据,发送给从库
|
1
|
[root@localhost ~]# scp /tmp/zhucong.dump root@从库:/tmp/ |
3、slave从库配置
编辑配置文件/etc/my.cnf,写入从库的身份信息
|
1
|
vi /etc/my.cnf # 编辑文件,写入下面代码 |
[mysqld]
server-id=10 # 标注从库身份,区别开主库即可
检查一下主库和从库的参数信息
|
1
2
|
MriaDB [(none)]> show variables like 'server_id'; # 查看server_idMriaDB [(none)]> show variables like 'log_bin'; # 查看是否开启log_bin |
登录从库的mysql,导入主库的数据,保持数据一致性,执行完毕后便可解锁了
方式一:
|
1
2
|
[root@localhost ~]# mysql -uroot -pMriaDB [(none)]> source /tmp/zhucong.dump |
方式二:
|
1
|
[root@localhost ~]# mysql -uroot -p < /tmp/zhucong.dump |
注意:导入前可先将从库中数据删除以确保数据一致!
通过一条命令,开启主从同步
|
1
2
3
4
5
|
MriaDB [(none)]> change master to master_host='192.168.13.78',-> master_user='yuanhao',-> master_password='passwd',-> master_log_file='s15mysql-bin.000001',-> master_log_pos=571; |
开启从库的slave同步
|
1
|
MriaDB [(none)]> start slave; |
查看主从同步的状态
|
1
|
MriaDB [(none)]> show slave status\G; |
查看两条参数 ,确保主从正常
|
1
2
|
Slave_IO_Running: YesSlave_SQL_Running: Yes |
三、redis
Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。
Redis是VMware开发的开源免费的KV型NoSql缓存产品;
Redis具有很好的性能,最多可以提供10万次/秒的读写;
目前新浪微博团队组建了世界上最大规模的Redis集群;

高速缓存介绍:
- 高速缓存利用内存保存数据,读写速度远超硬盘;
- 高速缓存可以减少I/O操作,降低I/O压力;

1、yum安装(前提是要配置好阿里云yum源,epel源)
|
1
|
yum list redis # 查看是否有redis包,如下图 |

|
1
2
3
4
5
6
|
yum install redis -y # 安装redissystemctl start redis # 启动redis服务端,注意:使用yum安装的可以使用systemctlnetstat -tunlp|grep redis # 查看redis端口状态,若有结果则表示已经开启redis服务redis-cli # redis 客户端工具127.0.0.1:6379> pingPONG |
进入交互式环境,执行ping,返回pong表示安装成功,如下图:

2、源码编译安装
编译安装的优势是:
- 编译安装时可以指定扩展的module(模块),php、apache、nginx都是一样有很多第三方扩展模块,如mysql,编译安装时候,如果需要就定制存储引擎(innodb,还是MyIASM);
- 编译安装可以统一安装路径,linux软件约定安装目录在/opt/下面;
- 软件仓库版本一般比较低,编译源码安装可以根据需求,安装最新的版本;
第一步:下载redis源码包
|
1
|
[root@localhost opt]# wget http://download.redis.io/releases/redis-4.0.10.tar.gz |
第二步:解压缩
|
1
|
[root@localhost opt]# tar -zxf redis-4.0.10.tar.gz |
第三步:切换redis源码目录
|
1
2
|
[root@localhost opt]# cd redis-4.0.10[root@localhost redis-4.0.10]# ls # 查看redis-4.0.10中文件 |
注意:上面解压缩源码包后已经有了Makefile文件,如下图,所以下一步直接执行make编译即可

第四步:编译源文件
|
1
|
[root@localhost redis-4.0.10]# make && make install |
第五步:指定配置文件/opt/redis-4.0.10/redis.conf启动redis
|
1
|
[root@localhost redis-4.0.10]# redis-server redis.conf 启动redis,如下图: |

我们发现启动redis服务器,终端hung住,要再开一个终端进行redis操作,我们可以通过开启redis的后台服务,使开启redis不再独占一个终端,这只需要我们修改redis.conf文件中的daemonize参数为yes,如下:
vim /opt/redis-4.0.10/redis.conf # 编译redis的配置文件
将文件中的daemonize no 改为 daemonize yes
注意:由于发现有些同学,在使用云服务器时,安装的redis3.0+版本都关闭了protected-mode(保护模式),因而都遭遇了挖矿病毒的攻击,使得服务器99%的占用率!!
因此我们在使用redis时候,最好更改默认端口,并且使用redis密码(redis没有用户概念,redis只有密码)登录。配置文件redis.conf中的默认参数配置如下:
|
1
|
grep -v "^#" redis.conf | grep -v "^$" # 过滤出文件中的非空白行和非注释行 |

1)更改bind参数,让redis可以远程访问
bind 0.0.0.0
2)更改redis的默认端口
port 6380 # 也可以改为其他端口
3)使用redis的密码进行登录
requirepass xxx 设置登录redis的密码是xxx
注意:redis.conf文件中requirepass是注释掉的参数,放开注释,后边写上密码即可
第六步:通过新的端口和密码登录redis
方式一:
|
1
2
3
|
[root@localhost ~]# redis-cli -p 6380 # 登录redis服务器127.0.0.1:6380> auth xxx # 登录后,auth和刚设置的密码即可登录redisOK |
方式二(交互式的参数登录数据库,暴漏密码,不安全):
|
1
|
[root@localhost ~]# redis-cli -p 6380 -a xxx |
第七步:使用redis
登录后就可以使用redis存取数据了,如下:

Linux--5 mariadb和redis的安装的更多相关文章
- Linux系统下,Redis的安装与启动
1.安装Redis之前,我们先介绍下Redis: (1)Redis是什么?都有哪些特点? 概念:Redis (REmote DIctionary Server) 是用 C 语言开发的一个开源的高性能键 ...
- Linux、Windows下Redis的安装即Redis的基本使用详解
前言 什么是Redis Redis是一个基于内存的key-value结构数据库.Redis 是互联网技术领域使用最为广泛的存储中间件,它是「Remote Dictionary Service」的首字母 ...
- Linux下Redis的安装和部署
一.Redis介绍 Redis是当前比较热门的NOSQL系统之一,它是一个key-value存储系统.和Memcache类似,但很大程度补偿了Memcache的不足,它支持存储的value类型相对更多 ...
- Redis学习笔记之Linux下Redis的安装和部署
0x00 Redis介绍 Redis是当前比较热门的NOSQL系统之一,它是一个key-value存储系统.和Memcache类似,但很大程度补偿了Memcache的不足,它支持存储的value类型相 ...
- linux下redis的安装与部署
一.Redis介绍 Redis是当前比较热门的NOSQL系统之一,它是一个key-value存储系统.和Memcache类似,但很大程度补偿了Memcache的不足,它支持存储的value类型相对更多 ...
- Linux下Redis的安装和部署 详细
一.Redis介绍 Redis是当前比较热门的NOSQL系统之一,它是一个key-value存储系统.和Memcache类似,但很大程度补偿了Memcache的不足,它支持存储的value类型相对更多 ...
- Redis 部署安装
一.Redis介绍 Redis是当前比较热门的NOSQL系统之一,它是一个key-value存储系统.和Memcache类似,但很大程度补偿了Memcache的不足,它支持存储的value类型相对更多 ...
- Linux中python3,django,redis以及mariab的安装
1. Linux中python3,django,redis以及mariab的安装 2. CentOS下编译安装python3 编译安装python3.6的步骤 1.下载python3源码包 wget ...
- Linux下redis的安装
第一部分:安装redis 希望将redis安装到此目录 /usr/local/redis 希望将安装包下载到此目录 /usr/local/src 那么安装过程指令如下: $ mkdir /usr/lo ...
随机推荐
- RTSP 协议分析 (一)
RTSP 协议分析1.概述: RTSP(Real Time Streaming Protocol),实时流传输协议,是TCP/IP协议体系中的一个应用层协议,由哥伦比亚大学.网景和RealNetwor ...
- mybatis 学习四 源码分析 mybatis如何执行的一条sql
总体三部分,创建sessionfactory,创建session,执行sql获取结果 1,创建sessionfactory 这里其实主要做的事情就是将xml的所有配置信息转换成一个Confi ...
- mybatis 学习三 mapper xml 配置信息
mapper xml 映射文件 1,select 标签 简单是用就这样,其中resultType 代表从这条语句中返回的期望类型的类的完全限定名或别名.也可以使用resultMap对应的id ...
- 问题:ExecuteNonQuery 与 ExecuteScalar 结果: ExecuteNonQuery方法和ExecuteScalar方法的区别
ExecuteNonQuery方法和ExecuteScalar方法的区别 ----ExecuteNonQuery():执行命令对象的SQL语句,返回一个int类型变量,如果SQL语句是对数据库的记录进 ...
- VIsual Studio 2010 常用快捷键
1.Ctrl+S 保存 2.Ctrl+F: 查找 3.Ctrl+H: 替换 4.Ctrl+E,S: 查看空白 5.Ctrl+K+C: 注释选定内容 6.Ctrl+K+U: 取消选定注释内容 7.C ...
- 线程中t.setdaemon(), t.jion(), t.start的使用
import threading import time def f0(): pass def f1(a1,a2): time.sleep(10) f0() ") t1 = threadin ...
- linux压缩包安装jdk
1.下载jdk压缩包 $ wget http://download.oracle.com/otn-pub/java/jdk/8u144-b01/090f390dda5b47b9b721c7dfaa00 ...
- JavaScript的内部对象
JavaScript的内部对象 按创建方式不同分为:使用变量声明的隐性对象,使用new创建的显性对象 隐性对象 在赋值和声明后就是一个隐性对象,隐性对象不支持prototype属性,也无法随意扩展对象 ...
- hibernate框架内容整理 学习
1.1 ORM概述 Object Relation Mapping 对象关系映射. 对象-关系映射(OBJECT/RELATIONALMAPPING,简称ORM),是随着面向对象的软件开发方法发展而产 ...
- 15、Linux 文件属性和测试( chgrp,chown,chmod和-e -f -d -s
一.更改文件属性 1.chgrp:更改文件属组 语法: chgrp [-R] 属组名文件名 参数选项 -R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件 ...