1. # 查看mysql安装的默认密码
    2. grep password /var/log/mysqld.log
    3. # 修改mysql密码
    4. mysqladmin -uroot -p'默认密码' password '新密码'
    5. # 连接mysql
    6. mysql -uroot -p'密码'
    7. # 查询默认数据库
    8. show databases;
    9. useradd -r -g mysql -s /bin/false mysql
    10. # 二进制安装后数据库初始化
    11. # 自建mysql-yum仓库(多台服务)
    12. # 数据库语言
    13. # 查看数据库
    14. show databases;
    15. # 使用/进入数据库
    16. use database_name;
    17. # 查看当前使用的数据库
    18. select databasae();
    19. # 删除数据库
    20. drop databasae databasae_name;
    21. # 重要文件位置:/var/lib/mysql -->清理和备份
    22. # 创建表
    23. create table table_name (列名 类型, 列名 类型);
    24. create table t1 (id int, name varchar);
    25. # 查看库中所有表
    26. show tables;
    27. # 插入数据
    28. insert into table_name (数据);
    29. # 查询表中的数据
    30. select * from table_name;
    31. # 删除表
    32. drop table table_name;
    33. # 查看表结构
    34. desc table_name;
    35. # 更新数据
    36. update students set name='liming' age=18 where id=2;
    37. # 修改mysql数据库密码
    38. usr mysql;
    39. update mysql.user set authentication_string=password('root') where user="root"
    40. 刷新
    41. flush privileges;
    42. --------------------------------------------------------------
    43. # mysql忘记密码处理
    44. 修改mysql.cnf配置文件,在[mysqld]下面添加如下,重启服务连接时,直接回车即可
    45. [mysqld]
    46. skip-grant-tables
    47. 设置密码
    48. update user set authentication_string = password("root") where user = "root" and host='localhost';
    49. 删除配置文件中信息并重启服务
    50. --------------------------------------------------------------
    51. # 删除数据
    52. delete from table_name where id=1;
    53. >>>>>>>>>>>>>>>>>>>>| DCL
    54. 权限级别
    55. mysql用户管理
    56. mysql权限原理
    57. mysql权限示例
    58. # 创建用户 -- 授权用户不会记录到日志中
    59. create user zhangsan@'IP' identified by 'zhangsan@123';
    60. create user zhangsan@'%' identified by 'zhangsan@123'; ---> 不包括localhost,需要另外给localhost授权
    61. # 删除用户
    62. drop user zhangsan@'localhost';
    63. # 查看所有用户
    64. select user from mysql.user;
    65. # 授权(未授权的普通用户查看数据库时看不到默认的数据库列表)
    66. grant 关键字
    67. 授权格式:grant 权限列表 on 数据库.表名 to 用户名@登录主机 [identified by "密码" with option参数]; 
    68. ==权限列表:all 所有权限(不包括授权权限)
    69. select,update 查询更新
    70. ==数据库.表名: * 所有库下的所有表
    71. web.* web库下的所有表
    72. web.stu_info web库下的stu_info
    73. # 远程登录权限
    74. grant all privileges on *.* to 'root'@'%';
    75. # 查看权限
    76. show grants;
    77. # 撤销权限
    78. revoke 关键字
    79. # 查看二进制日志文件
    80. mysqlbinlog -v /var/lib/mysql/localhost-bin.**
    81. # 修改密码
    82. mysqladmin -uroot -p'原密码' password '新密码'
    83. 或者
    84. set password=password('Password'); ---> 使用password函数可以进行加密存储安全性
    85. flush privileges; --> 刷新
    86. -- Error 1227(42000),没有权限刷新
    87. ----| 使用root修改其他用户密码
    88. set password=password('password');
    89. # 登陆mysql
    90. msyql -uroot -ppassword msyql -e 'show tables'
    91. -u 用户名
    92. -p 密码
    93. -h ip地址
    94. -P 端口
    95. mysql 指定的数据数据库
    96. -e 不登录,制作查询
    97. # 不登录服务情况下给root用户数据库 d1中创建表t1
    98. mysql -uroot -p'root' -e 'create database d1';
    99. mysql -uroot -p'root' -e 'show databases';
    100. mysql -uroot -p'root' d1 -e 'create table d1 (id int, name varchar(20))';
    101. # 查看root用户的数据库d1中的表
    102. mysql -uroot -p'root' d1 -e 'show tables';
    103. ------------------------------------------------------------------------------------------
    104. mysql备份
    105. # 安装xtrabackup工具
    106. yum -y install percona-xtrabackup-24.x86_64
    107. # --| 完全备份
    108. innobackupex命令
    109. inno mysql默认引擎
    110. backup 备份
    111. ex 执行
    112. #
    113. innobackupex --user=root --password='root' /xtrabackup/full
    114. # 查看二进制日志文件位置
    115. cat /xtrabackup/full/时间目录/xtrabackup-binlog_info
    116. # --| 完全恢复
    117. # 测试删库
    118. 1> 停止mysql数据库服务
    119. 2> 清理环境(模拟损坏)
    120. rm -rf /var/lib/mysql/*
    121. rm -rf /var/log/mysqld.log
    122. 3> 生成回滚日志
    123. innobackupex --apply-log /xtrabackup/full/时间目录/ -->指定备份点
    124. 4> 恢复文件 ---> 恢复之前先启动mysql(模拟损坏时相当于mysql重置了,需要修改密码)
    125. innobackupex --copy-back /xtrabackup/full/时间目录/ -->指定备份点
    126. chown -R mysql.mysql /var/lib/mysql
    127. 注意:恢复文件后产生的文件是root用户,mysql一般是设置的普通用户,需要修改文件用户和用户组在进行启动,否则会报错服务启动
    128. 5> 登陆验证
    129. systemctl start mysql
    130. mysql -uroot -ppassword'密码'
    131. show databases;
    132. # --| 增量备份
    133. 创建一个测试数据库和表
    134. create database testdb;
    135. create table testtb (id int);
    136. insert into testtb values (1);
    137. 调整系统时间(模拟不同日期进行备份)
    138. date 03311230 -->3月31日12点半
    139. # 完全备份
    140. innobackupex --user=root --password='root' /xtrabackup/full
    141. # 修改系统时间(模拟第二天操作)-- 插入了一条数据
    142. mysql -uroot -p'密码' -e 'insert into testdb.testtb values (2);'
    143. # 进行增量备份(和完全备份的区别:incremental和incremental-basedir= -----> 前者表示增量备份的存放位置,后者表示基于那一次的备份进行增量)
    144. 一般情况,周一到周五做增量;周六和周日选择其中某一天做完全备份
    145. # --| 增量恢复流程
    146. 1> 停止数据库 systemctl stop mysql
    147. 2> 清理环境(模拟损坏) rm -rf /var/lib/mysql/*
    148. 3> 周一
    149. innobackupex --apply-log --redo-only /xtrabackup/full/2021-03-01_00-00-06 ---> 回滚合并
    150. 4> 周二
    151. innobackupex --apply-log --redo-only /xtrabackup/full/2021-03-01_00-00-06 --incremental-dir=/xtrabackup/full/2021-03-01_00-00-06
    152. 注意:incremental-dir是增量备份的路径
    153. 5> 恢复
    154. innobackupex --copy-back /xtrabackup/full/2021-03-01_00-00-06
    155. 注意: 恢复时使用的是完整备份的数据(在进行增量恢复时,会将其中的数据进行整合)
    156. 授权并启动服务
    157. chown -R mysql.mysql /var/lib/mysql
    158. 6> 验证检查记录
    159. # --| 差异备份
    160. 每次备份都是基于完全备份进行的
    161. # --| 差异恢复
    162. ---------------------------| mysqldump
    163. mysqldump -h 服务器 -u用户 -p密码 -P 端口 数据库名 --master-data=2 --flush-logs > `date+%F-%H`-mysql-all.sql
    164. # 实例
    165. mysqldump -uroot -p'root' --all-databases --single-transaction > /backup/2021-03-31-mysql-all.sql
    166. --all-databases 所有数据库
    167. --single-transaction 保持innodb的一致性,可用性 -- 不影响服务的可用
    168. --master-data 记录二进制日志(1表示日志记录没有#号,2表示日志记录前面有#符号)
    169. --flush-logs 日志轮转,节省空间(清理旧的文件保留新的文件)
    170. # 观察备份细节-使用vi命令打开备份的sql文件中会发现大量的(LOCK TABLES `user` WRITE) 这就是各种锁机制,保证数据的一致性
    171. # 数据库恢复(还原)
    172. 1> 备份二进制文件
    173. cp /var/lib/mysql/*bin* ~
    174. 2> 停止数据库库
    175. 3> 清理环境(模拟损坏)
    176. 4> 启动数据库
    177. 5> 恢复数据
    178. mysql -uroot -p'root1234' < /backup/2021-03-31-mysql-all.sql
    179. mysql -uroot -p'root1234' -e 'flush privileges'
    180. 6> 验证
    181. ==========================================6章 集群