secureCRT:
scheme : 计划
emulation: 模拟
今日内容
https://www.cnblogs.com/pyyu/p/9467289.html mysql博客
mysql (分支 mariadb)
1.安装mariadb
-yum
-源码编译安装
-下载rpm安装
yum和源码编译安装的区别?
1.路径区别-yum安装的软件是他自定义的,源码安装的软件./configure --preifx=软件安装的绝对路径
2.yum仓库的软件,版本可能比较低,而源码编译安装,版本可控
3.编译安装的软件,支持第三方功能扩展./configure 这里可以加上很多参数,定制功能
yum仓库的区别
1.阿里云的yum仓库
2.假设mysql官网,也会提供rpm包,源码包,以及yum源,供给下载
2.配置mariadb的官方yum源,用于自动下载mariadb的rpm软件包,自动安装
注意点:阿里云提供的yum仓库,和epel源仓库,它也有mariadb,但是版本可能会很低
这个是yum默认的mariadb的版本信息
mariadb x86_64 1:5.5.60-1.el7_5 base 8.9 M
那我们就得选用mariadb的官方yum源,
3.配置官方的mariadb的yum源,手动创建 mariadb.repo仓库文件 (此步重要!!!!!!!!!!!)
touch /etc/yum.repos.d/mariadb.repo
然后写入如下内容
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
4.通过yum安装mariadb软件,安装mariadb服务端和客户端 (由于是国外镜像源,因此下载速度可能很慢)
yum install MariaDB-server MariaDB-client -y
5.如果下载速度太慢,请删除 mariadb.repo,只是为了使用阿里云的yum源中的mariadb
rm -rf /etc/yum.repos.d/Mariadb.repo
然后清空yum 缓存
yum clean all
6.使用阿里云的yum下载 mariadb (阿里云的mariadb包名是小写的,而官方的是大写的!!!!注意的)
yum install mariadb-server mariadb -y
Ubuntu : 配置好 apt 源之后,
apt-get install mariadb-server mariadb-client -y
7.安装完成后,启动mariadb服务端
systemctl start/stop/restart/status mariadb
systemctl enable mariadb 开机启动mariadb
8.mysql初始化
mysql_secure_installation 这条命令可以初始化mysql,删除匿名用户,设置root密码等等....
MariaDB远程访问设置:
1.安装mariaDB
2.登陆到root更新root的host
3.Grant分配权限
4.打开防火墙端口设置
5.检查mariaDb端口设置,修改/etc/mysql/mariadb.conf.d目录下,
50-server.cnf的bind-address=0.0.0.0
6.重启服务
从文件中的注释上来看,它主要有这么几个配置文件
1. /etc/mysql/mariadb.cnf 默认配置文件,
2. /etc/mysql/conf.d/*.cnf 设置全局项的文件
3. “/etc/mysql/mariadb.conf.d/*.cnf” 设置与MariaDB相关的信息
4. “~/.my.cnf” 设置该账户对应的信息
这也就是为什么我们在my.cnf做相关设置有的时候不起作用
(可能在其他配置文件中有相同的项,MySQL最终采用的是另外一个文件中的设置)。
根据官方的说法, MariaDB为了提高安全性,
默认只监听127.0.0.1中的3306端口并且禁止了远程的TCP链接,
我们可以通过下面两步来开启MySQL的远程服务
1. 注释掉skip-networking选项来开启远程访问.
2. 注释bind-address项,该项表示运行哪些IP地址的机器连接,允许所有远程的机器连接
9.设置mysql的中文编码支持,修改/etc/my.cnf
1.
vi /etc/my.cnf
在[mysqld]中添加参数,使得mariadb服务端支持中文
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
2.重启mariadb服务,读取my.cnf新配置
systemctl restart mariadb
3.登录数据库,查看字符编码
mysql -uroot -p
输入 \s 查看编码
10.mysql常用命令
desc 查看表结构 === show full columns from 表名;
show databases; === show schemas;
create database 数据库名
create table 表名
show create database 库名 查看如何创建db的
show create table 表名; 查看如何创建table结构的
#修改mysql的密码
set password = PASSWORD('redhat');
#创建mysql的普通用户,默认权限非常低
create user yining@'%' identified by 'yiningzhenshuai';
#查询mysql数据库中的用户信息
use mysql;
select host,user,password from user;
11.给用户添加权限命令
grant all privileges on *.* to 账户@主机名 对所有库和所有表授权所有权限
grant all privileges on *.* to yining@'%'; 给yining用户授予所有权限
revoke delete on 数据库.* from 用户; 撤销权限
flush privileges; 刷新授权表
12.授予远程登录的权限命令 (root不能远程登录的问题??)
grant all privileges on *.* to yining@'%'; 给yining用户授予所有权限
grant all privileges on *.* to root@'%' identified by 'redhat'; #给与root权限授予远程登录的命令
此时可以在windows登录linux的数据库
mysql -uyining -p -h 服务器的地址 连接服务器的mysql
13.学习mysql的数据备份与恢复
1.mysqldump -u root -p --all-databases > /data/AllMysql.dump 导出当前数据库的所有db,到一个文件中
2.登录mysql 导入数据
mysql -u root -p
> source /data/AllMysql.dump
3.通过命令导入数据
mysql -uroot -p < /data/AllMysql.dump #在登录时候,导入数据文件,一样可以写入数据
配置文件的格式
*.conf
*.cnf
*.ini
*.yml
mysql的主从复制架构,
需要准备两台机器,并且可以通信,安装好2个mysql,保持版本一致性
mysql -v 查看数据库版本
1.准备主库的配置文件 /etc/my.cnf
写入开启主库的参数
[mysqld]
server-id=1 #标注 主库的身份id
log-bin=s15mysql-bin #那个binlog的文件名
2.重启mairadb,读取配置文件
systemctl restart mariadb
3.查看主库的状态
mysql -uroot -p
show master status; #这个命令可以查看 日志文件的名字,以及数据起始点
4.创建用于主从数据同步的账户
create user 'yuanhao'@'%' identified by 'yuanhaobuxitou';
注意: 用户名 字符中 不可存在 横杠 ‘-’, 下划线可以。
5.授予主从同步账号的,复制数据的权限
grant replication slave on *.* to 'yuanhao'@'%';
6.进行数据库的锁表,防止数据写入
flush table with read lock;
7.将数据导出
mysqldump -u root -p --all-databases > /opt/zhucong.dump
8.然后将主库的数据,发送给从库
scp /opt/zhucong.dump root@从库:/opt/
9.此时去从库的mysql上,登录,导入主库的数据,保持数据一致性
mysql -uroot -p
source /opt/zhucong.dump
在CNF文件中,它应该是 log-bin 不是log_bin
但在系统变量,比如show variables like 'log_bin' 的时候是 log_bin
如果用错显然是不对的。 在不同场合下使用。
从库的配置
1.写入my.cnf,从库的身份信息
vi /etc/my.cnf
[mysqld]
server-id=10
2.检查一下主库和从库的 参数信息
show variables like 'server_id'; # 注意: 不可是 'server-id'
show variables like 'log_bin'; # 不可是 'log-bin'
3.通过一条命令,开启主从同步
change master to master_host='192.168.0.101',
master_user='forever_dump',
master_password='forever_dump666666',
master_log_file='mysql-bin.000001',
master_log_pos=760;
4.开启从库的slave同步
start slave;
5.查看主从同步的状态
show slave status\G;
6.查看两条参数 ,确保主从正常
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
从库中断数据 :
stop slave;
清掉同步信息:
reset slave all;
https://www.cnblogs.com/gomysql/p/5852607.html
MySQL关闭自动commit(autocommit)
https://www.jianshu.com/p/b13ec76117c4
********************* MySQL 8.0 ************************
************************注意注意注意注意注意注意**********
MYSQL 8.0内新增加mysql_native_password函数,通过更改这个函数密码来进行远程连接。
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY'MyPass@123';
create user UserName; # 创建用户
drop user UserName; # 删除用户
alter user suosuo@'%' identified by'123456'; # 修改用户密码
alter user suosuo identified by'123456'; # 修改用户密码
MySQL修改root密码的多种方法:
https://www.cnblogs.com/liufei88866/p/5619215.html
Windows 下 MariaDB (zip 免安装) 的手动安装与使用:
https://blog.csdn.net/joyous/article/details/78641361
******************************** Redis ****************************************
在linux安装redis
通过源码编译安装redis
1.下载源码包
wget http://download.redis.io/releases/redis-4.0.10.tar.gz
2.解压缩redis
tar -zxf redis-4.0.10.tar.gz
3.进入redis源码,直接可以编译且安装
make && make install
4.可以指定配置文件启动redis
vim /opt/redis-4.0.10/redis.conf
1.更改bind参数,让redis可以远程访问
bind 0.0.0.0
2.更改redis的默认端口
port 6380
3.使用redis的密码进行登录
requirepass 登录redis的密码
4.将server 进程 设为 后台运行, 是否是守护进程运行方式运行 ,默认 为 no
daemonize yes ,
daemon: 守护进程
5.开启保护模式
protected-mode yes
(1)redis没有用户概念,redis只有密码
(2)redis默认在工作在保护模式下。不允许远程任何用户登录的(protected-mode)
6.指定配置文件启动
redis-server redis.conf
测试 是否可以 ping 通:
桥命令 pnig , 回答 为pong 代表 可以 通
5.通过新的端口和密码登录redis
redis-cli -p 6380
登录后
auth 密码
redis还支持交互式的参数,登录数据库
redis-cli -p 6380 -a redis的密码 (这个不太安全)
6.通过登录redis,用命令查看redis的密码
config set requirepass 新的密码 #设置新密码
config get requirepass #获取当前的密码
过滤出文件的空白行和注释行
grep -v "^#" redis.conf | grep -v "^$"
************** redis 命令 *******************
type key : 查看类型
increment :增加 ---> incr number
decrement : 减少 ---->decr number
intersection : 交集 ----> sinter s1 s2
Difference set : 差集 ---> sdiff s1 s2
union : 并集 ----------> sunion s1 s2
有序集合 : 都是以z开头的命令
******************** redis 发布订阅 ****************
subscribe :订阅
publish : 发布
****************** 持久化 ************************
》》 rdb 持久化:
bind 10.0.0.10 127.0.0.1 #redis绑定地址
port 6377
daemonize yes
logfile /data/6377/redis.log
save 900 1 #rdb机制 每900秒 有1个修改记录
save 300 10 #每300秒 10个修改记录
save 60 10000 #每60秒内 10000修改记录
dbfilename dbmp.rdb #rdb持久化文件
dir /data/6377 #定义持久化文件存储位置
requirepass redhat #redis登录密码
************* 注意 大坑 ****************
redis 配置文件 中的注释 必须要单独另起一行 ,
不允许在相同有效代码行后添加注释,其会把后面的注释当成当前行命令传入参数去编译执行;
而该命令配置没有参数传入或传入的参数格式错误自然就报错了
daemonize yes
port 6377
logfile /data/6379/redis.log
dir /data/6377
dbfilename aof.rdb
save 900 1
save 300 10
save 60 10000
appendonly yes
appendfsync
daemonize yes
port 6377
logfile /data/6377/redis.log
dir /data/6377
dbfilename dbmp.rdb
save 900 1
#rdb机制 每900秒 有1个修改记录
save 300 10
#每300秒 10个修改记录
save 60 10000
#每60秒内 10000修改记录
************************** 主从同步 **************************
slaveof 127.0.0.1 6380 : 表明主库
slaveof no one : 接触 从 库绑定
info replication : 检查 主从状态
查看主从同步信息: redis-cli -p 6366 info replication
************************* 哨兵集群 *********************
Sentinel: 哨兵
监控 redis 是否运行良好, 并自动进行 自动故障转义
redis的一个进程,但是不存储数据,只是监控redis
查看 sentinel 的状态: redis-cli -p 26369 info sentinel
************************ redis-cluster *******************
https://www.cnblogs.com/PatrickLiu/p/8458788.html
slot : 槽位
cluster : 集群
redis-trib.rb create --replicas 2 127.0.0.1:7021 127.0.0.1:7022 127.0.0.1:7023 127.0.0.1:7024 127.0.0.1:7025 127.0.0.1:7026
apt install gcc patch libffi-dev python-dev zlib-dev bzip2-dev openssl-dev ncurses-dev sqlite-dev readline-dev tk-dev gdbm-dev db4-dev libpcap-dev xz-devel openssl openssl-dev -y