# 查看mysql安装的默认密码grep password /var/log/mysqld.log# 修改mysql密码mysqladmin -uroot -p'默认密码' password '新密码'# 连接mysqlmysql -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');# 登陆mysqlmsyql -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.log3> 生成回滚日志 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 mysql2> 清理环境(模拟损坏) 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/mysql6> 验证检查记录# --| 差异备份 每次备份都是基于完全备份进行的# --| 差异恢复---------------------------| mysqldumpmysqldump -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章 集群