Python MySQL数据库1:数据存储介绍、阿里云安装myspl(使用)以及客户端Navicat使用

一、总体内容

  • 1.1、数据存储
  • 1.2、数据库
  • 1.3、RDBMS
  • 1.4、RDBMS 和 数据库的关系
  • 1.5、SQL
  • 1.6、MySQL
  • 1.7、通过navicat操作数据库
  • 1.8、数据完整性(数据类型与约束)
  • 1.9、命令行脚本操作数据库 (重点)
  • 1.10、表中数据的增删改查(curd)
  • 1.11、数据库的备份与恢复

目标:熟练编写数据的增删改查相关的 SQL 语句

二、数据存储

  • 2.1、以前是这样记录的:结绳记事


    结绳记事
  • 2.2、也有这样记录的:甲骨文


    甲骨文
  • 2.3、后来开始这样记录:图书


    图书
  • 2.4、传统记录数据的缺点 : 不易保存、备份困难、查找不便,举个例子:在有纸质的时候,你想要另存一份东西,你就需要再抄写一份,耗时耗精力。

  • 2.5、现代化手段----文件

    • 使用简单,例如python中的open可以打开文件,用read/write对文件进行读写,close关闭文件
    • 对于数据容量较大的数据,不能够很好的满足,而且性能较差
    • 不易扩展
  • 2.5、更好的 现代化手段----数据库

    • 持久化存储
    • 读写速度极高
    • 保证数据的有效性
    • 对程序支持性非常好,容易扩展
    • 真实的仓库是这样的:


      真实仓库的样子
    • 我们看到的是这个样子的(开发者看到的样子)


      我们看到的样子
    • 顾客看到的是这个样子的:


      顾客看到的样子

三、数据库

  • 3.1、数据库就是一种特殊的文件,通过特殊的处理,读写的方式和普通的文本文件是不一样的,其中存储着需要的数据


    数据库就是一种特殊的文件,其中存储着需要的数据
  • 3.2、关系型数据库核心元素

    • 数据行(记录)
    • 数据列(字段)
    • 数据表(数据行的集合)
    • 数据库(数据表的集合)
    • 一个数据库可以有很多的表,每个表都有一个主键,每个表都可以作为其他表的字段


      关系型数据库核心元素

四、RDBMS:(Relational Database Management System)通过表来表示关系型
查看数据库排名

  • 4.1、RDBMS 是一套软件,将来用来管理数据库的文件,关系型数据库
  • 4.2、当前主要使用两种类型的数据库:关系型数据库、非关系型数据库,本部分主要讨论关系型数据库,对于非关系型数据库会在后面学习
  • 4.3、所谓的关系型数据库RDBMS,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据
  • 4.4、关系型数据库的主要产品:
    • oracle:在以前的大型项目中使用,银行,电信等项目,做大型网站
    • mysql:web时代使用最广泛的关系型数据库,一般用作网站,存储持久化的数据,一般用作小型网站和中型网站足够了
    • ms sql server:在微软的项目中使用
    • sqlite:轻量级数据库,主要应用在移动平台
    • redis 一般用来当做缓存
    • mongodb 用来存储非关系型的数据结构,一般用作爬虫,存储没有关系的数据

五、RDBMS和数据库的关系

RDBMS和数据库的关系

六、SQL (Structured Query Language): 是一门特殊的语言,专门用来操作关系数据库,不区分大小写
SQL是结构化查询语言,是一种用来操作RDBMS的数据库语言,当前关系型数据库都支持使用SQL语言进行操作,也就是说可以通过 SQL 操作 oracle,sql server,mysql,sqlite 等等所有的关系型的数据库

  • 6.1、SQL语句主要分为:
    • DQL:数据查询语言,用于对数据进行查询,如select
    • DML:数据操作语言,对数据进行增加、修改、删除,如insert、udpate、delete
    • TPL:事务处理语言,对事务进行处理,包括begin transaction、commit、rollback
    • DCL:数据控制语言,进行授权与权限回收,如grant、revoke
    • DDL:数据定义语言,进行数据库、表的管理等,如create、drop
    • CCL:指针控制语言,通过控制指针完成表的操作,如declare cursor
  • 6.2、对于web程序员来讲,重点是数据的crud(增删改查),必须熟练编写DQL、DML,能够编写DDL完成数据库、表的操作,其它语言如TPL、DCL、CCL了解即可
  • 6.2、学习要求
    • 熟练掌握数据增删改查相关的 SQL 语句编写

    • 在 Python代码中操作数据就是通过 SQL 语句来操作数据

      # 创建Connection连接
      conn = connect(host='localhost', port=3306, user='root', password='mysql', database='python1', charset='utf8')
      # 得Cursor对象
      cs = conn.cursor()
      # 更新
      # sql = 'update students set name="刘邦" where id=6'
      # 删除
      # sql = 'delete from students where id=6'
      # 执行select语句,并返回受影响的行数:查询一条学生数据
      sql = 'select id,name from students where id = 7'
      # sql = 'SELECT id,name FROM students WHERE id = 7'
      count=cs.execute(sql)
      # 打印受影响的行数
      print(count)
      

七、MySQL

  • 7.1、MySQL 简介

    • 点击查看MySQL官方网站
    • MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,后来被Sun公司收购,Sun公司后来又被Oracle公司收购,目前属于Oracle旗下产品
    • 特点
      • 使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性
      • 支持多种操作系统,如Linux、Windows、AIX、FreeBSD、HP-UX、MacOS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris等
      • 为多种编程语言提供了API,如C、C++、Python、Java、Perl、PHP、Eiffel、Ruby等
      • 支持多线程,充分利用CPU资源
      • 优化的SQL查询算法,有效地提高查询速度
      • 提供多语言支持,常见的编码如GB2312、BIG5、UTF8
      • 提供TCP/IP、ODBC和JDBC等多种数据库连接途径
      • 提供用于管理、检查、优化数据库操作的管理工具
      • 大型的数据库。可以处理拥有上千万条记录的大型数据库
      • 支持多种存储引擎
      • MySQL 软件采用了双授权政策,它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库
      • MySQL使用标准的SQL数据语言形式
      • Mysql是可以定制的,采用了GPL协议,你可以修改源码来开发自己的Mysql系统
      • 在线DDL更改功能
      • 复制全局事务标识
      • 复制无崩溃从机
      • 复制多线程从机

      开源 免费 不要钱 使用范围广,跨平台支持性好,提供了多种语言调用的 API,是学习数据库开发的首选

  • 7.2、MySQL服务器下载以及安装,服务器端一般以服务方式管理,名称为mysql

    • 我的是Mac电脑,mysql的官网地址 , 选择一个进行下载

      mysql

    • 查看是否安装上mysql,打开偏好设置,在安装的过程中会让输入一个密码,记好


      打开偏好设置
    • 也可以在终端输入 mysql -v 查看是否安装上,会报错,想输入mysql,不报这个错咋办? 起别名

      # 从命令行访问常用程序(如 mysql 和 mysqladmin)
      alias mysql=/usr/local/mysql/bin/mysql
      alias mysqladmin=/usr/local/mysql/bin/mysqladmin
      
      终端输入 mysql -v 查看是否安装上
    • 输入mysql --help 即可看到mysql都具有哪些命令

    • 添加系统环境变量

      cd ~
      vim .bash_profile
      # 添加以下代码
      export PATH=${PATH}:/usr/local/mysql/bin
      # 退出后
      source .bash_profile
      # 如果不进行以下操作的话,每打开一个终端,都要再输一遍 source .bash_profile
      vim .zshrc
      # 添加以下代码
      export PATH=${PATH}:/usr/local/mysql/bin
      # 退出后
      source .zshrc
      
    • 修改密码

      mysqladmin -u root -p password 12345678
      # 12345678是我的新密码,自行修改成自己想要设置的密码
      # 按回车后, 提示输入密码,此时让输入的密码不是你电脑的密码,而是数据库的密码。
      
    • mysql -u root -p 回车之后输入密码,进入MySQL的运行框,可看下图

      mysql -u root -p

    • show databases;查看都有哪些库;; 不可少

      `show databases;`查看都有哪些库

    • 输入exitquit\q,按下回车退出, 或者control+D退出

    • 另外 启动/停止/重启 MySQL服务

      启动MySQL服务
      sudo /usr/local/mysql/support-files/mysql.server start
      
      停止MySQL服务
      sudo /usr/local/mysql/support-files/mysql.server stop
      
      重启MySQL服务
      sudo /usr/local/mysql/support-files/mysql.server restart
      
    • Mac上安装Mysql配置文件的添加及修改配置文件

    提示:上面的步骤都是我在本地搞的,这个博客里面是我在服务器安装mysql的参考 在阿里云的服务器linux下安装mysql和卸载mysql,在7.3里面添加其他用户也是我在阿里云服务器搞的

  • 7.3、MySQL添加其他用户

    • (1)、找到my.cnf配置文件: 你的MySQL有没有配置,如果没有配置的话,配置下:my.cnf 配置文件
      如果/etc/目录下没有my.cnf配置文件,请到/usr/share/mysql/下找到*.cnf文件,拷贝其中一个到/etc/并改名为my.cnf)中。命令如下:cp /usr/share/mysql/my-medium.cnf /etc/my.cnf

      提示:我是报错:mysql创建用户报错ERROR 1364 (HY000): Field 'ssl_cipher' doesn't have a default value,原因是mysql默认配置严格模式,该模式禁止通过insert的方式直接修改mysql库中的user表进行添加新用户。

    • (2)、vim /etc/my.cnf

      sql-mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION 
      

      修改成:

      sql-mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION 
      

      然后重启mysql服务

      service mysql restart
      
    • (3)、创建用户,创建之前先输入一下:use mysql;

      mysql> insert into mysql.user(Host,User,Password) values("localhost","test",password("456123"));
      

      这样就创建了一个名为:test 密码为:1234 的用户。
      注意:此处的"localhost",是指该用户只能在本地登录,不能在另外一台机器上远程登录。如果想远程登录的话,将"localhost"改为"%",表示在任何一台电脑上都可以登录。也可以指定某台机器可以远程登录。

    • (4)、登录MYSQL(有ROOT权限),这里以ROOT身份登录

      > mysql -u root -p
      
    • (5)、为用户创建一个数据库(test),如果数据库存在就不需要再建了,直接进行第六步

      mysql>create database test;
      
    • (6)、授权test1用户拥有test数据库的所有权限(某个数据库的所有权限)

      mysql>grant all privileges on test.* to test1@localhost identified by '456123';
      mysql>flush privileges;//刷新系统权限表
      
    • (7)、如果想指定部分权限给一用户,可以这样来写

      mysql>grant select,update on test.* to test1@localhost identified by '456123';
      
    • (8)、授权test1用户拥有所有数据库的某些权限

      mysql>grant select,delete,update,create,drop on *.* to test1@"%" identified by "456123";
      
    • (9)、参考资料 MySQL添加用户、删除用户与授权

      提示:

      • 查看有所有的库: show databases;
      • 建立数据库 : create database testTable;
        建的新表
      • 查看版本:select version();
      • 显示当前时间:select now();
  • 7.4、MySQL客户端安装以及使用,客户端为开发人员与dba使用,通过socket方式与服务端通信,常用的有navicat、命令行 mysql

    • 图形化界面客户端 navicat, 可以到Navicat官网下载

      图形化界面客户端 `navicat`

    • 问题一:中文乱码
      解决办法:打开start_navicat文件

      将export LANG="en_US.UTF-8"改为export LANG="zh_CN.UTF-8"
      
    • 问题二:试用期
      解决办法:删除用户目录下的.navicat64目录

      cd ~
      rm -r .navicat64
      
    • 最基本的连接命令如下,输入后回车

      mysql -u root -p 
      
    • 连接 阿里云 mysql 数据库


      image.png
    • 解决阿里云MySQL远程连接不上的问题:

      • step1:
        1、修改user表:MySQL>update user set host = '%' where user = 'root';
        2、授权主机访问:MySQL>GRANT ALL PRIVILEGES ON . TO 'root'@'%' IDENTIFIED BY '你的密码' WITH GRANT OPTION;
        3、刷新权限:MySQL>FLUSH PRIVILEGES;
        4、退出:MySQL>EXIT;

      • step2:查看端口监听状态,netstat -an|grep 3306,如果显示不是如下图所示,则需要修改配置文件。找到my.cnf,一般在/etc/mysql/下面,具体情况根据实际而定。注释掉其中的bind-address属性。如下


        再次-an|grep 3306,如下级OK:

      • step3:开启阿里云安全组端口策略
        进入控制台,网络和安全->安全组->配置规则,将MySQL监听端口开放即可,如下:


        网络和安全->安全组->配置规则
      • step4:再次测试就是上面图中连接成功的状态

      • 连接后的效果(这里我用了一个root用户和四个测试用户)


        连接后的效果

八、通过navicat操作数据库

  • 8.1、在 7.3 里面,我们已经安装好 navicat,那么我们使用一下它。

  • 8.2、建库

    • 选中一个库,右击建库


      选中一个库,右击建库
      • 选择 utf8 作为字符集


        选择 utf8 作为字符集
      • 选择普通的默认排序


        选择普通的默认排序
  • 8.3、建表 和 在表中建字段

    建表 和 在表中建字段

    在表中建字段

    在表中添加数据

九、数据完整性

  • 9.1、一个数据库就是一个完整的业务单元,可以包含多张表,数据被存储在表中;在表中为了更加准确的存储数据,保证数据的正确有效,可以在创建表的时候,为表添加一些强制性的验证,包括数据字段的类型、约束。

  • 9.2、数据类型

    • 可以通过查看帮助文档查阅所有支持的数据类型
    • 使用数据类型的原则是:够用就行,尽量使用取值范围小的,而不用大的,这样可以更多的节省存储空间
    • 常用数据类型如下:
      • 整数:int,bit(更小的类型)
      • 小数:decimal
      • 字符串:varchar,char
      • 日期时间: date, time, datetime
      • 枚举类型(enum)
    • 特别说明的类型如下:
      • decimal表示浮点数,如decimal(5,2)表示共存5位数,小数占2位
      • char表示固定长度的字符串,如char(3),如果填充'ab'时会补一个空格为'ab '
      • varchar表示可变长度的字符串,如varchar(3),填充'ab'时就会存储'ab'
      • 字符串text表示存储大文本,当字符大于4000时推荐使用
      • 对于图片、音频、视频等文件,不存储在数据库中,而是上传到某个服务器上,然后在表中存储这个文件的保存路径(我一般他视频或者图片放到七牛云,在自己的服务器存储视频或者图片的链接)
      • 更全的数据类型可以参考:东哥推荐的博客
  • 9.3、约束

    • 主键primary key:物理上存储的顺序
    • 非空not null:此字段不允许填写空值
    • 惟一unique:此字段的值不允许重复
    • 默认default:当不填写此值时会使用默认值,如果填写时以填写为准
    • 外键foreign key:对关系字段进行约束,当为关系字段填写值时,会到关联的表中查询此值是否存在,如果存在则填写成功,如果不存在则填写失败并抛出异常;提示:在自己的表中导入的其他表的主键是外键
    • 说明:虽然外键约束可以保证数据的有效性,但是在进行数据的crud(增加、修改、删除、查询)时,都会降低数据库的性能,所以不推荐使用,那么数据的有效性怎么保证呢?答:可以在逻辑层进行控制;
  • 9.4、类型表

    • 数值类型(常用)

      类型 字节大小 有符号范围(Signed) 无符号范围(Unsigned)
      TINYINT 1 -128 ~ 127 0 ~ 255
      SMALLINT 2 -32768 ~ 32767 0 ~ 65535
      MEDIUMINT 3 -8388608 ~ 8388607 0 ~ 16777215
      INT/INTEGER 4 -2147483648 ~2147483647 0 ~ 4294967295
      BIGINT 8 -9223372036854775808 ~ 9223372036854775807 0 ~ 18446744073709551615
    • 字符串

      类型 字节大小 示例
      CHAR 0-255 类型:char(3) 输入 'ab', 实际存储为'ab ', 输入'abcd' 实际存储为 'abc'
      VARCHAR 0-255 类型:varchar(3)'ab',实际存储为'ab', 输入'abcd',实际存储为'abc'
      TEXT 0-65535 大文本
    • 日期时间类型

      类型 字节大小 示例
      DATE 4 '2020-01-01'
      TIME 3 '12:29:59'
      DATETIME 8 '2020-01-01 12:29:59'
      YEAR 1 '2017'
      TIMESTAMP 4 '1970-01-01 00:00:01' UTC ~ '2038-01-01 00:00:01' UTC

十、命令行脚本操作数据库

  • 10.1、链接数据库

    • 链接

      • 第一种:需要输入密码

        mysql -uroot -p
        输入密码进入
        
      • 第二种:直接跟上密码(-p与密码之间没有间隔)

        mysql -u root -p密码
        
    • 链接成功


      链接成功
    • 退出登录

      quit 和 exit 或 ctrl+d
      
    • 登录成功后,输入如下命令查看效果

      查看版本:select version();
      显示当前时间:select now();
      
    • 修改输入提示符

      prompt python>
      
      • \D 完整日期
      • \U 使用用户
  • 10.2、数据库

    • 查看所有数据库

      show databases;
      
    • 使用数据库

      use 数据库名;
      
    • 查看当前使用的数据库

      select database();
      
    • 创建数据库(查看创建方式:show create table classes;

      create database 数据库名 charset=utf8;
      

      例如:testBase是数据库名字

      create database testBase charset=utf8;
      
    • 删除数据库

      drop database 数据库名;
      

      例如:testBase是上面创建的数据库名字

      drop database testBase;
      
  • 10.3、数据表

    • 查看当前数据库中所有表

      show tables;
      
    • 查看表结构

      desc 表名;
      
    • 创建表,auto_increment 表示自动增长

      CREATE TABLE table_name(
            column1 datatype contrai,
            column2 datatype,
            column3 datatype,
            .....
            columnN datatype,
           PRIMARY KEY(one or more columns)
      );
      

      例:创建班级表

      create table classes(
           id int unsigned auto_increment primary key not null,
           name varchar(10)
      );
      

      例:创建学生表(primary key auto_increment not null:设为主键、自增长、不为空) 约束的顺序随便写,最后一个字段不要 逗号,在定义类型的时候,后面加上 unsigned 表示无符号,gender enum('男','女','人妖','保密') default "保密",可以为gender设置默认值 "保密"

      create table students(
           id int unsigned primary key auto_increment not null,
           name varchar(20) default '',
           age tinyint unsigned default 0,
           height decimal(5,2),
           gender enum('男','女','人妖','保密') default "保密",
            cls_id int unsigned default 0
      );
      
    在库中建表&查看建好的表
    • 给表添加数据

      insert into students values(0,"马冶",26,172.33,"男",1)
      查询表内容
      select * from students;
      
    • 修改表-添加字段

      alter table 表名 add 列名 类型;
      

      例如:给students表添加生日字段

      alter table students add birthday datetime;
      
      修改表-添加字段
    • 修改表-修改字段:重命名版(字段名字、类型、及约束 都可以改变)

      alter table 表名 change 原名 新名 类型及约束;
      

      例如:把学生的 birthday 改为 birth 类型还是datetime not null,不能为空

      alter table students change birthday birth datetime not null;
      
      修改表-修改字段:重命名版
    • 修改表-修改字段:不重命名版(字段名字不变,类型以及约束可以改变)

      alter table 表名 modify 列名 类型及约束;
      

      例如:

      alter table students modify birth date not null;
      
      修改表-修改字段:不重命名版(字段名字不变,类型以及约束可以改变)
    • 修改表-删除字段

      alter table 表名 drop 列名;
      

      例如:删除表中 gender(性别) 字段

      alter table students drop gender;
      
      修改表-删除字段
    • 查看表的创建语句

      show create table 表名;
      

      例如:

      show create table classes;
      
      查看表的创建语句
    • 删除表

      drop table 表名;
      

      例如:删除表

      drop table students;
      
      删除表

十一、表中数据的增删改查(curd)

curd的解释: 代表 创建(Create)、更新(Update)、读取(Retrieve)和 删除(Delete)

  • 11.1、准备

    • (1)、创建一个班级库:ClassDataBase

      create database ClassDataBase charset=utf8;
      
      创建一个班级库:`ClassDataBase`
    • (2)、在 班级库:ClassDataBase 里面创建一个学生表 studentTable
      ,里面创建 4 个字段:id、name、age、gender,提示:gender 是枚举类型

      create table studentTable(
            id int unsigned primary key auto_increment not null,
            name varchar(20) default '',
            age tinyint unsigned default 0,
            gender enum('男','女','人妖','保密') default '保密'
      );
      
      在 班级库:`ClassDataBase ` 里面创建一个学生表 `studentTable` ,里面创建 4 个字段:id、name、age、gender

      查看表结构:desc 表名;
  • 11.2、 加数据

    • 全列插入:有几个字段插入几个,主键字段 可以用 0nulldefault 来占位,枚举可以用 1,2,3,4来代替,如下面的例子中 "男" 可以用 1 来代替,看上图的枚举,男是第一位,枚举有几个最大是几,上面的gender是四个性别,最大是4,超过4报错

      insert into 表名 values(value1,value2,value3,.....);
      

      例如:-- 向studentTable表插入 一个学生信息(studentTable是表名)

      insert into studentTable values(0, "小王", 26, "男");
      
      全列插入
    • 部分插入

      insert into 表名(列1名,列2名,...) values(值1,值2,...)
      

      例如:枚举选的4 ,所以是 保密

      insert into studentTable (name, gender) values ("小红", 4);
      
      部分插入
    • 多行插入

      insert into studentTable (name, gender) values ("小李", 3),("小明", 1);
      insert into studentTable values(default, "小飞", 20, "女"), (default, "小杜", 20, "男");
      
    多行插入
  • 11.3、 除数据

    • 物理删除(不要去操作):delete from 表名 where 条件;

      delete from studentTable; -- 整个数据表中的所有数据全部删除
      delete from studentTable where name="小杜";
      
    • 逻辑删除:用一个字段来表示 这条信息是否已经不能再使用了,给studentTable表添加一个is_delete字段 bit 类型, bit里面存储的是 0 与 1。
      例如:给表studentTable增加bit字段,默认为 0 ,代表没有删除

      alter table studentTable add is_delete bit default 0;
      

      根据小飞的id,模拟逻辑删除 小飞(也就是更新数据)

      update studentTable set is_delete=1 where id=5;
      
      逻辑删除
  • 11.4、 变数据(修改数据)
    update 表名 set 列1=值1,列2=值2... where 条件;
    例如:

    update studentTable set gender=1; -- 全部都改
    update studentTable set gender=2 where name="小王"; -- 只要name是小王的 全部的修改
    update studentTable set gender=1 where id=3; -- 只要id为3的 进行修改
    update studentTable set age=22, gender=1 where id=3; -- 只要id为3的 进行修改
    
  • 11.5、 询数据

    • 查询所有列

      select * from 表名;
      

      例如:

      select * from studentTable;
      
    • 一定条件下查询

      select * from 表名 where 条件; -- 查询 条件 下的所有信息
      

      例如:

      select * from studentTable where name="小王"; -- 查询 name为 小王 的所有信息
      select * from studentTable where id>2; -- 查询 id > 2 的所有信息
      
    • 查询指定列

       select 列1,列2,... from 表名;
      

      例如:

      select name,gender from studentTable;
      
      查询指定列
    • 可以 使用 as 为 列或表 指定别名

      select 字段[as 别名] , 字段[as 别名] from 数据表 where ....;
      

      例如:

      select name as 姓名,gender as 性别 from studentTable;
      
      可以 **使用 as 为 列或表 指定别名**
    • 查询 字段的顺序(哪个在前面就先显示谁)

      select id as 序号, gender as 性别, name as 姓名 from studentTable;
      
      查询 字段的顺序(哪个在前面就先显示谁)

十二、数据库的备份与恢复 参考博客

  • 12.1、备份
    运行mysqldump命令 (下面 python.sql是新的数据库 )

    mysqldump –u root –p 数据库名 > fileName.sql;
    # 按提示输入mysql的密码
    
    WechatIMG468.jpeg

    提示:mysqldump –u root –p 数据库名 > fileName.sql;里面的 python.sql 你可以指定路径,如果不指定就是备份到当前目录

  • 12.2、恢复
    连接mysql,创建新的数据库

    mysql -u root -p密码
    create database 数据库名 charset=utf8;
    quit
    

    退出连接,执行如下命令

    mysql -u root –p 上面创建的新数据库名 < fileName.sql
    # 根据提示输入mysql密码
    

    提示:fileName.sql 会自动回到当初把它备份出来的地方,名字是你新起的名字

参考博客1
参考博客2
参考博客3

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,126评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,254评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,445评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,185评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,178评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,970评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,276评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,927评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,400评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,883评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,997评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,646评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,213评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,204评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,423评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,423评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,722评论 2 345

推荐阅读更多精彩内容