数据库

MySQL常用命令

2016-06-08  本文已影响56人  dotdiw

用户管理命令

  1. 新增用户

    • create user 命令

       CREATE USER username IDENTIFIED BY 'password';
      
    • grant授权命令

        GRANT ALL PRIVILEGES ON *.* to mysqluser@'%' IDENTIFIED BY 'passworkd' WITH GRANT OPTION;
      
    • insert在user表中插入新用户

        INSERT INTO user (host,user,password) VALUES ('%','test3',password('123'));
      
  2. 删除用户

    • drop删除命令

        DROP user username;
      
    • delete删除用户

        DELETE user FROM user where user='test2';
      
  3. 用户查看命令

         SELECT user,host,super_priv from user;
    

grant语句

  1. 全局级(可以为某一个用户分配全部的权限,存储在mysql.user中)

     grant all privileges on *.* to mysqluser@'%';
    

    注:mysqluser拥有全部的管理权限,但是没有分配权限,也就是不能创建新用户

     grant all privileges on *.* to mysqluer@'%' with grant option;
    

    注:mysqluser用户拥有创建新用户的权限

  2. 数据库级(给定一个数据库中所有的目标操作权限,存储在mysql.db和mysql.host中)

     grant all privileges on database.* to mysqluser@'%' identified by 'password' with grant option;
    

    注:给用户mysqluser在database上的权限,不能作用于其他数据库

  3. 数据库表级(给用户一个数据表中的操作权限,存储在mysql.tabls_priv中,通常select insert delete update等)

     grant select on database.table1 to mysqluser@'%' indentified by 'password' with grant option;
    
  4. 字段级(用户只对某一字段拥有某些权限,存储在mysql.columns_priv)

     grant insert(columnname) on database.tabel to mysqluser@'%' indentified by 'password' with grant option;
    
  5. 子程序级(用户用于存储过程,修改过程,执行存储过程,或函数等操作采用子程序级管理,存储在mysql.procs_priv中)

    • 如用户mysqluser获得数据库database中的test_pro 的执行权限

         grant execute on procedure database.test_pro to mysqluser@'%';
      
    • 用户mysqluser执行database中的test_func函数、

        grant execute on funcation database.test_func to mysqlur@'%';
      

show grants 语句

revoke语句(权限收回)

  1. 消除字段集

     revoke insert(字段名)no database.tabel from mysqluser;
    
  2. 消除表级某一类权限

     revoke insert,update,delete on mysql.user form test3;
    
  3. 撤销全局级

     revoke all privileges,grant option from test3;
    

导入导出命令(简单介绍)

  1. 导入命令

    • mysqlimport (需要首先创建对应的表格)

        mysqlimport [-d/f...] -u root -p table data_import.txt
      

      参数:

         -d 在新数据导入数据表之前删除表中原有数据
         -f 忽略执行中的错误,强行插入数据
         -i mysqlimport 跳过或者忽略有相同唯一关键字的记录
         -r 替换表中有相同唯一关键字的记录
         --fields-enclosed- by=char 指定文本中的数据记录是以什么括起来的,默认没有被字符括起
         --fields-terminated- by=char 指定各数据值之间的分隔符,用户可以用此选项指定,默认为Tab
         --lines-terminated- by=str 指定文本中行与行之间的的分隔符或字符串,默认为newline,用户可选择用一个字符串来替代一个单词的字符
         --lock-tables 数据被插入之前锁住数据表
      
    • source导入命令

        source data.sql
      
    • load(专职导入数据)

        load data infile 'data-import.txt' into tabel data_improt; 
      
    • restore恢复

        restore table tablename from '/home/backup';(此为路径)
      
  2. 导出命令

    • mysqldump

        mysqldump [-r/...] databasenaem > data.sql;
      

      参数:

        --add-locks 枷锁,该选项是在insert语句中加入lock table和unlock table
        --add-drop-table 在每一个表前加入DROP TABEL IF EXISTS语句
        -f 或 -force 忽略错误强行导出
        -d 或 -no-data 导出时不创建insert语句
        -t 或 -no-create-info 在数据导出前不创建create table 语句
        -F 或 -flush-logs 在执行导出前刷新服务器的log
        --delayed-insert 在insert命令中加入delay选项
        -c 或 -complete_insert 对每一个insert语句加上列(filed)的名字
        -l 或 -lock-tables 数据被导出时锁住表
      
    • 命令导出

        select * from tablename into outfile 'filename.txt';
      
    • backup语句

        backup table tablename to '/home/backup';(此为路径)
      

复制数据库

  1. 表与数据的复制

     create table tablename1 select * from tablename2;
    
  2. 表结构复制

    • 利用create&select

         create table tabelname1 select * from tablename2 where <条件>;
      
    • 利用like语句

        create tabel 目标表 like 源数据表;
      
  3. 记录复制

    • 全表记录复制

        insert into 目标表名  select * from 源数据表名;
      
    • 部分记录复制

        insert into 目标表名 select * from 源数据表名 where <条件>;
      
    • 部分字段复制(前提是先创建一张表)

        insert into 目标表名(字段) select (字段) from 源数据表名;
      

may you success !
上一篇 下一篇

猜你喜欢

热点阅读