美文网首页
2021-07-14DBA数据库

2021-07-14DBA数据库

作者: 天生顽皮 | 来源:发表于2021-07-14 22:48 被阅读0次

    数据库命令

    (1)展示所有用户
    select user,host from  mysql.user;
    (2)提供专用连接线程
    show  processlist;
    (3)全库    show   databases;
    表     
    (4)表   use   mysql       show  tables;
    
    

    1.看图详解mysql

    image.png

    2.mysql体系结构及基础管理

    2.1客户端/服务器工作模型(c/s)

    (1)本地scoket连接方式:
    socket=/tmp/mysql.sock
    mysql  -S   /tmp/mysql.sock
    
    说明:只能在本地使用,不依赖于ip和端口
    
    (2) 远程tcpip连接方式
    mysql   -uroot   -p123  -h   10.0.0.51   -p  3306
    

    2.2服务端:实例

    实例:mysql+工作哦线程+预分配的内存结构
    功能:管理数据
    

    3.mysqlserver层

    3.1连接层

    1.提供连接协议(socket,tcp/ip)
    2.验证
    3.提供专用线程
    mysq> show  processlist;
    

    3.2sql层

    1.语法检查
    2.语义(DDL、DCL、CML、DTL..)
    3.权限
    4.解析器:解析预处理(沙盘)评估执行此语句的方法有哪些A方案(全盘扫描  全表 )  B方案(索引)   得出执行的计划
    5.优化器:帮我们选择他认为最优的方案(基于代价cost)
    6.执行器:按照优化器的选择执行sql语句
    得出执行结果:你需要的数据在磁盘的什么位置
    7.查询缓存(query_cache 默认不开启)可以redis替代
    8.日志记录(binlog二进制日志,golg,需要认为开启)
    
    image.png

    3.3.存储引擎层

    相当于linux文件系统,和磁盘交互的模块
    

    mysql处理语句流程图

    image.png

    4.mysql的逻辑结构(操作对象)

    逻辑-->抽象
    --------------------------------------------------------
    linux
    目录:名字   +属性
    文件:文件名 + 文件属性  +文件内容
    ---------------------------------------------------------
    mysql
    库    :   库名  +   库属性
    表    :表名   +表属性   +  表内容    +   列
    ---------------------------------------------------------
    库    show   databases;
    表     use   mysql       show  tables;
    列      desc    user;
    

    5.mysql 物理存储结构

    段  :一个表就是一个段,可以由一个或者多个区够成
    
    区   :一个区(簇),默认1M,连续的64个pages
    
    页   :一个页,默认16kb,连续的4个os block,最小的io单元
    
    
    image.png

    5.用户管理

    5.1.用户的作用

    linux用户:
         登录linux系统
         管理linux对象   文件  (linux一切都文件)
     mysql用户:
         登录musql数据库
         管理mysql对象    表  (mysql一切都表)
    

    5.2用户的定义

    linux用户:用户名
    mysql用户:用户名@‘白名单’
    白名单
    地址列表,允许白名单的ip登录mysql,管理mysql
    oldliu@'localhost'  :oldliu用户能够通过本地登录mysql
    oldliu@'10.0.0.10' :oldliu用户
    

    6.增删改查

    6.1查

    select  user,host  ,authentication_string  from mysql.user;
    authentication_string   这是查看用户有没有密码,不写就会把所有用户写出来
    
    MariaDB [(none)]> select  user,host  ,authentication_string  from mysql.user;
    +--------+-----------+-----------------------+
    | user   | host      | authentication_string |
    +--------+-----------+-----------------------+
    | root   | localhost |                       |
    | root   | 127.0.0.1 |                       |
    | root   | ::1       |                       |
    | zabbix | localhost |                       |
    +--------+-----------+-----------------------+
    4 rows in set (0.00 sec)
    

    6.2增

    本地登录MariaDB [(none)]> create  user  oldliu@'localhost';   
    ip登录并设置密码 create  user  oldyan@'10.0.0.%'   identified   by '123'; 
    

    6.3改

    6.4删除

    MariaDB [(none)]> drop  user  oldliu@'localhost';
    Query OK, 0 rows affected (0.00 sec)
    
    注意8.0版本以前,是可以通过grant命令 建立用户+权限

    7.权限管理

    (1)作用

    用户对数据库对象,有哪些管理能力
    

    (2)权限的表现方式

    具体命令
    MariaDB [(none)]> show  privileges;
    +-------------------------+---------------------------------------+-------------------------------------------------------+
    | Privilege               | Context                               | Comment                                               |
    +-------------------------+---------------------------------------+-------------------------------------------------------+
    | Alter                   | Tables                                | To alter the table                                    |
    | Alter routine           | Functions,Procedures                  | To alter or drop stored functions/procedures          |
    | Create                  | Databases,Tables,Indexes              | To create new databases and tables                    |
    | Create routine          | Databases                             | To use CREATE FUNCTION/PROCEDURE                      |
    | Create temporary tables | Databases                             | To use CREATE TEMPORARY TABLE                         |
    | Create view             | Tables                                | To create new views                                   |
    | Create user             | Server Admin                          | To create new users                                   |
    | Delete                  | Tables                                | To delete existing rows                               |
    | Drop                    | Databases,Tables                      | To drop databases, tables, and views                  |
    | Event                   | Server Admin                          | To create, alter, drop and execute events             |
    | Execute                 | Functions,Procedures                  | To execute stored routines                            |
    | File                    | File access on server                 | To read and write files on the server                 |
    | Grant option            | Databases,Tables,Functions,Procedures | To give to other users those privileges you possess   |
    | Index                   | Tables                                | To create or drop indexes                             |
    | Insert                  | Tables                                | To insert data into tables                            |
    | Lock tables             | Databases                             | To use LOCK TABLES (together with SELECT privilege)   |
    | Process                 | Server Admin                          | To view the plain text of currently executing queries |
    | Proxy                   | Server Admin                          | To make proxy user possible                           |
    | References              | Databases,Tables                      | To have references on tables                          |
    | Reload                  | Server Admin                          | To reload or refresh tables, logs and privileges      |
    | Replication client      | Server Admin                          | To ask where the slave or master servers are          |
    | Replication slave       | Server Admin                          | To read binary log events from the master             |
    | Select                  | Tables                                | To retrieve rows from table                           |
    | Show databases          | Server Admin                          | To see all databases with SHOW DATABASES              |
    | Show view               | Tables                                | To see views with SHOW CREATE VIEW                    |
    | Shutdown                | Server Admin                          | To shut down the server                               |
    | Super                   | Server Admin                          | To use KILL thread, SET GLOBAL, CHANGE MASTER, etc.   |
    | Trigger                 | Tables                                | To use triggers                                       |
    | Create tablespace       | Server Admin                          | To create/alter/drop tablespaces                      |
    | Update                  | Tables                                | To update existing rows                               |
    | Usage                   | Server Admin                          | No privileges - allow connect only                    |
    +-------------------------+---------------------------------------+-------------------------------------------------------+
    31 rows in set (0.00 sec)
    

    (3)授权回收权限操作

    语法
    8.0以前
    garnt   权限   on   to   用户  identified  by  '密码';
    8.0后开始
    create   用户   user  identified   by  '密码';
    gant  权限(权限可以是多个)  on  对象  to  用户  identified  by  '密码';
    

    权限介绍

    ALL        : 管理员
    具体权限: 业务用户  开发   运维等
    Grant  option  :
    gant  权限(权限可以是多个)  on  对象  to  用户  identified  by  '密码'   with  grant option;
    

    对象: 库 表

    管理员    *.*  :------> chmod    -R   755    /         根下的所有    
    普通用户   oldliu.*   :------->   chmod   755   /oldliu    /oldliu目录下的所有
    oldliu.t1  :-------->  chmod   755   /oldliu/t1   /oldliu/t1下的某个目录或者文件
    

    (4)授权案例

    案例1创建并授权管理员用户,能够通过10.0.0.%网段登录并管理数据库
    grant  all   on   *.*   oldliu@'10.0.0.%'   identified   by  '123'   with   grant   option;
    查询创建的用户
    select    user,host   from   mysql.user;
    查寻创建用户的权限
    show  grants  for   oldliu@'10.0.0.%'  ;
    
    案例2创建并授权一个app@’10.0.0.%‘业务用户,能够对app库下所有对象进行create,update,select
    grant  create,update,select     to  app@'10.0.0.%'   identified   by  '123';  
    查询
    show   grants   for   app@'10.0.0.%';
    

    (5)扩展mysql 授权表 (都在mysql库下)

    user         :   *.*
    db            :   app.*
    tables_priv    :  app.t1
    columns_priv     :   列
    
    image.png

    (6)回收权限

    linux中
    chmod  -R   755   /oldliu   ------->chmod   -R   644   /oldliu
    ###注意:mysql中不能通过重复授权修改权限,只能通过回收权限进行修改
    回收权限
    revoke  create  on  app.*  from 'app'@'10.0.0.%‘;
    

    (7)查询用户的权限

    select   *  from mysql.user/G
    

    (8)超级管理员忘记密码

    --skip-grant-tables: 跳过授权表
    --skip-networking:跳过TCP/IP连接\
    #a.关闭数据库
    #b.使用安全模式启动 
    mysql_safe   --skip-grant-tables     --skip-networking
    或者
    service mysql    start    --skip-grant-tables     --skip-networking
    #c.登录数据库并修改密码
    mysql   进入数据库
    修改密码会报错,手工加载授权表
    flush   privileges;
    #d.重启数据库
    进入数据库用修改过后的密码进入
    
    image.png

    相关文章

      网友评论

          本文标题:2021-07-14DBA数据库

          本文链接:https://www.haomeiwen.com/subject/abfupltx.html