码迷,mamicode.com
首页 > 数据库 > 详细

Mysql体系结构和Mysql常用操作命令介绍

时间:2019-08-11 21:01:40      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:传递   show   sql语句   cal   改变   命令   ids   表数   锁表   

  • Mysql安装
  • CentOS7环境下安装
    获取mysql:
    wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
    rpm -ivh mysql-community-release-el7-5.noarch.rpm
    查看可安装的mysql版本:
    yum repolist enabled|grep mysql
    安装命令:
    yum install mysql-community-server
    systemctl enable mysqld
    systemctl start mysqld
    mysqladmin -u root password passwd
    mysql -uroot -p
    root账户登录Mysql

    • Mysql体系结构
    1. MySQL登录方式
      TCP/IP方式(最常用):

      mysql -uuser -ppasswd -h IP -P 3306

      Socket方式(本地):

      mysql -uuser -ppasswd -S /tmp/mysql.sock -P 3306
    2. mysqld程序运行原理
      2.1 mysqld程序结构
      技术图片
      2.2 sql语句执行过程
      连接层
      如上图在连接层中:
      1)、提供连接,TCP/IP建立连接或本地Socket连接;
      2)、身份验证;
      3)、接受用户SQL;
      SQL层
      技术图片
      1)、接受上层传递的SQL
      2)、语法验证,验证SQL语法是否满足
      3)、语义检查,判断SQL语句类型,DDL、DML、DQL等
      4)、权限检查
      5)、解析器,对语句执行前的预处理,生成解析树(就是执行计划)
      6)、优化器,根据解析器的多种执行计划,判断选择最优计划执行。会消耗系统资源
      7)、执行器,真正执行优化后的执行计划,就是执行SQL,返回产生结果,在磁盘上有改变
      8)、提供查询缓存,默认情况不开启,实际场景会使用redis、memcache等缓存替代查询缓存功能
      9)、日志记录,需要开启binlog功能
      存储层
      1)、根据SQL层的执行结果,磁盘读取数据
      2)、将16进制的磁盘数据,由SQL结构化成表
      3)、连接层专用线程返回给用户

    3.数据物理存储结构
    技术图片
    1)、库物理存储结构
    OS系统的文件系统目录存储。
    2)、表的物理存储结构,MySQL存储引擎
    InnoDB是mysql的一种存储引擎,除了innodb还有其它的,例如isam,myisam等。
    InnoDB是其中的一种存储引擎,它的特性是支持事务,并且采用多版本并发控制的方式来提高并发度。特色在于支持并发与表间引用。主要是事务表,当一个事务全部完成,才会执行update。mysql5.5后的版本,默认都支持InnoDB。

    InnoDB引擎的表:

    -rw-rw---- 1 mysql mysql       8895 4月  12 2018 default.frm
    -rw-rw---- 1 mysql mysql     114688 4月  12 2018 default.ibd

    default.frm:存储列相关信息
    default.ibd:数据行+索引

    Myisam引擎的表

    -rw-r----- 1 mysql mysql   10816 Apr 18 11:37 user.frm
    -rw-r----- 1 mysql mysql     396 Apr 18 12:20  user.MYD
    -rw-r----- 1 mysql mysql    4096 Apr 18 14:48 user.MYI

    user.frm:存储列相关信息
    user.MYD:数据行
    user.MYI:索引
    3)、表的段、区、页
    表:一个表就是一个段,可包含多个区;
    区:64个连续的页,默认1M
    页:最小的存储单元,默认16K

    • Mysql基础管理
    1. 用户管理
      查询数据库中所有用户:

      SELECT DISTINCT CONCAT(‘User: ‘‘‘,user,‘‘‘@‘‘‘,host,‘‘‘;‘) AS query FROM mysql.user;
      select host,user,password from mysql.user \G

      查询数据库中某个用户权限:

      show grants for ‘user‘@‘%‘;
    2. 权限
      grant赋予权限,常用权限有All、Select、update、insert等。

      grant all on ku.* to ‘user‘@localhost identified by ‘passwd‘;
      grant all on ku.* to ‘user1‘@‘%‘ identified by ‘passwd‘;
      grant select,update,insert on ku.* to ‘user2‘@‘%‘ identified by ‘passwd‘;

      其中“%”表示远程权限。
      revoke表示撤销权限,用法如下:

      revoke all on ku.* from ‘user‘@‘%‘;
      revoke delete,insert on ku.* from ‘user1‘@‘%‘;
    3. 命令常用参数
      mysql 常用参数:
      -u 用户
      -p 密码
      -h IP
      -P 端口
      -S socket文件
      -e 免交互执行命令
      < 导入SQL脚本

    4. 本地管理员root密码忘记处理

      # mysqld_safe --skip-grant-tables --skip-networking &
      mysql> flush privileges;
      mysql>  alter user root@‘localhost‘ identified by ‘123456‘;
      # pkill mysqld
      # systemctl start  mysqld
    5. 库备份与恢复
      mysqldump用于数据库的备份操作命令。
      5.1 库操作:
      1).导出一个库结构:(-d:--no-data)
      mysqldump  -d dbname -u root -p > dbname.sql

      导出多个库结构:

      mysqldump  -d -B  db1 db2  -u root -p > dbname.sql

      2).导出一个库数据:

      mysqldump  -t  dbname -u root -p > dbname.sql

      导出多个库数据:

      mysqldump  -t -B  db1 db2  -u root -p > dbname.sql

      3).导出一个库结构和数据:

      mysqldump  dbname -u root -p > dbname.sql

      导出多个库结构和数据:

      mysqldump  -B  db1 db2  -u root -p > dbname.sql

    5.2 表操作:
    1).导出一张表数据:

    mysqldump  -t dbname  table1 -u root -p > dbname.sql

    导出多张表数据:

    mysqldump  -d  -B  dbname --tables  table1 table2 -u root -p > dbname.sql

    2).导出一张表数据和结构:

    mysqldump  dbname  table1  -u root -p > dbname.sql

    导出多张表数据和结构:

    mysqldump -B dbname --tables  table1 table2  -u root -p > dbname.sql

    5.3 存储过程和函数操作:
    1). 只导出存储过程和函数

    mysqldump -uroot -p -ntd -R --set-gtid-purged=OFF  dbname   >  dbname.sql

    --set-gtid-purged=OFF 这个选项控制是否要用gtids来恢复,默认开启的
    -ntd 不导出结构和数据
    -R 导出函数及存储过程。
    -n:--no-create-db
    -d:--no-data
    -n:--no-create-info
    -R:functions and procedures
    2). 导出所有,导出数据、数据结构、存储过程、函数

    mysqldump -uroot   -R  dbname  -p  >  dbname.sql

    存储过程:

    show procedure status;
    show create procedure pro_create_exo_order;

    5.4 导入恢复:

    mysql -u root -ppasswd ku < /root/ku.sql

    mysqldump -uroot -p -B -F -R -x --master-data=2 ops|gzip >/opt/backup/ops_$(date +%F).sql.gz

    参数说明:
    -B:--databases,导出数据库列表,单库可省略
    -F:刷新日志
    -R:--routines导出存储过程及自定义函数
    -x:锁表
    -t:--no-create-info只导出数据,而不添加create table语句
    -n:--no-create-db只导出数据,而不添加create database语句
    -d:--no-data不导出任何数据,只导出库表结构
    --tables 表列表(单个表时可省略)
    ①同时导出结构以及数据时可同时省略-d和-t
    ②同时不导出结构和数据可使用-ntd
    ③只导出存储过程和函数可使用-R -ntd
    ④导出所有(结构&数据&存储过程&函数&事件&触发器)使用-R -E(相当于①,省略了-d -t;触发器默认导出)
    ⑤只导出结构&函数&事件&触发器使用 -R -E -d
    --master-data:在备份语句里添加CHANGE MASTER语句以及binlog文件及位置点pos信息

    Mysql体系结构和Mysql常用操作命令介绍

    标签:传递   show   sql语句   cal   改变   命令   ids   表数   锁表   

    原文地址:https://blog.51cto.com/10874766/2428606

    (0)
    (0)
       
    举报
    评论 一句话评论(0
    登录后才能评论!
    © 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
    迷上了代码!