精华内容
下载资源
问答
  • 1 ,特点 : 面向主题 ( 使用数据时,关心的方向 ) 多方集成 ( 数据来自很多方面 ) 不可改变 ( 我们不会做 update 操作,只做查询 ) 2 ,进入命令行 : ...6 ,删库 : drop database aa; 7 ,使用库 : ...

    1 ,特点 :

    1. 面向主题 ( 使用数据时,关心的方向 )
    2. 多方集成 ( 数据来自很多方面 )
    3. 不可改变 ( 我们不会做 update 操作,只做查询 )

    2 ,进入命令行 :

    hive

    3 ,退出命令行 :

    quit;

    4 ,所有库 :

    show databases;

    5 ,建库 :

    create database aa;

    6 ,删库 :

    drop database aa;

    7 ,使用库 :

    use lifecycle;

    8 ,查看当前库 :

    select current_database();

    9 ,查看库中所有表 :

    show tables;

    10 ,查看所有内置函数 :

    show functions;

    展开全文
  • 平时工作中数据库主要由DBA(数据库管理员)负责,但python中会有用程序调用数据库的时候,所以每个Python程序员需要了解并精通数据库,主要是掌握数据库中命令以及增改查。首先我们要了解数据库是个什么样的东西...

    平时工作中数据库主要由DBA(数据库管理员)负责,但python中会有用程序调用数据库的时候,所以每个Python程序员需要了解并精通数据库,主要是掌握数据库中命令以及增删改查。首先我们要了解数据库是个什么样的东西,在Python中大部分的数据库是
    这样的一个形式。它的优点在于
    持久化存储
    读写速度极高
    保证数据的有效性
    对程序支持性非常好,容易扩展
    常用的数据库有orcale,mysql,sqlite,orcale一般用于银行等大型项目,收费的。Mysql是比较广泛使用的,免费的。Sqlite一般用于移动端上。本文主要简述一个mysql。首先第一步是安装,在Linux环境下,输入命令sudo apt-get install mysql-server来安装mysql。之后启动 sudo service mysql start 可以启动mysql。如果想关闭的话输入 sudo service mysql stop 就可以停止运行配置文件目录为/etc/mysql/mysql.cnf


    进入conf.d目录,打开mysql.cnf,发现并没有配置


    进入mysql.conf.d目录,打开mysql.cnf,可以看到配置项


    主要配置项如下
    bind-address表示服务器绑定的ip,默认为127.0.0.1
    port表示端口,默认为3306
    datadir表示数据库目录,默认为/var/lib/mysql
    general_log_file表示普通日志,默认为/var/log/mysql/mysql.log
    log_error表示错误日志,默认为/var/log/mysql/error.log
    --01 mysql 数据库的操作
    -- 链接数据库
    mysql -uroot -pmysql;
    -- 不显示密码
    mysql -uroot -p
    -- 退出数据库
    --quit/exit/ctrl + d
    -- sql语句最后需要有分号;结尾
    -- 显示数据库版本 version
    select version();
    -- 显示时间 now
    select now();
    -- 查看当前使用的数据库
    select database();
    -- 查看所有数据库
    show databases;


    - 创建数据库
    -- create database 数据库名 charset=utf8;
    create database python13 charset=utf8;


    -- 查看创建数据库的语句
    -- show create database 数据库名
    show create database python13;


    -- 使用数据库
    -- use 数据库的名字
    use python13;


    -- 删除数据库
    -- drop database 数据库名;
    drop database python13;


    --02 数据表的操作


    -- 查看当前数据库中所有表
    show tables;


    -- 创建表
    -- int unsigned 无符号整形
    -- auto_increment 表示自动增长
    -- not null 表示不能为空
    -- primary key 表示主键
    -- default 默认值
    -- create table 数据表名字 (字段 类型 约束[, 字段 类型 约束]);


    create table students(name varchar(50) not null,age int unsigned );


    -- 查看表结构
    -- desc 数据表的名字;
    desc students;
    -- 创建 classes 表(id、name)
    create table classes (id int unsigned primary key auto_increment,name varchar(30));
    -- 创建 students 表(id、name、age、high (decimal)、
    --gender (enum)、cls_id)
    create table students(id int unsigned primary key auto_increment,name varchar(30) not null,age int unsigned,
    high decimal(3,2),gender enum("男",'女','中性','保密','妖') default "保密",cls_id int unsigned);


    -- 查看表的创建语句
    -- show create table 表名字;
    show create table students;


    -- 修改表-添加字段 mascot (吉祥物)
    -- alter table 表名 add 列名 类型;
    alter table students add mascot varchar(30);


    -- 修改表-修改字段:不重命名版
    -- alter table 表名 modify 列名 类型及约束;
    alter table students modify mascot varchar(100);


    -- 修改表-修改字段:重命名版
    -- alter table 表名 change 原名 新名 类型及约束;
    alter table students change mascot jxw int;


    -- 修改表-删除字段
    -- alter table 表名 drop 列名;
    alter table students drop jxw;


    -- 删除表
    -- drop table 表名;
    -- drop database 数据库;
    drop table students;
    drop database python13;


    --03 增删改查(curd)


    -- 增加
    +-------+------------------+------+-----+---------+----------------+
    | Field | Type | Null | Key | Default | Extra |
    +-------+------------------+------+-----+---------+----------------+
    | id | int(10) unsigned | NO | PRI | NULL | auto_increment |
    | name | varchar(20) | NO | | NULL | |
    +-------+------------------+------+-----+---------+----------------+
    -- 全列插入
    -- insert [into] 表名 values(...)
    -- 主键字段 可以用 0 null default 来占位
    -- 向classes表中插入 一个班级
    insert into classes(id,name) values(1,'oldyang');
    insert into classes(name) values("python13");
    insert into classes(name) values("python14"),("python15");


    -- 向students表插入 一个学生信息
    +--------+-------------------------------------+------+-----+---------+----------------+
    | Field | Type | Null | Key | Default | Extra |
    +--------+-------------------------------------+------+-----+---------+----------------+
    | id | int(10) unsigned | NO | PRI | NULL | auto_increment |
    | name | varchar(20) | NO | | NULL | |
    | age | int(10) unsigned | YES | | NULL | |
    | high | decimal(5,2) | YES | | NULL | |
    | gender | enum('男','女','中性','保密') | YES | | 保密 | |
    | cls_id | int(11) | YES | | NULL | |
    +--------+-------------------------------------+------+-----+---------+----------------+
    -- 全部插入
    -- 部分插入
    -- insert into 表名(列1,...) values(值1,...)


    -- 多行插入
    insert into students(id,name,age,high,gender,cls_id) values(1,'oldyang','22','1.80','保密',1);
    insert into students(name) values("小花");


    insert into students (name) values("小花2"),("花3");




    展开全文
  • MySQL数据库基本使用 1. 数据库介绍 1.1 什么是数据库 数据的仓库,职责是:管理数据和存取数据 1.2 什么是数据 世界万事万物都可以描述成数据,比如一个人、一辆车、一套房,都可以用一条或多条数据来描述 ...

    MySQL数据库基本使用

    1. 数据库介绍

    1.1 什么是数据库

    数据的仓库,职责是:管理数据和存取数据
    

    1.2 什么是数据

    世界万事万物都可以描述成数据,比如一个人、一辆车、一套房,都可以用一条或多条数据来描述
    

    1.3 数据库种类

    按模型分类,最常见是关系型数据库和非关系型数据库
    

    在这里插入图片描述
    在这里插入图片描述

    2. SQL语句

    2.1 SQL分类

    数据定义语言DDL,数据操纵语言DML,数据查询语言DQL,数据控制语言DCL
    

    在这里插入图片描述

    2.2 数据库

    2.2.1 展示数据库

    show databases;
    

    2.2.2 创建数据库

    # utf-8
    CREATE DATABASE 数据库名称 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
    

    2.2.3 使用数据库

    use 数据库名称
    

    2.3 数据表结构

    2.3.1 展示数据表

    show tables;
    

    2.3.2 创建表

    create table stu(
        id int(10) unsigned not null auto_increment primary key comment '主键',
        name varchar(255) comment '姓名',
        sex tinyint(1) not null default 0 comment '性别:0表示男,1表示女',
        age int(3) not null comment '年龄',
        grade char(5) not null comment '班级'
    )engine=MyIsam default charset=utf8;
    

    2.3.3 查看表的定义

    mysql> desc stu;
    +-------+------------------+------+-----+---------+----------------+
    | Field | Type             | Null | Key | Default | Extra          |
    +-------+------------------+------+-----+---------+----------------+
    | id    | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
    | name  | varchar(255)     | YES  |     | NULL    |                |
    | sex   | tinyint(1)       | NO   |     | 0       |                |
    | age   | int(3)           | NO   |     | NULL    |                |
    | grade | char(5)          | NO   |     | NULL    |                |
    +-------+------------------+------+-----+---------+----------------+
    5 rows in set (0.00 sec)
    

    2.3.4 获得更全面表定义信心

    mysql> show create table stu \G;
    *************************** 1. row ***************************
           Table: stu
    Create Table: CREATE TABLE `stu` (
      `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
      `name` varchar(255) DEFAULT NULL COMMENT '姓名',
      `sex` tinyint(1) NOT NULL DEFAULT '0' COMMENT '性别:0表示男,1表示女',
      `age` int(3) NOT NULL COMMENT '年龄',
      `grade` char(5) NOT NULL COMMENT '班级',
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8
    1 row in set (0.02 sec)
    

    2.3.4 修改表

    ①修改表stu的name字段定义,将varchar(255)改成varchar(30):
    mysql> alter table stu modify name varchar(30);
    -- Query OK, 0 rows affected (0.04 sec)
    -- Records: 0  Duplicates: 0  Warnings: 0
    
    ②增加表字段的操作,在表stu中添加字段adress,类型为varchar(128):
    mysql> alter table stu add column adress varchar(128);
    -- Query OK, 0 rows affected (0.01 sec)
    -- Records: 0  Duplicates: 0  Warnings: 0
    
    ③删除表字段的操作,在表stu中删除字段adress,age,grade:
    mysql> alter table stu drop column adress;
    -- Query OK, 0 rows affected (0.01 sec)
    -- Records: 0  Duplicates: 0  Warnings: 0
    
    mysql> alter table stu drop column age;
    -- Query OK, 0 rows affected (0.01 sec)
    -- Records: 0  Duplicates: 0  Warnings: 0
    
    mysql> alter table stu drop column grade;
    -- Query OK, 0 rows affected (0.01 sec)
    -- Records: 0  Duplicates: 0  Warnings: 0
    
    ④字段改名,将sex修改成sex1,同时修改字段类型为tinyint(2):
    mysql> alter table stu change column sex sex1 tinyint(2);
    -- Query OK, 0 rows affected (0.03 sec)
    -- Records: 0  Duplicates: 0  Warnings: 0
    
    ⑤字段增加或者修改语法(add/change/modify)中,都有一个可选项first|after column_name来修改字段的位置
    mysql> alter table stu add column age int(3) after name;
    -- Query OK, 0 rows affected (0.01 sec)
    -- Records: 0  Duplicates: 0  Warnings: 0
    
    ⑥更改表名
    mysql> alter table stu rename student;
    -- Query OK, 0 rows affected (0.00 sec)
    

    2.3.5 清空表

    delete from 表名;
    
    truncate table 表名;
    

    2.3.6 删除表

    drop table 表名;
    

    2.4 数据表操作

    2.4.1 插入记录

    mysql> insert into student(name,sex,age)values('张三',0,25);
    -- Query OK, 1 row affected (0.00 sec)
    mysql> select * from student;
    +----+------+------+------+
    | id | name | sex  | age  |
    +----+------+------+------+
    |  1 | 张三 |    0 |   25 |
    +----+------+------+------+
    1 row in set (0.00 sec)
    
    -- 可以插入多条数据,数据之间用逗号隔开
    mysql> insert into student(name,sex,age)values('李四',0,26),('王二',1,20);
    -- Query OK, 2 rows affected (0.00 sec)
    -- Records: 2  Duplicates: 0  Warnings: 0
    
    mysql> select * from student;
    +----+------+------+------+
    | id | name | sex  | age  |
    +----+------+------+------+
    |  1 | 张三 |    0 |   25 |
    |  2 | 李四 |    0 |   26 |
    |  3 | 王二 |    1 |   20 |
    +----+------+------+------+
    3 rows in set (0.00 sec)
    

    2.4.2 更新记录

    mysql> update student set age=18 where name='王二';
    -- Query OK, 1 row affected (0.00 sec)
    -- Rows matched: 1  Changed: 1  Warnings: 0
    mysql> select * from student;
    +----+------+------+------+
    | id | name | sex  | age  |
    +----+------+------+------+
    |  1 | 张三 |    0 |   25 |
    |  2 | 李四 |    0 |   26 |
    |  3 | 王二 |    1 |   18 |
    +----+------+------+------+
    3 rows in set (0.00 sec)
    
    多表关联的修改内容
    例子:update emp a,dept b set a.sal=a.sal*b.deptno,b.deptname=a.ename where a.deptno=b.deptno;
    

    2.4.3 删除记录

    mysql> delete from student where id=5;
    -- Query OK, 1 row affected (0.00 sec)
    如果from后面的表名用别名,用delete后面也要用相应的别名,否则会提示语法错误
    delete a,b from emp a,dept b where a.deptno=b.deptno and a.deptno=3;同时删除两表中deptno为3的记录
    注意:不管单表还是多表,不加where条件将会把表的所有记录删除,所以操作时一定要小心
    

    2.4.4 查询记录

    2.4.4.1 将所有记录都选出来
    mysql> select * from student;
    +----+------+------+------+
    | id | name | sex  | age  |
    +----+------+------+------+
    |  1 | 张三 |    0 |   25 |
    |  2 | 李四 |    0 |   26 |
    |  3 | 王二 |    1 |   18 |
    |  4 | 小磊 |    1 |   18 |
    +----+------+------+------+
    4 rows in set (0.00 sec)
    
    2.4.4.2 只查所需要字段
    mysql> select name,age from student;
    +------+------+
    | name | age  |
    +------+------+
    | 张三 |   25 |
    | 李四 |   26 |
    | 王二 |   18 |
    | 小磊 |   18 |
    +------+------+
    4 rows in set (0.00 sec)
    
    2.4.4.3 记录去掉重复后显示出来
    mysql> select distinct age from student;
    +------+
    | age  |
    +------+
    |   25 |
    |   26 |
    |   18 |
    +------+
    3 rows in set (0.00 sec)
    
    2.4.4.4 按照条件来查询
    mysql> select * from student where age=18;
    +----+------+------+------+
    | id | name | sex  | age  |
    +----+------+------+------+
    |  3 | 王二 |    1 |   18 |
    |  4 | 小磊 |    1 |   18 |
    +----+------+------+------+
    2 rows in set (0.00 sec)
    
    2.4.4.5 按照某字段来排序,ASC升序(默认),DESC降序
    mysql> select * from student order by age;
    +----+------+------+------+
    | id | name | sex  | age  |
    +----+------+------+------+
    |  3 | 王二 |    1 |   18 |
    |  4 | 小磊 |    1 |   18 |
    |  1 | 张三 |    0 |   25 |
    |  2 | 李四 |    0 |   26 |
    +----+------+------+------+
    4 rows in set (0.00 sec)
    
    2.4.4.6 按照某条件后只显示n条来显示
    mysql> select * from student limit 2;
    +----+------+------+------+
    | id | name | sex  | age  |
    +----+------+------+------+
    |  1 | 张三 |    0 |   25 |
    |  2 | 李四 |    0 |   26 |
    +----+------+------+------+
    2 rows in set (0.00 sec)
    
    从某条记录开始显示也可以,前面代表开始序号,后面代表显示的条数
    mysql> select * from student limit 2,2;
    +----+------+------+------+
    | id | name | sex  | age  |
    +----+------+------+------+
    |  3 | 王二 |    1 |   18 |
    |  4 | 小磊 |    1 |   18 |
    +----+------+------+------+
    2 rows in set (0.00 sec)
    
    2.4.4.7 聚合操作
    select [field1,field2,....fieldn] fun_name from tablename [where where_contition][group by field1,field,....fieldn [with rollup]][having where_contition];
    fun_name 表示要做的聚合操作,也就是聚合函数,常用的有sum(),count(),max(),min(),avg(),std(),group_concat(), 
    group by 关键字 表示要进行分类聚合的字段
    with rollup 是可选语法,表明是否对分类聚合后的结果进行再汇总
    having 关键字 表示对分类后的结果再进行条件的过滤
    
    mysql> select count(1) from student;
    +----------+
    | count(1) |
    +----------+
    |        4 |
    +----------+
    1 row in set (0.00 sec)
    
    mysql> select age,count(1) from student group by age;
    +------+----------+
    | age  | count(1) |
    +------+----------+
    |   18 |        2 |
    |   25 |        1 |
    |   26 |        1 |
    +------+----------+
    3 rows in set (0.00 sec)
    
    按条件统计后汇总
    mysql> select age,count(1) from student group by age with rollup;
    +------+----------+
    | age  | count(1) |
    +------+----------+
    |   18 |        2 |
    |   25 |        1 |
    |   26 |        1 |
    | NULL |        4 |
    +------+----------+
    4 rows in set (0.05 sec)
    
    mysql> select sum(age),max(age),min(age) from student;
    +----------+----------+----------+
    | sum(age) | max(age) | min(age) |
    +----------+----------+----------+
    |       87 |       26 |       18 |
    +----------+----------+----------+
    1 row in set (0.04 sec)
    
    ⑧表连接
    内连接:选出两张表中互相匹配的记录
    select ename,deptname from emp,dept where emp.deptno=dept.deptno;
    
    外连接:会选出其他不匹配的记录,分为左连接和右连接
    左连接:包含所有的左边表中的记录甚至是右边表中没有和它匹配的记录
    select ename,deptname from emp left join dept on emp.deptno=dept.deptno;
    右连接:包含所有的右边表中的记录甚至是左边表中没有和它匹配的记录
    select ename,deptname from dept right join emp on dept.deptno=emp,deptno;
    
    ⑨子查询
    在某些情况下,当进行查询的时候,需要的条件是另外一个select语句的结果,这个时候就需要用到子查询。用于子查询的关键字主要包括in,not in,=,!=,exists,not exists等
    select * from emp where deptno in(select deptno from dept);
    
    ⑩将两个表的数据按照一定的查询条件查询出来后,将结果合并到一起显示出来,这个时候需要用union和union all 关键字来实现这样的功能
    select * from t1 union\union all select * from t2 
    union all 是把结果集直接合并在一起,而union是将union all 后的结果进行一次distinct去除重复记录后的结果
    
    union all用法实例:
    mysql>select deptno from emp
    ->union all
    ->select deptno from dept;
    
    union 用法实例
    mysql>select deptno from emp
    ->union
    ->select deptno from dept;
    

    3. MySQL数据类型

    3.1 整型

    MySQL数据类型 含义(有符号)
    tinyint(m) 1个字节 范围(-128~127)
    smallint(m) 2个字节 范围(-32768~32767)
    mediumint(m) 3个字节 范围(-8388608~8388607)
    int(m) 4个字节 范围(-2147483648~2147483647)
    bigint(m) 8个字节 范围(±9.22*10的18次方)

    取值范围如果加了unsigned,则最大值翻倍,如tinyint unsigned的取值范围为(0~256)

    3.2 浮点数(float和double)

    MySQL数据类型 含义
    float(m,d) 单精度浮点型 8位精度(4字节) m总个数,d小数位
    double(m,d) 双精度浮点型 16位精度(8字节) m总个数,d小数位

    设一个字段定义位float(5,3),如果输入一个数123.45678,实际数据库里存的是123.457,但总个数还以实际为准,即6位

    3.3 定点数

    浮点型在数据库中存放的是近似值,而定点型在数据库中存放的是精确值
    decimal(m,d) 参数m<65是总个数,d<30且d<m是小数位

    3.4 字符串

    MySQL数据类型 含义
    char(n) 固定长度, 最多255个字符
    varchar(n) 固定长度,最多65535个字符
    tinytext 可变长度,最多255个字符
    text 可变长度,最多65535个字符
    mediumtext 可变长度,最多2的24次方-1个字符
    longtext 可变长度,最多2的32次方-1个字符
    • char和varchar:

      1. char(n) 若存入字符数小于n,则以空格补于其后,查询之时再将空格去掉。所以char类型存储的字符串末尾不能有空格,varchar不限于此。
      2. char(n) 固定长度,char(4)不管是存入几个字符,都将占用4个字节,varchar是存入的实际字符数+1个字节(n<=255)或2个字节(n>255),所以varchar(4),存入3个字符将占用4个字节。
      3. char类型的字符串检索速度要比varchar类型的快。
    • varchar和text:

      1. varchar可指定n,text不能指定,内部存储varchar是存入的实际字符数+1个字节(n<=255)或2个字节(n>255),text是实际字符数+2个字节。
      2. text类型不能有默认值。
      3. varchar可直接创建索引,text创建索引要指定前多少个字符。varchar查询速度快于text,在都创建索引的情况下,text的索引似乎不起作用。

    3.5 日期时间类型

    MySQL数据类型 含义
    date 日期’2018-12-2’
    time 时间'12:25:36'
    datetime 日期时间’2018-12-2 22:06-50’
    timestamp 自动存储记录修改时间
    • 若定义一个字段为timestamp,这个字段里的时间数据会随其他字段修改的时候自动刷新,所以这个数据类型的字段可以存放这条记录最后被修改的时间。

    3.6 其他数据类型的属性

    MySQL数据类型 含义
    NUll 数据列可允许NULL值
    NOT NULL 数据列不允许NULL值
    DEFAULT 默认值
    PRIMARY KEY 主键
    AUTO_INCREMENT 自动递增,适用于整数类型
    UNSIGNED 无符号
    CHARACTER SET name 指定一个字符集

    4. 用户管理

    4.1 查看系统用户表

    use mysql;
    
    SELECT `Host`,`User`,`Password` FROM `user`;
    

    4.2 创建用户

    create user '用户名'@'IP地址' identified by '密码';
    
    create user 'test'@'%' identified by '123456';
    

    4.3 修改用户

    rename user '用户名'@'IP地址' to '新用户名'@'新IP地址';
    
    rename user 'test'@'%' to 'test1'@'localhost';
    

    4.4 修改密码

    set password for '用户名'@'IP地址' = Password('新密码');
    
    set password for 'test1'@'localhost' = Password('666666');
    

    4.5 删除用户

    drop user '用户名'@'IP地址';
    
    drop user 'test'@'%';
    

    5. 权限设置

    5.1 查看权限

    show grants for '用户名'@'IP地址';
    
    MariaDB [mysql]> show grants for 'root'@'%';
    +--------------------------------------------------------------------------------------------------------------------------------+
    | Grants for root@%                                                                                                              |
    +--------------------------------------------------------------------------------------------------------------------------------+
    | GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY PASSWORD '*31ADC152D587D32F35070C17BDD7A31A74024365' WITH GRANT OPTION |
    +--------------------------------------------------------------------------------------------------------------------------------+
    1 row in set (0.00 sec)
    

    5.2 授权

    grant 权限 on 数据库.表 to '用户名'@'IP地址';
    

    5.2.3 权限

    all privileges  除grant外的所有权限
    select          仅查权限
    select,insert   查和插入权限
    ...
    usage                   无访问权限
    alter                   使用alter table
    alter routine           使用alter procedure和drop procedure
    create                  使用create table
    create routine          使用create procedure
    create temporary tables 使用create temporary tables
    create user             使用create user、drop user、rename user和revoke  all privileges
    create view             使用create view
    delete                  使用delete
    drop                    使用drop table
    execute                 使用call和存储过程
    file                    使用select into outfile 和 load data infile
    grant option            使用grant 和 revoke
    index                   使用index
    insert                  使用insert
    lock tables             使用lock table
    process                 使用show full processlist
    select                  使用select
    show databases          使用show databases
    show view               使用show view
    update                  使用update
    reload                  使用flush
    shutdown                使用mysqladmin shutdown(关闭MySQL)
    super                   使用change master、kill、logs、purge、master和set global。还允许mysqladmin调试登陆
    replication client      服务器位置的访问
    replication slave       由复制从属使用
    

    5.2.4 数据库.表

    数据库名.*           数据库中的所有
    数据库名.表          指定数据库中的某张表
    数据库名.存储过程     指定数据库中的存储过程
    *.*                 所有数据库
    

    5.2.5 ‘用户名’@‘IP地址’

    用户名@IP地址         用户只能在改IP下才能访问
    用户名@192.168.1.%   用户只能在改IP段下才能访问(通配符%表示任意)
    用户名@%             用户可以再任意IP下访问
    
    • 赋予所有的权限
    grant all privileges on *.* to '用户名'@'IP地址';
    
    flush privileges
    

    5.3 取消权限

    revoke 权限 on 数据库.表 from '用户'@'IP地址';
    
    # 取消所有的权限
    revoke all privileges,grant option from 'test'@'%';
    
    flush privileges;
    

    6. 数据库的备份和还原

    6.1 数据库的备份

    备份单个数据库数据和结构
    mysqldump -uroot -p db > db.sql
    
    备份单个数据库结构
    mysqldump -uroot -p db -d > db_struct.sql
    
    备份单个数据库数据
    mysqldump -uroot -p db -t > db_data.sql
    
    备份多个表的数据和结构
    mysqldump -uroot -p db t1 t2 > db.sql
    
    备份全部数据库的数据和结构
    mysqldump -uroot -p -A > all.sql
    
    备份全部数据库的结构
    mysqldump -uroot -p -A -d > all_struct.sql
    
    备份全部数据库的数据
    mysqldump -uroot -p -A -t > all_data.sql
    
    一次备份多个数据库
    mysqldump -uroot -p --database db1 db2 > db.sql
    

    6.2 数据库的还原

    还原全部数据库
    mysql>source all.sql;
    
    mysql -uroot -p > all.sql
    
    还原单个数据库
    mysql>use db;
    mysql>source all.sql;
    
    mysql -uroot -p db < all.sql
    
    还原多个数据库
    mysql>source all.sql;
    
    mysql -uroot -p < all.sql;
    
    展开全文
  • 删库:它属于是来自内部开发或运维人员的bug。 2.影响 但是在项目的业务是十分复杂,在一些紧急情况下还是很难避免需要直接操作数据库进行调试。 只要时间跨度足够长,运维及开发人员操作数据库就肯出现疏忽的很大...

    引言

    只有经历过被脱库和删库的开发运维人员才是一个优秀的技术人员。

    1.定义

    脱库:它属于来自外部恶意攻击。
    删库:它属于是来自内部开发或运维人员的bug。

    2.背景

    但是在项目的业务是十分复杂,在一些紧急情况下还是很难避免需要直接操作数据库进行调试。
    1.只要时间跨度足够长,运维及开发人员操作数据库就肯出现疏忽的很大可能性。
    2.我们开发项目的业务中还会出现各种各样的可能,包括活动漏洞数值漏洞等等,导致需要回档的运营事故并不罕见。

    3.解决方案

    3.1预防方案

    • 只有代码能够读写数据库:在生产环境的数据库不允许直接操作,不提供并且不使用任何数据库管理工具或者命令行工具。
    • 修改数据库结果要求通过有版本检查的脚本。
    • 当然代码和脚本都必须通过stage环境的充分测试。

    3.2 事故预案

    我们在项目中更加需要的是事故预案,而不是预防方案。以达到让删库之后也可在尽量短的时间恢复:

    • 保证数据库做定期备份。
      对于中等规模的线上业务,我们都要求使用阿里云的RDS数据库服务,并必须启用数据库快照功能。
    • 新时代用新解决方案。对于大型项目,使用一些支持秒级回滚或事物(Transaction)级回滚的数据库。
      例如AWS的Aurora和PingCAP的TiDB等。
    • 如果一定要使用公司项目自己维护的数据库,必须开启binlog和制作定时备份的脚本。
    • 进行回滚演习。
      不管使用哪个方案,演习一次删库回滚。尽量让回滚过程文档化,脚本化。确认回复方案的可行性和稳定性,不会因为时间环境改变导致恢复方案不可用。恢复时间在运营可接受的范围内。
    展开全文
  • 连接命令:mysql -h[主机地址] -u[用户名]...打开数据库:use [库名]当前选择的状态:SELECT DATABASE();创建数据表:CREATE TABLE [表名]([字段名] [字段类型]([字段要求]) [字段参数], ......);显示数据表字段:desc...
  • set REPOSITORY_PATH=你的maven仓库全路径 rem 正在搜索... for /f "delims=" %%i in ('dir /b /s "%REPOSITORY_PATH%\*lastUpdated*"') do ( del /s /q %%i ) rem 搜索完毕 pause ...侵 ...
  • SourceTree 命令行代码

    2020-11-23 16:45:56
    1.git remote update origin --prune // 拉取/更新远程分支 2.git fetch --unshallow // 拉取履历 3.git checkout dev // 切换到'dev'分支 4.git checkout -b dev // 创建并...6.git branch -d dev //删除'dev'分支(
  • 恢复 先找到需要恢复的数据,解压出来 gunzip miaosha-202008061026.sql.gz 使用解压出来的文件,将数据恢复到指定的新数据库中 方式一,linux命令行下: mysql -uroot -p db2 < miaosha-202008061026....
  • mysql命令行学习笔记

    2018-05-22 10:58:28
    show databases;3、 显示库中的数据表:use 库名;show 表名;4、 显示数据表的结构:describe 表名;...5、 建库与删库:create database 库名;drop database 库名;6、 建表:use 库名;create table 表名(字段...
  • mysql 命令行常用命令

    2016-07-02 10:36:00
    1、显示数据库列表。 show databases;2、显示库中的数据表: use mysql; show tables;3、显示数据表的结构: describe 表名;4、建库: create database 库名;...6、删库和删表: drop database 库名; dr...
  • 差点删库跑路的一天

    2019-04-02 12:37:00
    今天因为一条命令差点就把公司服务器全清空了,就是下面这条命令: ...哦豁,完蛋,敲完后命令行一直往下跳,一直翻页,感觉不对劲,立刻把ssh断开了,觉得还是不对,跑进机房把服务器断电……最后发现...
  • 删库到跑路(二)

    2020-07-28 15:50:03
    服务器选项配置及性能优化 mysqld选项,服务器系统变量和服务器状态变量 mysql mariadb --是服务器选项 注意:其中有些参数支持运行时修改,会立即生效;有些参数不支持,且只能通过修改配置...在命令行中设置 ./mysq
  • 1.环境 此文章的操作运行在windows10上 MySQL版本为:mysql Ver...删库drop database <数据库名>; 选择数据库 use <数据库名>; 3.表操作: 此处desc:description 4.基本数据操作(增加,删除,修改,查询)
  • 生产环境还是推荐使用mysql命令行,但为了方便测试,可以使用IDE工具 下载链接:https://pan.baidu.com/s/1bpo5mqj 掌握: #1. 测试+链接数据库 #2. 新建 #3. 新建表,新增字段+类型+约束 #4. 设计表:...
  • 一 IDE工具介绍生产环境还是推荐使用mysql命令行,但为了方便测试,可以使用IDE工具掌握:#1. 测试+链接数据库#2. 新建#3. 新建表,新增字段+类型+约束#4. 设计表:外键#5. 新建查询#6. 备份/表#注意:批量加...
  • MYSQL的常用命令和增改查语句和数据类型 连接命令:mysql -h[主机地址] -u[用户名] -p[用户密码]  创建数据库:create database [库名]  显示所有数据库: show databases;  打开数据库:use [库名]  ...
  • 1、显示数据库列表。 show databases; 2、显示库中的数据表: ...6、删库和删表: drop database 库名; drop table 表名; 7、将表中记录清空: delete from 表名; 8、显示表中的记录: select * from 表名 ...
  • 连接命令:MySQL -h[主机地址] -u[用户名] -p[用户密码]创建href="http://lib.csdn.net/base/mysql" class='replace_word'title="MySQL知识" target='_blank' style='color:#df3434;font-weight:bold;'>数据库...
  • 一、mysqladmin方式,貌似不能执行sql,但是可以建库,删库等操作 mysqladmin -uroot -p status mysqladmin -uroot -p extended-status 等等 二、mysql方式 1、使用参数-e mysql -uroot -p -e "select version...
  • 数据库是按照数据结构来组织,存储和管理数据的仓库,其本身可以看作是电子化的文件柜,用户可以对文件中的数据进行增、、改、查。 命令行如何进入Mysql: 需要在命令行中进入mysql所在的目录的bin目录下:  ...
  • Mysql的学习笔记 一、数据库概述 1、 概述 数据库:Database , 简称DB。是指按照一定格式存储...SQL:是一种结构化查询语言通过编写SQL语句,由DBMS负责执行SQL语句,最终来完成数据库中数据的增改查(相当于编程

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 172
精华内容 68
关键字:

删库命令行