一、数据库概述

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、初始化

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

    mysqld --initialize-insecure

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

5、启用mysql服务

在终端输入命令:

    mysqld

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

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

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

    mysql –uroot -p

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

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

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

    mysql –uroot –p

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

    select user();

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

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

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

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

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

2)停掉mysql服务;

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

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

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

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

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

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

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

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

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

    flush privileges;

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

    exit;

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

    tasklist |findstr mysql

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

    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文件中:

  [mysqld]
  # 设置mysql的安装目录 **里面的路径一定是自己电脑的mysql的目录**
  basedir= D:\mysql-5.7.23-winx64
  # 设置mysql数据库的数据的存放目录,必须是data
  datadir= D:\mysql-5.7.23-winx64\data
  sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES   # mysql端口
  port=3306
  # 字符集
  [mysqld]
  character-set-server=utf8
  collation-server=utf8_general_ci
  [client]
  default-character-set=utf8
  [mysql]
  default-character-set=utf8

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

    net stop mysql
net start mysql

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

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

四、初识SQL语句

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

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

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

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

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

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

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

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

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

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

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

1、操作库(文件夹)

a、增:

    create database db1 charset utf8;

b、删:

    drop database db1;

c、改:

    alter database db1 charset gbk;

d、查:

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

a、增:

    create table t1(id int,name char);

b、删:

    drop table t1;

c、改:

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

d、查:

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

a、增:

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

b、删:

    delete from t1;
delete from t1 where id=;

c、改:

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

d、查:

    select id from db1.t1;
select id,name from db1.t1;
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数据库中,执行如下命令:

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

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

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

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

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

    # 指定IP为192.168.1.1的用户名为wll,密码为123的用户登录
create user ‘wll’@’192.168.1.1’ identified by ‘123’; # 指定IP为192.168.1.开头的用户名为wll,密码为123的用户登录
create user ‘wll’@’192.168.1.%’ identified by ‘123’; # 指定任何IP的用户名为wll,密码为123的用户登录
create user ‘wll’@’%’ identified by ‘123’;

3)删除用户

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

4)修改

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

c、对用户授权管理

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

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

2)授权

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

3)取消权限

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

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

2、MySQL备份操作
    # 备份:数据表结构 + 数据
mysqldump –u root db1 > db1.sql -p
# 备份:数据表结构
mysqldump –u root -d db1 > db1.sql -p
# 导入现有的数据到某个数据库
create database db10; # 先创建一个新的数据库db10
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. 227. Mock Hanoi Tower by Stacks【easy】

    In the classic problem of Towers of Hanoi, you have 3 towers and N disks of different sizes which ca ...

  2. CMU-15445 LAB2:实现一个支持并发操作的B+树

    概述 经过几天鏖战终于完成了lab2,本lab实现一个支持并发操作的B+树.简直B格满满. B+树 为什么需要B+树 B+树本质上是一个索引数据结构.比如我们要用某个给定的ID去检索某个student ...

  3. linux学习笔记9--命令cat

    cat命令的用途是连接文件或标准输入并打印.这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用. cat命令连接文件并打印到标准输出设备上, ...

  4. 用C/C++扩展你的PHP 为你的php增加功能

    英文版下载: PHP 5 Power Programming http://www.jb51.net/books/61020.html PHP取得成功的一个主要原因之一是她拥有大量的可用扩展.web开 ...

  5. Linux 设备驱动的固件载入

    作为一个驱动作者, 你可能发现你面对一个设备必须在它能支持工作前下载固件到它里面. 硬件市场的很多地方的竞争是如此得强烈, 以至于甚至一点用作设备控制固件的 EEPROM 的成本制造商都不愿意花费. ...

  6. struts2中,Action通过什么方式获得用户从页面输入的数据,又是通过什么方式把其自身的数据传给视图的?

    struts2中,Action通过什么方式获得用户从页面输入的数据,又是通过什么方式把其自身的数据传给视图的? 解答: 1)可以直接通过与表单元素相同名称的数据成员(需要存在符合命名规范set和get ...

  7. 手机控制电脑定时关机,重启WiFi

    需求 晚上上床,电脑开着WiFi让手机上网.要么上床之前就给电脑设置定时关机:要么就电脑开通宵:要么就待会下来关电脑.这3种情况都非常不好,要么麻烦,要么浪费. 最无奈的是电脑刚开好WiFi,上床后才 ...

  8. Chem 3D模型的参数值更改方法

    在化学绘图软件ChemOffice 15.1中有个专门用于绘制三维结构的组件,就是Chem 3D.通过这个组件用户可以绘制3D模型并可以通过这个组件来计算一些化学数据.在使用Chem 3D组件过程中, ...

  9. sql实际应用-递归查询

    1.既然要谈到sql,数据库表是必须的 2.数据结构     3.获取某个节点的所有子节点     传统的写法(sql2000) 很麻烦,暂且就不写了     来看看CTE的写法 CREATE PRO ...

  10. Mysql event时间触发器,实现定时修改某些符合某一条件的某一字段

    我最近做项目遇到一个问题就是数据库的的订单需要定时检查自己的订单状态,如果到了endtime字段的时间订单状态还是2,就将订单状态修改为4 在网上找到类似的解决方法. 定时的关键是要结合mysql的某 ...