mysql--高级篇

一、配置文件:/etc/my.cnf

[client] //client配置标记
[mysqld] //server配置开始标记。之前是client的

  • character_set_server=utf8 //字符集
  • log-bin=/opt/mysql/binlog/mysql-bin //binlog位置
  • binlog_format=ROW //binlog格式
  • server-id=11

二、权限

  • mysql权限表有4个:
    1. SELECT * FROM user where mysql.User =’user_abc’;
    2. select * from db where mysql.User =’user_abc’;
    3. select * from mysql.tables_priv;
    4. select * from mysql.columns_priv;
  • 权限命令:

    1. show GRANTS for ‘user_abc’ //列出权限,一般是user表,db表的数据
    2. grant all privileges on database.* to user_abc@localhost identified by ‘passwd’;
    3. grant all privileges on . to ‘user_abc’@’%’ identified by ‘passwd’;
    4. grant all privileges on . to ‘user_abc’@’1.1.%.%’ identified by ‘passwd’;
    5. flush privileges; //权限立即生效
  • 主从复制/binlog需要以下4个权限:

    1. REPLICATION CLIENT,REPLICATION SLAVE,SUPER,RELOAD
    2. SHOW master STATUS //binlog信息
    3. SHOW slave STATUS //master_host,master_port, master_user, binglog等信息

三、binlog命令

  • show binary logs; //binlog文件列表
  • show binlog events in ‘mysql-bin.000009’ //binlog详情
  • show binlog events in ‘mysql-bin.000009’ from 1012
  • mysqladmin -uroot -p123456 flush-logs //强制生产新的binlog文件
  • mysqlbinlog查看binlog
    1. mysqlbinlog --base64-output=decode-rows -v --start-datetime='2017-12-01 18:00:00' --stop-datetime='2017-12-01 19:00:00' mysql-bin.000009
MySQL高级知识包含多方面内容,以下是详细介绍: ### SQL语句分类 - **DQL(查询语句)**:用于从数据库中查询数据。 - **DML(写操作)**:包括添加、删除、修改数据的操作。 - **DDL(定义语句)**:用于建库、建表、修改表、索引操作、存储过程、视图等。DDL语句都是隐式提交,执行这种语句相当于执行`commit` [^1]。 - **DCL(控制语言)**:用于给用户授权或删除授权 [^1]。 ### 存储引擎 存储引擎以前叫表处理器,其功能是接收上层指令,对表中数据进行提取或写入操作。为方便管理,将连接管理、查询缓存、语法解析、查询优化等不涉及真实数据存储的功能划分为MySQL server的功能,把真实存取数据的功能划分为存储引擎的功能。不同存储引擎向上层的MySQL server层提供统一的调用接口(存储引擎API),包含如“读取索引第一条内容”“读取索引下一条内容”“插入记录”等底层函数。MySQL server完成查询优化后,按执行计划调用底层存储引擎提供的API,获取数据并返回给客户端。MySQL提供多种存储引擎,不同存储引擎管理的表存储结构和存取算法可能不同 [^1]。 ### 索引 MySQL官方定义索引是帮助MySQL高效获取数据的有序数据结构,包括数组、链表、红黑树、二叉树、堆、栈等。在数据之外,数据库系统维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用数据,从而实现高级查找算法 [^2]。 ### 全局查询日志 全局查询日志用于保存所有的SQL执行记录,主要用于测试环境,生产环境中开启会消耗大量资源,因此永远不要开启该功能。开启方式有两种: - **通过mysql的my.cnf配置开启**: ```plaintext # 开启 general_log=1 # 记录日志文件的路径 general_log_file=/usr/local/mysql-5.7.22/data/log/globalquerylog/log_globalquery.log # 输出格式 log_output=FILE ``` - **通过命令开启**: ```sql set global general_log=1; -- 全局日志可以存放在日志文件中,也可以放在MySQL系统表中。存放在日志中性能更好一点 set global log_output='TABLE'; -- 此后编写的sql语句,将会记录在mysql库里的general_log表中,可以通过下面的命令查看 select * from mysql.general_log; ``` [^3]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值