金沙国际官网_金沙国际平台登录

因为这个金沙国际官网_金沙国际平台登录网站与很多的大型澳门赌场都有合作,金沙国际官网_金沙国际平台登录尽职尽责,高效执行,保持好奇心,不断学习,追求卓越,点击进入金沙国际官网_金沙国际平台登录马上体验吧,所以现在也正式地开始了营业。

您的位置:金沙国际官网 > 数据库 > 开发进阶篇系列,跨权限执行语句

开发进阶篇系列,跨权限执行语句

发布时间:2019-11-01 17:53编辑:数据库浏览(151)

    一.mysql 连接工具  

      在mysq提供的工具中,DBA使用最频繁的莫过于mysql。这里的mysql是指连接数据库的客户端工具。

      1.1 连接选项

    -u, -- user=name 指定用户名
    -p ,--password[=name] 指定密码
    -h ,--host=name 指定服务器IP或者域名
    -p, --port=# 指定连接端口

    在实际连接中命令如下:mysql -u 用户名 -p 密码
    [root@hsr ~]#  mysql -u root -p
    
    -- 完整的连接命令如下
    [root@hsr ~]#  mysql -u root -p -h 172.168.18.201 -P 3306
    Enter password: 
    Welcome to the MySQL monitor.  Commands end with ; or g.
    

      1.2 执行选项
        通过 "-e,--execute=name 执行sql语句并退出" 此选项不需要连接到mysql数据库后再执行,对于一些批处理脚本很方便,下面是从客户端直接查询mysql数据库中user表的User和Host字段:

    [root@hsr ~]#  mysql -u root -p  mysql -e "select User,Host from user"
    Enter password: 
    

        图片 1
      连接多个sql 语句用英文分号隔开如   select User,Host from user; select xxx。

    MySql的前戏

    在学习Mysql之前,我们先来想一下一开始做的登录注册案例,当时我们把用户的信息保存到一个文件中:

    #用户名 |密码
    root|123321
    alex|123123
    

    上面文件内容的规则是我自己定义的,你要想用我这个程序,必须按照我的规则去执行,但凡不是这个规则,就没有交流的余地。

    在一开始的时候文件格式的规定是没有规范的,后面学到模块的时候逐渐知道了目录规则,我们会把文件放到db目录下。

    类似下面目录结构:

    图片 2

     

    对于上面db目录中,是可以存放多个文件的,并且文件中可以有多行数据。

     

    那么问大家一个问题,如果说上面那个软件是我写好的,在一台服务器或者一台机器上安装了我写好的软件。

    现在有张三和李四两个人都安装了我这个软件,张三注册了一个用户,李四也注册了一个用户,那么自己注册的用户应该是自己用的。那么这两个用户是不共享的,

    所以这个软件证明我写的不太好,它不能共享,这种类似单机的软件是不好的。

    然后呢,我现在将我写的这个软件中目录修改一下,将db目录移除。现在将单机程序(自己的DB)改变成也是单机程序(公用DB)。

     

    那么之前给大家介绍过,凡是交互操作,是离不开scoket的,那么现在我这边有个公用DB和一个scoket服务端,然后在张三和李四那边有scoket客户端。张三和李四此时输入用户名和密码,现在我这边scoket服务端某个目录接收用户输入的用户名和密码,看一下该用户名存在不存在,如果存在返回true,如果不存在返回false。也就是说重点的内容我们把db目录放到某台服务器上。

    那么上面这个例子呢,其实就给大家慢慢的引出来mysql了,mysql呢其实就一个软件,这个软件安装到某台电脑上或者某台服务器上,那么现在只要我告诉它创建一个文件目录或者创建文件,那么mysql就自动帮我们创建了,比如说我们再在文件中添加一条数据,那么它也帮我们完成。

     

    总结一句话:其实mysql就是用于管理我们的文件的一个软件。

     

    那么对于mysql这个软件来说有两个软件

    图片 3

    ---服务器软件
         - socket服务端
         - 本地文件操作
       - 解析指令(mysql语句)
    ---客户端软件
         - socket客户端
         - 发送指令
       - 解析指令(mysql语句)
    

    图片 4

    解释:

    对于服务器软件中的socket服务器是一直开着,客户端得需要连接,并且还有创建文件、删除文件等等的操作

    对于客户端软件中的scoket客户端,我们得需要发送指令去命令scoket服务端对文件进行操作。

     

    大家应该知道ftp的项目,上传项目和下载项目的命令是不一样的。那么对于mysql中的客户端和服务端也会有些指令的操作,那么在这两个端中应该是有解析指令的过程,这个指令只有mysql这个软件知道,这种指令就是mysql语句。

    再想想我们写的html、css、js.这些好比就是我们客户端写好的语法,然后浏览器充当了服务端的角色去解析我们的的语法,最后来渲染出来结果。

     

    接下来我们要学习这些技能:

    - 安装 服务端和客户端
    - 连接
    - 学习SOL语句规则:命令服务端做任何的操作
    

    问题来源:最近有同事需要执行批量删除语句。根据他提供的业务需求,推荐他使用“TRUNCATE TABLE”语句。但使用该语句需要 ALTER权限,这与执行用户的角色不符。

    二. myisampack(MyISAM表压缩工具)

      myisampack是一个表压缩工具。在压缩之前需要确认mysqld已关闭或者要压缩的表不会有其他的sql操作;而且压缩过程会很占用cpu资源,建议在服务器空闲的状态进行。

      可以将数据文件压缩到40%-70%,当以后使用表时,解压缩列需要的信息被读入内存。当访问具体的记录时性能会更好,因为你只需要解压缩一个记录。压缩后的表也将成为一个只读表,不能进行DML操作。

    --压缩前,查看test库中表的数据文件大小,其中有个a表是myisam类型, 将压缩MYD文件
    

        [root@hsr ~]# cd /usr/local/mysql/data

        [root@hsr data]# cd test
        [root@hsr test]# ls -ltr
        总用量 24
        -rw-r----- 1 mysql mysql   61 8月  24 16:43 db.opt
        -rw-r----- 1 mysql mysql 8566 8月  28 14:29 a.frm
        -rw-r----- 1 mysql mysql 1024 8月  28 14:32 a.MYI
        -rw-r----- 1 mysql mysql  456 8月  28 14:32 a.MYD
    
    -- myisampack先到基地址里面找到该命令(用rpm安装可以在根目录下直接用该命令)
    [root@hsr ~]# cd /usr/local/mysql/bin
    

    图片 5

    -- 压缩a表,提示太小无法压缩
    [root@hsr bin]# ./myisampack /usr/local/mysql/data/test/a
    /usr/local/mysql/data/test/a is too small to compress
    如果压缩成功,该表就只能读,不能写。可以在查看MYD文件大小。
    

    解决办法:使用EXECUTE AS语句修改执行权限。代码如下:

    本文由金沙国际官网发布于数据库,转载请注明出处:开发进阶篇系列,跨权限执行语句

    关键词: