zoukankan      html  css  js  c++  java
  • MySQL内容整理一

    守着我的善良,催着我成长。

    前言

    最近在学习SQL注入,以sqli-labs练习,可是自己对MySQL感到很陌生,故在此学习一下。

    连接与退出MySQL

    1. 格式:mysql -h主机地址 -u用户名 -p用户密码
    2. 连接到本机上的MySQL:
    • 首先打开DOS窗口,然后进入目录mysql/bin,再键入命令mysql -u root -p
      回车后提示你输密码。
    • 注意用户名前可以有空格也可以没有空格,但是密码前必须没有空格,否则让你重新输入密码。
    1. 连接到远程主机上的MySQL。假设远程主机的IP为:110.110.110.110,用户名为root,密码为12345678。则键入以下命 令:mysql -h110.110.110.110 -u root -p 12345678 (注:u与root之间可以不用加空格,其它也一样)
    2. 退出MySQL命令: exit (回车)

    常用命令

    1. 使用SHOW语句找出在服务器上当前存在什么数据库: show databases;
    2. 创建一个数据库: create database database_name;
    3. 选择所要用的数据库: use database_name; (按回车键出现Database changed 时说明操作成功)
    4. 查看现在的数据库中存在什么表:show tables;
    5. 创建一个数据库表:create table table_name (column1 类型 ,column2 类型,... );
    6. 显示表的结构:describe table_name;
    7. 往表中加入记录:insert into table_name values("value1","value2");
    8. 用文本方式将数据装入数据库表中(例如D:/mysql.txt):load data local infile “D:/mysql.txt” into table table_name;
    9. 导入.sql文件命令(例如D:/mysql.sql):source d:/mysql.sql;
    10. 删除表:drop table tabe_name;
    11. 清空表:delete from table_name;
    12. 更新表中数据:update table_name set column1="value1" where column2='value2';
    13. 命令行修改root密码:
    • 格式:mysqladmin -u用户名 -p旧密码 password 新密码
    • 或者update mysql.user set password=PASSWORD('新密码') where User='root'; 然后 flush privileges;
    1. 创建用户,向表中添加用户:例如insert into mysql.user(Host,User,Password) values(‘localhost’,'jeecn’,password(‘jeecn’)); 记得刷新系统权限表,flush privileges; 这样就创建了一个名为:jeecn 密码为:jeecn 的用户。
    2. 为用户授权:
    • 格式:grant 权限1,权限2,…权限n on 数据库名称.表名称 to 用户名@用户地址 identified by ‘连接口令’;
    • 权限1,权限2,…权限n代表select,insert,update,delete,create,drop,index,alter,grant,references,reload,shutdown,process,file等14个权限。
    • 权限1,权限2,…权限nall privileges或者all代替,表示赋予用户全部权限。
    • 数据库名称.表名称*.*代替,表示赋予用户操作服务器上所有数据库所有表的权限。
    • 用户地址可以是localhost,也可以是ip地址、机器名字、域名。也可以用%表示从任何地址连接。
    • 连接口令不能为空,否则创建失败。
    1. 删除用户:delete from user where User=”jeecn” and Host=”localhost”;
      注意:关于用户的创建,更新,授权,删除等,执行完相应操作后,需要刷新系统权限表,flush privileges;
    2. 删除数据库 drop database database_name;

    全局管理权限

    FILE: 在MySQL服务器上读写文件。
    PROCESS: 显示或杀死属于其它用户的服务线程。
    RELOAD: 重载访问控制表,刷新日志等。
    SHUTDOWN: 关闭MySQL服务。

    数据库/数据表/数据列权限:

    ALTER: 修改已存在的数据表(例如增加/删除列)和索引。
    CREATE: 建立新的数据库或数据表。
    DELETE: 删除表的记录。
    DROP: 删除数据表或数据库。
    INDEX: 建立或删除索引。
    INSERT: 增加表的记录。
    SELECT: 显示/搜索表的记录。
    UPDATE: 修改表中已存在的记录。

    特别的权限:

    ALL: 允许做任何事(和root一样)。
    USAGE: 只允许登录–其它什么也不允许做。

    备份数据库

    1. 导出整个数据库:mysqldump -u user_name -p123456 database_name > outfile_name.sql
    2. 导出一个表:mysqldump -u user_name -p database_name table_name > outfile_name.sql
    3. 导出一个数据库结构:mysqldump -u user_name -p -d --add-drop-table database_name > outfile_name.sql 其中,-d: 没有数据, --add-drop-table 在每个create语句之前增加一个drop table
    4. 带语言参数导出:mysqldump -u -p --default-character-set=latin1 --set-charset=gbk --skip-opt database_name > outfile_name.sql

    加深运用

    1. 根据已有的表创建新表:
    • create table tab_new like tab_old (使用旧表创建新表)

    • create table tab_new as select col1,col2… from tab_old definition only

    1. 增加一个列: Alter table tabname add column col type
      注:列增加后将不能删除。列加上数据后类型也不能改变,唯一能改变的是增加varchar类型的长度。
    2. 添加主键:Alter table tabname add primary key(col) 删除主键: Alter table tabname drop primary key(col)
    3. 创建索引:create [unique] index idxname on tabname(col….) 删除索引:drop index idxname
      注:索引是不可更改的,想更改必须删除重新建。
    4. 创建视图:create view viewname as select statement 删除视图:drop view viewname
    5. 几个简单的基本的sql语句:
    • 选择:select * from table1 where 范围
    • 插入:insert into table1(field1,field2) values(value1,value2)
    • 删除:delete from table1 where 范围
    • 更新:update table1 set field1=value1 where 范围
    • 查找:select * from table1 where field1 like ’%value1%’
    • 排序:select * from table1 order by field1,field2 [desc]
    • 总数:select count as totalcount from table1
    • 求和:select sum(field1) as sumvalue from table1
    • 平均:select avg(field1) as avgvalue from table1
    • 最大:select max(field1) as maxvalue from table1
    • 最小:select min(field1) as minvalue from table1
    1. 几个高级查询运算词:
    • UNION 运算符: UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。
    • EXCEPT 运算符: EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时(EXCEPT ALL),不消除重复行。
    • INTERSECT 运算符: INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时(INTERSECT ALL),不消除重复行。
      注:使用运算词的几个查询结果行必须是一致的。
    1. 对数据库进行操作:
    • 分离数据库: sp_detach_db;
    • 附加数据库:sp_attach_db 后接表明附加需要完整的路径名
    1. 修改数据库的名称: sp_renamedb 'old_name', 'new_name'
  • 相关阅读:
    ARRAYLIST使用方法
    学习如何把数据库数据提取为XML(转)
    jquery常用技巧及常用方法列表
    邮件发送
    DataSet/XMl相互操作
    jquery Tab效果和动态加载
    Ajax 显示XML
    dropdownlist动态数据绑定
    sql 拼接
    javascriptxmlxslt操作
  • 原文地址:https://www.cnblogs.com/clwsec/p/15679801.html
Copyright © 2011-2022 走看看