# 查看mysql安装的默认密码
grep password /var/log/mysqld.log
# 修改mysql密码
mysqladmin -uroot -p'默认密码' password '新密码'
# 连接mysql
mysql -uroot -p'密码'
# 查询默认数据库
show databases;
useradd -r -g mysql -s /bin/false mysql
# 二进制安装后数据库初始化
# 自建mysql-yum仓库(多台服务)
# 数据库语言
# 查看数据库
show databases;
# 使用/进入数据库
use database_name;
# 查看当前使用的数据库
select databasae();
# 删除数据库
drop databasae databasae_name;
# 重要文件位置:/var/lib/mysql -->清理和备份
# 创建表
create table table_name (列名 类型, 列名 类型);
create table t1 (id int, name varchar);
# 查看库中所有表
show tables;
# 插入数据
insert into table_name (数据);
# 查询表中的数据
select * from table_name;
# 删除表
drop table table_name;
# 查看表结构
desc table_name;
# 更新数据
update students set name='liming' age=18 where id=2;
# 修改mysql数据库密码
usr mysql;
update mysql.user set authentication_string=password('root') where user="root"
刷新
flush privileges;
--------------------------------------------------------------
# mysql忘记密码处理
修改mysql.cnf配置文件,在[mysqld]下面添加如下,重启服务连接时,直接回车即可
[mysqld]
skip-grant-tables
设置密码
update user set authentication_string = password("root") where user = "root" and host='localhost';
删除配置文件中信息并重启服务
--------------------------------------------------------------
# 删除数据
delete from table_name where id=1;
>>>>>>>>>>>>>>>>>>>>| DCL
权限级别
mysql用户管理
mysql权限原理
mysql权限示例
# 创建用户 -- 授权用户不会记录到日志中
create user zhangsan@'IP' identified by 'zhangsan@123';
create user zhangsan@'%' identified by 'zhangsan@123'; ---> 不包括localhost,需要另外给localhost授权
# 删除用户
drop user zhangsan@'localhost';
# 查看所有用户
select user from mysql.user;
# 授权(未授权的普通用户查看数据库时看不到默认的数据库列表)
grant 关键字
授权格式:grant 权限列表 on 数据库.表名 to 用户名@登录主机 [identified by "密码" with option参数];
==权限列表:all 所有权限(不包括授权权限)
select,update 查询更新
==数据库.表名: * 所有库下的所有表
web.* web库下的所有表
web.stu_info web库下的stu_info表
# 远程登录权限
grant all privileges on *.* to 'root'@'%';
# 查看权限
show grants;
# 撤销权限
revoke 关键字
# 查看二进制日志文件
mysqlbinlog -v /var/lib/mysql/localhost-bin.**
# 修改密码
mysqladmin -uroot -p'原密码' password '新密码'
或者
set password=password('Password'); ---> 使用password函数可以进行加密存储安全性
flush privileges; --> 刷新
-- Error 1227(42000),没有权限刷新
----| 使用root修改其他用户密码
set password=password('password');
# 登陆mysql
msyql -uroot -ppassword msyql -e 'show tables'
-u 用户名
-p 密码
-h ip地址
-P 端口
mysql 指定的数据数据库
-e 不登录,制作查询
# 不登录服务情况下给root用户数据库 d1中创建表t1
mysql -uroot -p'root' -e 'create database d1';
mysql -uroot -p'root' -e 'show databases';
mysql -uroot -p'root' d1 -e 'create table d1 (id int, name varchar(20))';
# 查看root用户的数据库d1中的表
mysql -uroot -p'root' d1 -e 'show tables';
------------------------------------------------------------------------------------------
mysql备份
# 安装xtrabackup工具
yum -y install percona-xtrabackup-24.x86_64
# --| 完全备份
innobackupex命令
inno mysql默认引擎
backup 备份
ex 执行
#
innobackupex --user=root --password='root' /xtrabackup/full
# 查看二进制日志文件位置
cat /xtrabackup/full/时间目录/xtrabackup-binlog_info
# --| 完全恢复
# 测试删库
1> 停止mysql数据库服务
2> 清理环境(模拟损坏)
rm -rf /var/lib/mysql/*
rm -rf /var/log/mysqld.log
3> 生成回滚日志
innobackupex --apply-log /xtrabackup/full/时间目录/ -->指定备份点
4> 恢复文件 ---> 恢复之前先启动mysql(模拟损坏时相当于mysql重置了,需要修改密码)
innobackupex --copy-back /xtrabackup/full/时间目录/ -->指定备份点
chown -R mysql.mysql /var/lib/mysql
注意:恢复文件后产生的文件是root用户,mysql一般是设置的普通用户,需要修改文件用户和用户组在进行启动,否则会报错服务启动
5> 登陆验证
systemctl start mysql
mysql -uroot -ppassword'密码'
show databases;
# --| 增量备份
创建一个测试数据库和表
create database testdb;
create table testtb (id int);
insert into testtb values (1);
调整系统时间(模拟不同日期进行备份)
date 03311230 -->3月31日12点半
# 完全备份
innobackupex --user=root --password='root' /xtrabackup/full
# 修改系统时间(模拟第二天操作)-- 插入了一条数据
mysql -uroot -p'密码' -e 'insert into testdb.testtb values (2);'
# 进行增量备份(和完全备份的区别:incremental和incremental-basedir= -----> 前者表示增量备份的存放位置,后者表示基于那一次的备份进行增量)
一般情况,周一到周五做增量;周六和周日选择其中某一天做完全备份
# --| 增量恢复流程
1> 停止数据库 systemctl stop mysql
2> 清理环境(模拟损坏) rm -rf /var/lib/mysql/*
3> 周一
innobackupex --apply-log --redo-only /xtrabackup/full/2021-03-01_00-00-06 ---> 回滚合并
4> 周二
innobackupex --apply-log --redo-only /xtrabackup/full/2021-03-01_00-00-06 --incremental-dir=/xtrabackup/full/2021-03-01_00-00-06
注意:incremental-dir是增量备份的路径
5> 恢复
innobackupex --copy-back /xtrabackup/full/2021-03-01_00-00-06
注意: 恢复时使用的是完整备份的数据(在进行增量恢复时,会将其中的数据进行整合)
授权并启动服务
chown -R mysql.mysql /var/lib/mysql
6> 验证检查记录
# --| 差异备份
每次备份都是基于完全备份进行的
# --| 差异恢复
---------------------------| mysqldump
mysqldump -h 服务器 -u用户 -p密码 -P 端口 数据库名 --master-data=2 --flush-logs > `date+%F-%H`-mysql-all.sql
# 实例
mysqldump -uroot -p'root' --all-databases --single-transaction > /backup/2021-03-31-mysql-all.sql
--all-databases 所有数据库
--single-transaction 保持innodb的一致性,可用性 -- 不影响服务的可用
--master-data 记录二进制日志(1表示日志记录没有#号,2表示日志记录前面有#符号)
--flush-logs 日志轮转,节省空间(清理旧的文件保留新的文件)
# 观察备份细节-使用vi命令打开备份的sql文件中会发现大量的(LOCK TABLES `user` WRITE) 这就是各种锁机制,保证数据的一致性
# 数据库恢复(还原)
1> 备份二进制文件
cp /var/lib/mysql/*bin* ~
2> 停止数据库库
3> 清理环境(模拟损坏)
4> 启动数据库
5> 恢复数据
mysql -uroot -p'root1234' < /backup/2021-03-31-mysql-all.sql
mysql -uroot -p'root1234' -e 'flush privileges'
6> 验证
==========================================6章 集群