两种连接方式:
TCP/IP方式(远程、本地):
mysql -uroot -psyxk123 -h 10.0.0.51 -P3306
Socket方式(仅本地):
mysql -uroot -psyxk123 -S /tmp/mysql.sock
公司: 老板 + 经理 + 员工 + 办公区
实例: mysqld + master thread + 干活的Thread + 预分配的内存
mysql出现故障或性能问题80%以上是人为的。
结构化的查询语言
DQL 数据查询语言 select和show
DDL 数据定义语言 create和drop
DML 数据操作语言 insert 和update 和 delete
DCL 数据控制语言 grant 和 revoke
mysql> select user,host from mysql.user;
(1) 提供连接协议
Socket
TCP/IP
(2) 验证用户名(root@localhost)密码合法性,进行匹配专门的授权表。
(3) 派生一个专用连接线程(接收SQL,返回结果)
mysql> show processlist;
思考:
忘记密码的参数在哪做的手脚?
--skip-grant-tables
--skip-networking
(1)验证SQL语法和SQL_MODE
(2)验证语义
(3)验证权限
(4)解析器进行语句解析,生成执行计划(解析树)
(5)优化器(各种算法,基于执行代价),根据算法,找到代价最低的执行计划。
代价:CPU IO MEM
(6)执行器按照优化器选择执行计划,执行SQL语句,得出获取数据的方法。
(7)提供query cache(默认不开),一般不开,会用redis
(8)记录操作日志(binlog),默认没开
真正和磁盘打交道的一个层次。负责根据SQL层执行的结果,从磁盘上拿数据。
将16进制的磁盘数据,交由SQL结构化化成表,
连接层的专用线程返回给用户。
库:库名,库属性
表:表名,表属性
列:列名(字段),列属性(数据类型,约束等)
数据行(记录)
库:使用FS上的目录来表示
表:
MyISAM(ext2)
user.frm:存储的表结构(列,列属性)
user.MYD:存储的数据记录
user.MYI :存储索引
InnoDB(XFS)
time_zone.frm :存储的表结构(列,列属性)
time_zone.ibd :存储的数据记录和索引
ibdata1:数据字典信息
一般情况下(非分区表)
一个表就是一个段
一个段由多个区构成
一个区在(16k),64个连续的页,1M大小(一个区是连续的64个页,为1M大小)
SyXk.ibd
数据行存储:每次默认64个连续的page,也就是1M,我们把它称之为一个区,Mysql表根据存储的需求,会由多个区构成,我们又把表称之为一个段.
登录MySQL
管理MySQL
用户名@‘白名单‘
白名单支持的方式?
wordpress@‘%‘
wordpress@‘localhost‘
wordpress@‘127.0.0.1‘
wordpress@‘10.0.0.%‘
wordpress@‘10.0.0.5%‘
wordpress@‘10.0.0.0/255.255.254.0‘
wordpress@‘10.0.%‘
mysql> create user syxk@‘10.0.0.%‘ identified by ‘123‘;
(建用户最标准的用法)
Query OK, 0 rows affected (0.00 sec)
说明:
8.0以前,可以自动创建用户并授权
提示:8.0在grant命令添加新特性,建用户和授权分开了,grant 不再支持自动创建用户了,不支持改密码。授权之前,必须要提前创建用户。
mysql> grant all on *.* to syxk@‘10.0.0.%‘ identified by ‘123‘;
mysql> select user,host from mysql.user;
mysql> alter user syxk@‘10.0.0.%‘ identified by ‘123456‘;
mysql> drop user syxk@‘10.0.0.%‘ ;
SELECT,INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE
ALL : 以上所有权限,一般是普通管理员拥有的
with grant option:超级管理员才具备的,可给别的用户授权的功能
grant all on *.* to syxk@‘10.0.0.%‘ identified by ‘123‘ with grant option;
grant 权限 on 作用目标 to 用户 identified by 密码 with grant option;
grant SELECT,INSERT, UPDATE, DELETE, CREATE on wordpress.* to
作用目标:
*.*
wordpress.*
wordpress.t1
1.创建一个管理员用户root,可以通过10网段,管理数据库.
grant all on *.* to root@‘10.0.0.%‘ identified by ‘123‘ with grant option;
2.创建一个应用用户wordpress,可以通过10网段,wordpress库下的所有表进行SELECT,INSERT, UPDATE, DELETE.
grant SELECT,INSERT,UPDATE,DELETE on wordpress.* to wordpress@‘10.0.0.%‘ identified by ‘123‘;
mysql> show grants for wordpress@‘10.0.0.%‘;
mysql> revoke delete on wordpress.* from ‘wordpress‘@‘10.0.0.%‘;
mysql> show grants for wordpress@‘10.0.0.%‘;
(1) 如何沟通开用户
(2) 开发人员找你要root用户密码?(不给)
(1)原则上是不允许任何非DBA人员持有或申请root
(2)如果有人私下索要root密码,立刻(及时)举报。
原文:https://www.cnblogs.com/SyXk/p/12886014.html