一、数据库概述

1、什么是数据(Data)

描述事物的符号记录称为数据,描述事物的符号既可以是数字,也可以是文字、图片,图像、声音、语言等,数据由多种表现形式,它们都可以经过数字化后存入计算机。

在计算机中描述一个事物,就需要抽取这一事物的典型特征,组成一条记录,如:

1,alex,male,18,1999

单纯的一条记录并没有任何意义,如果我们按逗号分隔,依次定义各个字段的意思,相当于定义表的标题,如下表格:

id

name

sex

age

birth

1

alex

female

19

1999

2

egon

male

20

1998

这样通过表格我们很清楚的知道了某人的详细信息

2、什么是数据库(Database,简称DB)

数据库是按照数据结构来组织、存储和管理数据的建立在计算机存储设备上的仓库。

严格来说,数据库是长期储存在计算机内、有组织、可共享的数据集合。数据库中的数据指的是以一定的数据模型组织、描述和储存在一起,具有尽可能小的冗余度、较高的数据独立性和易扩展性的特点并可在一定范围内为多个用户共享。

3、什么是数据库管理系统(DataBase Management System)

在了解了Data与DB的概念后,如何科学地组织和存储数据,如何高效获取和维护数据成了关键,这就用到了一个系统软件---数据库管理系统,如MySQL、Oracle、SQLite、Access、SQL Server等。

MySQL主要用于大型门户,例如搜狗、新浪等,它主要的优势就是开放源代码,因为开放源代码,所以这个数据库是免费的,他现在是甲骨文公司的产品。

Oracle主要用于银行、铁路、飞机场等。该数据库功能强大,软件费用高。也是甲骨文公司的产品。

SQL Server是微软公司的产品,主要应用于大中型企业,如联想、方正等。

4、数据库服务器、数据库管理系统、数据库、表与记录的关系(重点理解!!!)

数据库服务器:一台计算机(对内存要求比较高)

数据库管理系统:如mysql(是一个软件)

数据库:oldboy_stu(即文件夹)

表:student,school,class_list(即文件)

记录:1 alex male 20(多个字段的信息组成一条记录,即文件中的一行内容)

总结:

数据库服务器:一台计算机,上边运行数据库管理软件;

数据库管理系统:一个管理数据库的软件;

数据库:即文件夹,用来组织文件/表;

表:即文件,用来存放多行内容/多条记录;

二、什么是MySQL

  MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下公司。MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。

  数据库管理软件的分类:

  关系型:如MySQL,SQLite,db2,Oracle,Access,SQL Server,注意:sql语句通用;

  非关系型:mongodb,redis,memcache;

  两者的区别可以简单理解为:

  关系型数据库需要有表结构;

  非关系型数据库是key-value存储的,没有表结构;

  MySQL其实就是用于管理我们的文件的软件,是一个基于socket(内部封装了socket)编写的C/S架构的软件。

  对于MySQL来说有两个软件:

  a、服务器:

  1)MySQL服务端开启;

  2)解析指令(sql语句);

  3)对文件夹、文件以及数据的增删改查;

   b、客户端:

  1)开启MySQL客户端并连接服务端;

  2)发送指令(sql语句);

  解释:对于服务器软件中的socket服务器是一直开着,等待客户端来连接,并且还有创建文件、删除文件等等的操作;对于客户端软件中的scoket客户端,我们得需要发送指令去命令scoket服务端对文件进行操作。

三、MySQL的下载安装和配置(本文以windows 64位操作系统下安装mysql 5.7.23版本 为例)

1、下载安装包

  下载地址:https://dev.mysql.com/downloads/mysql

2、解压

如果想要让MySQL安装在指定目录,那么就将解压后的文件夹移动到指定目录,如:D:\mysql-5.7.23-winx64

注意:文件夹mysql-5.7.23-winx64下的bin文件夹中mysqld.exe是服务端, mysql.exe是客户端。

3、添加环境变量

将MySQL的bin目录路径,如:D:\mysql-5.7.23-winx64\bin,追加到变量值中,用分号 ; 分割。

4、初始化

以管理员身份打开终端,输入命令:

  1. mysqld --initialize-insecure

注意:执行完成后,D:\mysql-5.7.23-winx64目录下增加了一个data文件夹;

5、启用mysql服务

在终端输入命令:

  1. mysqld

注意:结果虽然能将mysql服务启用,但是终端会hung住;此时mysql服务器已经启动成功。

6、启动mysql客户端并连接mysql服务器

以管理员身份再打开一个cmd窗口,输入命令:

  1. mysql uroot -p

  出现mysql>  表示已经进入mysql,输入exit退出。然后通过任务管理器结束mysql进程,即停止mysql服务。

7、将MySQL服务制作成windows服务来解决启用mysql服务后终端hung住的问题:
  1. # 在终端执行如下命令,注册MySQL的windows服务
  2. mysqld --install
  3.  
  4. # 注册成功后,就可以用如下windows命令启动和关闭MySQL服务,且终端也不会hung住
  5. # 启动MySQL服务
  6. net start mysql
  7. # 关闭MySQL服务
  8. net stop mysql
  9.  
  10. # 如下命令可以移出MySQL的windows服务(知道即可,不用执行)
  11. mysqld --remove
8、windows下设置MySQL客户端的登录密码

  用root账号登录,在终端输入如下命令:

  1. mysql uroot p

  登录后可查看当前用户,命令如下:

  1. select user();

  注意:管理员为root(拥有最高权限,管理员账号),初始密码为空,以无密码的方式登录了管理员账号,是非常危险的一件事情,所以要为管理员账号设置密码,如下命令:

  1. mysqladmin uroot p password "123"; # 设置密码为123,此方法行不通可以用下面的方法,方式一
  2. update mysql.user set authentication_string =password('123') where User='root'; 方式二
    alter user 'root'@'localhost' identified by "123"; 方式三

  修改密码:若想将密码123改为456可执行如下命令:

  1. mysqladmin uroot p"123" password "456";
9、忘记密码后如何破解密码

1)以管理员身份打开cmd;

2)停掉mysql服务;

3)执行如下命令跳过授权表:

  1. C:\Windows\system32>mysqld --skip-grant-tables # 加了约束条件即跳过授权表

注意:此命令执行完毕后mysqld进程就开启了;

4)再次查看,直接用root账号,密码为空登录,命令如下:

  1. mysql uroot p # 不用密码登录
  2. select user(); # 查看是不是root账号

5)现在就可以通过修改mysql.user文件来任意更改密码了,继续执行如下命令:

  1. update mysql.user set authentication_string =password(‘’) where User=’root’;

注意:上面这句话是将root密码置为空;

6)刷新权限(更改完成一定要记得刷新),继续执行如下命令:

  1. flush privileges;

7)退出mysql,继续如下命令:

  1. exit;

8)查看当前mysql进程,执行如下命令:

  1. tasklist |findstr mysql

9)杀死当前的进程,执行如下命令:

  1. taskkill /F /PID XXXX # 注意:XXXX是进程号,上一步执行结果能得知

10)现在就可以启动mysql服务了,命令为:net start mysql

登陆后可以无密码登录root用户了,命令为:mysql –uroot –p

也可以更改密码了,比如改为123,命令为:mysql –uroot –p password “123”

10、统一字符编码

进入mysql客户端,执行  \s  查看字符编码,默认结果如下:

为了统一字符编码,可以执行如下操作:

1)在D:\mysql-5.7.23-winx64文件夹下创建my.ini文件(my.ini文件是mysql的配置文件);

2)将如下代码拷贝保存到my.ini文件中:

  1.   [mysqld]
  2.   # 设置mysql的安装目录 **里面的路径一定是自己电脑的mysql的目录**
  3.   basedir= D:\mysql-5.7.23-winx64
  4.   # 设置mysql数据库的数据的存放目录,必须是data
  5.   datadir= D:\mysql-5.7.23-winx64\data
  6.   sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
  7.  
  8.   # mysql端口
  9.   port=3306
  10.   # 字符集
  11.   [mysqld]
  12.   character-set-server=utf8
  13.   collation-server=utf8_general_ci
  14.   [client]
  15.   default-character-set=utf8
  16.   [mysql]
  17.   default-character-set=utf8

3)以管理员身份重启服务,执行如下命令:

  1. net stop mysql
  2. net start mysql

注意:更改了配置文件一定要重启服务;

4)在cmd中进入mysql客户端,执行 \s,显示字符编码为utf8,则表示修改成功;

四、初识SQL语句

在我们开始学习MySQL 数据库前,让我们先了解下RDBMS的一些术语:

数据库: 数据库是一些关联表的集合。

数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。

列:一列(数据元素)包含了相同的数据, 例如邮政编码的数据。

行:一行(元组,或记录)是一组相关的数据,例如一条用户订阅的数据。

冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性。

主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。

外键:外键用于关联两个表。

复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。

索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。

参照完整性: 参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。

1、操作库(文件夹)

a、增:

  1. create database db1 charset utf8;

b、删:

  1. drop database db1;

c、改:

  1. alter database db1 charset gbk;

d、查:

  1. # 查看当前创建的数据库
  2. show create database db1;
  3.  
  4. # 查看所有的数据库
  5. show databases;
2、操作表(文件)

a、增:

  1. create table t1(id int,name char);

b、删:

  1. drop table t1;

c、改:

  1. # name字段修改为6个字符
  2. alter table t1 modify name char();
  3.  
  4. # 改变name为大写的NAME
  5. alter table t1 change name NAME char();

d、查:

  1. # 查看当前的这张t1表
  2. show create table t1;
  3.  
  4. # 查看所有的表
  5. show tables;
  6.  
  7. # 查看表的详细信息
  8. desc t1;
3、操作文件内容(记录)

a、增:

  1. # 插入一条数据,规定id,name
  2. insert into t1(id,name) values(,”alex01”),(,”alex02”),(,”alex03”);

b、删:

  1. delete from t1;
  2. delete from t1 where id=;

c、改:

  1. update db1.t1 set name=’zhangsan’;
  2. update db1.t1 set name=’alex where id=;

d、查:

  1. select id from db1.t1;
  2. select id,name from db1.t1;
  3. select * from db1.t1;

五、MySQL创建用户和授权

我们知道MySQL的最高权限管理者是root用户,它拥有着最高的权限操作,包括select、update、delete、grant等操作,那么一般进入公司之后DBA工程师会创建一个用户名和密码,并给这个用户设置某个权限(或所有权限,但是grant权限只有root用户可以有),让你去用此用户名和密码去连接数据库进行操作,接下来我们来简单了解一下如何创建用户和密码、如何给用户授权以及如何移除当前用户的权限。

进入mysql客户端,执行show databases;命令,可以看到有默认如下4个数据库:

    information_schema

    mysql

    performance_schema

    sys

MySQL的用户管理在mysql数据库中。

1、如果你想创建一个新的用户,并授予某些权限,则需要以下操作:

a、进入到mysql数据库中,执行如下命令:

  1. mysql>use mysql
  2. Database changed # 说明已经进入

b、对用户的查询和增删改操作

1)查询数据库中所有用户和其拥有权限,命令如下:

  1. select * from mysql.user\G; # \G是格式化显示

2)创建新用户,命令如下:

  1. # 指定IP为192.168.1.1的用户名为wll,密码为123的用户登录
  2. create user wll’@’192.168.1.1 identified by 123’;
  3.  
  4. # 指定IP为192.168.1.开头的用户名为wll,密码为123的用户登录
  5. create user wll’@’192.168.1.%’ identified by 123’;
  6.  
  7. # 指定任何IP的用户名为wll,密码为123的用户登录
  8. create user wll’@’%’ identified by 123’;

3)删除用户

  1. drop user ‘用户名’@’IP地址’;

4)修改

  1. # 修改用户名
  2. rename user ‘用户名’@’IP地址’ to ‘新用户名’@’IP地址’;
  3. # 修改密码
  4. set password for ‘用户名’@’IP地址’=Password(‘新密码’);

c、对用户授权管理

1)查看数据库中具体某个用户的权限

  1. show grants for ‘用户名’@’IP地址’;

2)授权

  1. # 授权wll用户仅对db1库中的t1表有查询、插入和更新的操作
  2. grant select,insert,update on db1.t1 to wll’@’%’;
  3. #授权wll用户对db1下的t1文件可执行任何操作(除grant权限,这是root才有的)
  4. grant all privileges on db1.t1 to "wll"@'%';
  5. # 授权wll用户对db1数据库中的所有文件可执行任何操作
  6. grant all privileges on db1.* to "wll"@'%';
  7. # 授权wll用户对所有数据库中的所有文件可执行任何操作
  8. grant all privileges on *.* to "mjj"@'%';

3)取消权限

  1. # 取消来自远程服务器的wll用户对db1库中的t1文件的所有操作权限
  2. revoke all on db1.t1 from wll’@’%’;
  3. # 取消来自远程服务器的wll用户对数据库db1中的所有表的所有操作权限
  4. revoke all on db1.* from wll’@’%’;
  5. # 取消来自远程服务器的wll用户对所有数据库中的所有表的所有操作权限
  6. revoke all privileges on *.* from wll’@’%’;

PS:在公司中,一般情况下是DBA工程师来做这些授权工作,他给你一个用户名和密码,你来连接就可以了,连接的命令为:mysql –u用户名 –h IP地址 –p密码

2、MySQL备份操作
  1. # 备份:数据表结构 + 数据
  2. mysqldump u root db1 > db1.sql -p
  3. # 备份:数据表结构
  4. mysqldump u root -d db1 > db1.sql -p
  5. # 导入现有的数据到某个数据库
  6. create database db10; # 先创建一个新的数据库db10
  7. mysqldump u root d db10 < db1.sql p # 将已有的数据库文件导入到db10数据库中

MySQL数据库(1)- 数据库概述、MySQL的安装与配置、初始SQL语句、MySQL创建用户和授权的更多相关文章

  1. Mysql基础(一):Mysql初识、基本指令、数据库密码相关、创建用户及授权

    来源:https://www.cnblogs.com/liubing8/p/11432534.html 目录 数据库01 /Mysql初识.基本指令.数据库密码相关.创建用户及授权 1. 数据库概述 ...

  2. 数据库01 /Mysql初识、基本指令、数据库密码相关、创建用户及授权

    数据库01 /Mysql初识.基本指令.数据库密码相关.创建用户及授权 目录 数据库01 /Mysql初识.基本指令.数据库密码相关.创建用户及授权 1. 数据库概述 2. 数据库管理系统/DBMS ...

  3. MySQL数据库~~~~~创建用户和授权、备份和还原

    一 MySQL创建用户和授权 1.1 对新用户增删改 1.创建用户: # 指定ip:192.118.1.1的chao用户登录 create user 'chao'@'192.118.1.1' iden ...

  4. MySQL(安装,服务,创建用户及授权)

    参考:http://www.cnblogs.com/wupeiqi/p/5713315.html 单机程序(自己DB)          单机程序(公用DB)      MySQL:是用于管理文件的一 ...

  5. python 之 数据库(数据库安装方法、基本sql语句、存储引擎)

    第十章 数据库 10.1 数据库介绍 1.数据库相关概念 数据库服务器:本质就是一个台计算机,该计算机之上安装有数据库管理软件的服务端 数据库管理系统RDBMS:本质就是一个C/S架构的套接字软件 库 ...

  6. python 全栈开发,Day63(子查询,MySQl创建用户和授权,可视化工具Navicat的使用,pymysql模块的使用)

    昨日内容回顾 外键的变种三种关系: 多对一: 左表的多 对右表一 成立 左边的一 对右表多 不成立 foreign key(从表的id) refreences 主表的(id) 多对多 建立第三张表(f ...

  7. mysql 创建用户及授权(2)

    一. MySQL初始密码 新安装的MySQL默认是没有密码的,设置初始密码可以用以下命 mysqladmin -u root password 'new-password' mysqladmin -u ...

  8. 制作MySQL的Windows服务+创建用户及授权

         在上一篇随笔中详述了MySQL的Windows 64位版本的安装,以及初始化操作.启动服务端.客户端连接.一些基本的文件操作等.然而在进行这些操作的时候,需要我们去输入一长串的路径和命令才能 ...

  9. MySQL 创建用户 与 授权

    例,需要给 121.52.215.100 连接添加一个用户 dee,密码是 123456,他只能对数据库 vshop 有 select 权限: CREATE USER '; GRANT SELECT ...

随机推荐

  1. 新标准C++程序设计读书笔记_继承和多态

    简单继承的例子: #include <iostream> #include <string> using namespace std; class CStudent { pri ...

  2. HTML5与XML的区别

    XHTML 是 XML 风格的 HTML 4.01. HTML5 是HTML的第五大版本,取代 HTML 4.01. XHTML是基于XML发布的HTML规范,旨在规范HTML的格式. 两者提出的目的 ...

  3. Windows管理多个java版本--解决'has value '1.8',but'1.7' is required'的方法

    公司考虑到代码的可持续维护性,要求全部使用java7,自己又想在空闲时间学一些java8的新特性,故在安装完1.7之后又安装了1.8,导致eclisp在启动时报’has value ‘1.8’,but ...

  4. vue 过渡效果-列表过渡

    到目前为止,关于过渡我们已经讲到, 单个节点 同一时间渲染多个节点的一个 那么怎么同时渲染整个列表,比如使用v-if?在这种场景下,使用<transition-group>组件,在我们深入 ...

  5. session用户账号认证(一个用户登陆,踢出前一个用户)

    在web.xml中配置: <listener> <listener-class>cn.edu.hbcf.common.listener.SessionAttributeList ...

  6. Unity5.1 新的网络引擎UNET(四) UNET Remote Actions

    孙广东   2015.7.12 网络系统 具有网络中执行操作actions 的方法.这些类型的actions 有时是调用远程过程调用(Remote Procedure Calls). 在网络系统中有两 ...

  7. 我不会OOO,仍然可以XXX_转

    转自:http://blog.csdn.net/absurd 按照<审死官>里的读法,标题可以读着:答复:我不会圈圈圈,仍然可以叉叉叉.圈圈叉叉并不特指某个东西,而是一个通配符.代表诸如: ...

  8. Squares - poj 2002(hash)

    枚举两个点作为一条边,求出正方形的另外两个点,利用hash查找另外两个点. #include<stdio.h> #include<string.h> #include<s ...

  9. mac上制作u盘启动盘

    Mac上制作Ubuntu USB启动盘 一.下载ubuntu iso镜像 二.将iso转换为img文件 $ hdiutil convert -format UDRW -o /path/to/gener ...

  10. (转载)【C#4.0】dynamic和var及object

    dynamic a = 10;a = a + 10;Console.WriteLine(a.GetType()); 此段代码会输出 System.Int32,第二行不需要类型转换,因为在运行时识别类型 ...