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'
  • 相关阅读:
    Java实现 蓝桥杯VIP 基础练习 完美的代价
    Java实现 蓝桥杯VIP基础练习 矩形面积交
    Java实现 蓝桥杯VIP 基础练习 完美的代价
    Java实现 蓝桥杯 蓝桥杯VIP 基础练习 数的读法
    Java实现 蓝桥杯 蓝桥杯VIP 基础练习 数的读法
    Java实现 蓝桥杯 蓝桥杯VIP 基础练习 数的读法
    Java实现 蓝桥杯 蓝桥杯VIP 基础练习 数的读法
    Java实现 蓝桥杯 蓝桥杯VIP 基础练习 数的读法
    核心思想:想清楚自己创业的目的(如果你没有自信提供一种更好的产品或服务,那就别做了,比如IM 电商 搜索)
    在Linux中如何利用backtrace信息解决问题
  • 原文地址:https://www.cnblogs.com/clwsec/p/15679801.html
Copyright © 2011-2022 走看看