数据库-理论基础

数据库-理论基础

1.什么是数据库

数据:描述事物的符号记录,可以是数字、文字、图形、图像、声音、语言等,数据有多种形式,它们都

可以经过数字化后存入计算机。

数据库:存储数据的仓库,是长期存放在计算机内、有组织、可共享的大量数据的集合。数据库中的数据

按照一定数据模型组织、描述和存储,具有较小的冗余度, 较高的独立性和易扩展性,并为各种用户共

享,总结为以下几点:

。数据结构化

。数据的共享性高,冗余度低,易扩充

。数据独立性高

。数据由 DBMS 统一管理和控制(安全性、完整性、并发控制、故障恢复)

解释: DBMS 数据库管理系统(能够操作和管理数据库的大型软件)


2.数据库与文件系统

文件系统: 文件系统是操作系统用于明确存储设备(常见的是磁盘) 或分区上的文件的方法和数据结构;即在

存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文

件系统。

如:NTFS、EXT3/4、XFS

数据库系统:数据库管理系统(Database Management System)是一种操纵和管理数据库的大型软件,用于

建立、使用和维护数据库,简称 DBMS。它对数据库进行统一的管理和控制,以保证数据库的安全性和完

整性。

对比区别:

1.管理对象不同:文件系统的管理对象是文件,并非直接对数据进行管理,不同的数据结构需要使用

不同的文件类型进行保存 (举例: txt 文件和 doc 文件不能通过修改文件名完成转换);而数据库直接对数据

进行存储和管理

2.存储方式不同:文件系统使用不同的文件将数据分类 (.doc/.mp4/.jpg) 保存在外部存储上;数据库系

统使用标准统一的数据类型进行数据保存(字母、数字、符号、时间)

3.调用数据的方式不同:文件系统使用不同的软件打开不同类型的文件;数据库系统由 DBMS 统一调

用和管理。如下图:

0

DBMS优缺点总结:

。由于 DBMS 的存在,用户不再需要了解数据存储和其他实现的细节,直接通过 DBMS 就能获取数

据为数据的使用带来极大便利。

。具有以数据为单位的共享性,具有数据的并发访问能力。DBMS 保证了在并发访问时数据的一致性

。低延时访问,典型例子就是线下支付系统的应用,支付规模巨大的时候,数据库系统的表现远远优

于文件系统。

。能够较为频繁的对数据进行修改,在需要频繁修改数据的场景下,数据库系统可以依赖 DBMS 来对

数据进行操作且对性能的消耗相比文件系统比较小。

。对事务的支持。DBMS 支持事务,即一系列对数据的操作集合要么都完成,要么都不完成。在

DBMS上对数据的各种操作都是原子级的。


3.常见数据库有哪些?

1.关系型数据库

关系数据库是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的

数据。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。简单说,关系型数据库是由

多张能互相联接的二维行列表格组成的数据库。

关系模型就是指二维表格模型,因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据

组织。当前主流的关系型数据库有 Oracle、DB2、Microsot SQL Server、Microsoft Access、MySQL、浪

潮 K-DB 等。

实体关系模型简称 E-R 模型,是一套数据库的设计工具,他运用真实世界中事物与关系的观念,来解释

数据库中的抽象的数据架构。

2.非关系型数据库

非关系型数据库: 又被称为 NoSQL (NotOny SQL),意为不仅仅是 SQL,是一种轻量、开源、不兼容

SQL 功能的数据库,对 NoSQL 最普遍的定义是“非关联型的”,强调 Key-Value 存储和文档数据库的优

点,而不是单纯地反对 RDBMS(关系型数据库管理系统)

0

4.关系型数据库(MySQL)的特征及组成结构介绍

1.关系型数据库的发展历程

。层次模型

0

。网状模型

0

2.关系模型

关系模型以二维表结构来表示实体与实体之间的联系,关系模型的数据结构是一个 “二维表框组成的集

合。每个二维表又可称为关系。在关系模型中,操作的对象和结果都是二维表”。

关系模型是目前最流行的数据库模型。支持关系模型的数据库管理系统称为关系数据库管理系统。图

所示为一个简单的关系模型,其中图(a) 和图(b)的主码均为“教师编号”。

0

在关系模型中基本数据结构就是二维表,记录之间的联系是通过不同关系中同名属性来体现的。由此

可见,关系模型中的各个关系模式不应当是孤立的,也不是随意拼凑的一堆二维表,它必须满足相应的要

求。

3.关系型数据库的组成结构和名词解释

数据以表格的形式出现,每行为单独的一条记录,每列为一个单独的字段,许多的记录和字段组成一

张表单 (table),若干的表单组成库 (database)

。记录(一条数据)

在数据库当中,表当中的行称之为记录

。字段 (id name ....)

在数据库当中,表当中的列称之为字段,它必须满足相应的要求。

列组成:列名字+数据类型+其他约束(非空、唯一、主键、非负数、自增长、默认值)

0

连接层

1、提供连接协议 (socket、tcp/ip)

2、验证用户的合法性 (用户名、密码、白名单)

3、提供一个专用连接线程 (接收SQL、返回结果),将SQL语句交给SQL层继续处理

0

SQL层

1、接收到SQL语句,语法判断。

2、判断语义(判断语句类型 :DML、DDL、DCL、DQL)

3、解析SQL语句,生成多种执行计划

4、优化器,选择他认为成本最低的执行计划。

5、执行器根据优化器的选择,按照优化器建议执行SQL语句,得到去哪儿找SQL语句需要访问的数据

5.1 查找在哪个数据文件上的哪个数据页中?

5.2 将以上结果推送给下层继续处理

6、接收存储引擎层的数据,结构化成表的形式,通过连接层提供的专用线程,将表数据返回给用户

7、提供查询缓存

7.1 query_cache,使用memcache 或者redis 替代

8、日志记录( binlog)

0

存储引擎层

1、接收上层的执行结果

2、根据索引取出磁盘文件和相应数据

3、返回给SQL层,结构化之后生成表格,由专用线程返回给客户端

0

0

1.MySQL数据类型

数据类型用于指定特定字段所包含数据的规则,它决定了数据保存在字段里的方式,包括分配给字段

的宽度,以及值是否可以是字母、数字、日期和时间等。任何数据或数据的组合都有对应的数据类型,用

于存储字母、数字、日期和时间、图像、二进制数据等。数据类型是数据本身的特征,其特性被设置到表

里的字段。

MySQL 常见基础数据类型:

。字符串类型 :CHAR (0-255 内的固定长度),VARCHAR(0-255 内可变长度)

。数值类型 :INT (整数型) 、FLOAT (浮点型)

。日期和时间类型 :DATE (年月日)、TIME (时分秒)

2.MySQL约束类型

约束是一种限制,它通过对表的行或列的数据做出限制,来确保表的数据的完整性、唯一性。

主键约束 primary key:

主键约束相当于唯一约束+非空约束的组合,主键约束列不允许重复,也不允许出现空值。每个表最多只允许一个主键,建立主键约束可以在列级别创建,也可以在表级别创建。当创建主键的约束时,系统默认会在所在的列和列组合上建立对应的唯一索引。

外键约束 foreign key:

外键约束是保证一个或两个表之间的参照完整性,外键是构建于一个表的两个字段或是两个表的两个字段之间的参照关系。

唯一约束 unique:

唯一约束是指定 table 的列或列组合不能重复,保证数据的唯一性。唯一约束不允许出现重复的值,但是可以为多个 null空值。同一个表可以有多个唯一约束,多个列组合的约束。在创建唯一约束时,如果不给唯一约束名称,就默认和列名相同。唯一约束不仅可以在一个表内创建,而且可以同时多表创建组合唯一约束。如姓名必须唯一,不能重名。

非空约束 not null 与默认值 default:

非空约束用于确保当前列的值不为空值,非空约束只能出现在表对象的列上。Null类型特征:所有的类型的值都可以是 null,包括 int、float 等数据类型

3.MySQL索引

索引是一个单独的、物理的数据库结构,它是某个表中一字段或若干字段值的集合。表的存储由两部分组成,一部分用来存放数据,另一部分存放索引页面。通常,索引页面相对于数据页面来说小得多。数据检索花费的大部分开销是磁盘读写,没有索引就需要从磁盘上读表的每一个数据页,如果有索引,则只需查找索引页面就可以了。所以建立合理的索引,就能加速数据的检索过程。

4.MySQL锁

数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。

加锁是实现数据库并发控制的一个非常重要的技术。当事务在对某个数据对象进行操作前,先向系统发出请求,对其加锁。加锁后事务就对该数据对象有了一定的控制,在该事务释放锁之前,其他的事务不能对此数据对象进行更新操作。

5.MySQL的存储引擎

存储引擎就是存储数据,建立索引,更新查询数据等等技术的实现方式。存储引擎是基于表的,而不

是基于库的,所以存储引擎也可被称为表类型。Oracle,Sql Server 等数据库只有一种存储引擎,MySQL

提供了插件式的存储引擎架构。所以 MySQL 存在多种存储引擎,可以根据需要使用相应引擎或者编写存

储引擎。

MYISAM:默认引擎、插入和查询速度较快,支持全文索引,不支持事务、行级锁和外键约束等功能

INNODB:支持事务、行级锁和外键约束等功能

MEMORY:工作在内存中,通过散列字段保存数据,速度快、不能永久保存数据

......

6.事务(Transaction)是并发控制的基本单位

可以把一系列要执行的操作称为事务,而事务管理就是管理这些操作要么完全执行,要么完全不执行

经典案例:银行转账工作,从一个账号扣款并使另一个账号增款,这两个操作要么都执行,要么都不

执行。所以,应该把它们看成一个事务。事务是数据库维护数据一致性的单位,在每个事务结束时,都能

保持数据一致性。

注意: mysql 中并不是所有的数据引擎都支持事务管理的,只有 innodb 支持事务管理。


MySQL安装

1.MySQL-yum/rpm安装

rpm、yum安装方便、安装速度快,无法定制

2.MySQL二进制安装

不需要安装,解压即可使用,不能定制功能

wget -O https://cdn.mysql.com/archives/mysql-5.6/mysql-5.6.40-linux-glibc2.12-x86_64.tar.gz

0

0

0

0

0

MySQL-5.6.40二进制安装:

1.解压二进制包

[rootadb01 -]# tar xf mysql-5.6.40-linux-glibc2.12-x86_64.tar.gz

2.创建安装目录

[rootadb01 ~]# mkdir /application

3.移动MySQL二进制包到安装目录并改名

[rootadb01 ~]# mv mysql-5.6.40-linux-glibc2.12-x86_64 /application/mysql-5.6.40

4.做软链接

[root@db01 -]# ln -s /application/mysql-5.6.40 /application/mysql

5.进入mysql目录

[root@db01 ~]# cd /application/mysql

6.进入脚本及配置文件目录

[root@mysql-db01mysql]# cd support-files/

7.拷贝配置文件

[root@db0l support-files]# cp my-default.cnf /etc/my.cnf

8.拷贝启动脚本

[root@db0l support-files]# cp mysql.server /etc/init.d/mysqld

9.进入初始化目录

[rootadb0l support-files]# cd /application/mysql/scripts

10.创建mysql用户

[root@mysql-db01scripts]# useradd mysql -s /sbin/nologin -M

11.进行初始化操作

[root@mysql-db01scripts]# ./mysql_install_db --user=mysql --basedir=/application/mysql --datadir=/application/mysql/data

0

//报错:缺少 libaio

包解决方法:安装 libaio 包

yum install -y libaio-devel

0

//报错:执行初始化报错缺少 perl 模块

解决方法:安装 perl 模块

yum install -y autoconf

初始化:两个OK

0

0

12.安装perl模块

[root@dbol scripts]# yum install autoconf -y

13.授权mysql权限

[rootdbol mysql]# chown -R mysql.mysql /application/mysql*

14.修改启动脚本及程序文件路径为/application

[root@db01 mysql]# sed -i 's#/usr/local#/application#g' /etc/init.d/mysqld /application/mysql/bin/mysqld_safe

15.启动mysqld

[rootadb0l mysql]# /etc/init.d/mysqld start

16.添加环境变量

[root@dbol mysql]# vim /etc/profile.d/mysql.sh

export PATH="/application/mysql/bin:$PATH"

17.加载环境变量

[root@db01 mysql]# source /etc/profile

18.测试:

0

作业:db02和db03用二进制安装!(安装数据库脚本:mysql.sh)

3.MySQL源码包安装

3.源码包编译安装

3.1 、可定制,安装慢

3.2 、四个步骤:

3.2.1 解压( tar )

3.2.2 生成( ./configure ) cmake

3.2.3 编译(make)

3.2.4 安装(make install )

3.3 、5.5版本之前 : tar ./configure make make install

3.4 、5.5版本之后:cmake gmake

下载:

0

0

4.先编译,然后定制rpm包,制作作yum仓库,然后yum安装

4.1 简单,速度快,可定制,比较复杂,制作时间极长

5.企业中选择的安装方式

5.1 中小型企业: 以上方式都可以,运维偏向编译,dba偏向二进制 运维也偏向二进制

5.2 大型企业:可以选择: 先译然后定制rpm包,制作yum仓库,然后vum安装


MySQL数据库-操作基础

1.MySQL 常见版本

MySQL Community Server 社区版本,开源免费,但不提供官方技术支持。

MySQL Enterprise Edition 企业版本,需付费,可以试用 30 天。

MySQL Cluster 集群版,开源免费。可将几个MySQL Server 封装成一个 Server。

MySQL Cluster CGE 高级集群版,需付费

2.MySQL 相关信息

服务: mysqld

端口: 3306

主配置文件: /etc/my.cnf

初始化脚本: mysql_install_db

数据目录 : /var/lib/mysql

套接字文件: /var/lb/mysql/mysql.sock

启动命令: mysqld_safe

进程文件: /var/run/mysqld/mysqld.pid


3.MySQL 实例介绍

1、数据库和实例

数据库:简单讲是数据的集合,这些数据按照一定的方式存储在一起,可以给多用户共享,与应用程序独

立开来。在MYSQL数据库中,数据库文件按照存储引擎的不同,文件后缀也不同,可以是frm、myd、

myi、ibd结尾,是一个静态概念。

实例:MySQL数据库由后台线程及一个共享内存区组成,数据库实例才是真正用于操作数据库文件的程序

集,是一个动态概念。

在MySQL中实例和数据库的关系通常是一一对应的,即一个实例对应一个数据库,但是现在越来越多

的场景使用多实例,也就是一个数据库被多个数据库实例使用的情况。

Mysql被设计成一个单进程多线程架构的数据库,所以在操作系统上表现就是一个进程。

2、MySQL多实例介绍

上节介绍了mysql进程,这种单进程实际上就是mysql的单实例,其实在生产环境中,更为通用的部署

方式是多实例部署,那什么是多实例?

多实例就是在一台服务器上同时开启多个不同的数据库服务端口(例如3306、3307),同时运行多个

MYSQL服务进程,这些服务进程通过不同的socket监听不同的服务端口来提供服务。这些MySQL实例共用

一个Mysql数据库安装程序,使用不同的my.cnf配置文件启动,在提供服务时,多实例MySQL在逻辑上

看,是各自独立的,他们根据配置文件的设定来获得服务器相应数量的资源。

3、MySQL多实例的优缺点

3.1、优点:

可以有效利用服务器资源,当单个服务器资源富裕时,可以充分利用资源提供更多的服务。

节约服务器资源,若公司资金不是充裕,又想数据库能独立提供服务,还想用主从复制等技术,那么

只能选择多实例部署方式。

3.2、缺点:

存在资源互享抢占的问题,当某个数据库实例并发很高且SQL查询耗时,那整个实例会消耗大量的系

统资源,包括CPU、磁盘IO等,导致同一个服务器的其它数据库实例可能响应慢,毕竟它不会像虚拟

机一样做到完全隔离。

4、MySQL多实例的应用场景

中小型公司的选择:公司业务访问量不大,希望不同的业务使用不同的数据库服务而互相不受影响,建于

资金不足,可食用多实例,比如可以通过3台服务器部署9-15个实例,交叉做主从复制、数据备份及读写分

离,这样也能达到多个服务器只装1个数据库的效果。

并发访问不是很大的业务:当业务访问量不大,服务器资源基本都是空闲的,这时很适合多实例应用,如

果对sql语句优化较好,多实例是一个很值得使用技术,即使并发打,合理分配资源以及搭配号服务,问题

也不大。

门户网站应用:门户网站通常会使用多实例,因为配置硬件好的服务器,可以节省IDC机柜空间,同时运行

多个实例可以减少资源浪费情况,例如一个pc服务器,16核CPU,内存128G内存,可运行3-4个实例绰绰

有余。

5、MySQL多实例的部署方案

一般目前流行的部署方案是多配置文件,多启动程序的部署方式,也就是多个my.cnf文件,启动程序

mysql都是独立的文件,数据文件也是独立的。关于更多的部署细节,后续文章会单独来讲解。

1.什么是多实例

1)多套后台进程+线程+内存结构

2)多个配置文件

a.多个端口

b.多个socket文件

c.多个日志文件

d.多个server_id

3)多套数据

2.多实例实战

配置

#创建数据目录

[root@db01 ~]# mkdir -p /data/330{7..9}

#修改目录权限

[root@db01]# chown -R mysql.mysql /data/330*

#创建配置文件

[root@db01 ~]# touch /data/330{7..9}/my.cnf

#编辑3307配置文件

[root@db01~]# vim /data/3307/my.cnf

[mysqld]

basedir=/application/mysql //数据库安装路径

datadir=/data/3307/data //第二个data为初始化时自动生成的目录

socket=/data/3307/mysql.sock //socket启动连接文件目录

log_error=/data/3307/mysql.log //错误日志

log_bin=/data/3307/mysql-bin //二进制

server_id=7

port=3307

[client]

socket=/data/3307/mysql.sock //指定客户端连接服务端socket文件的位置

#编辑3308配置文件

[root@db01~]#vim /data/3308/my.cnf

[mysqld]

basedir=/application/mysql

datadir=/data/3308/data

socket=/data/3308/mysql.sock

log_error=/data/3308/mysql.log

log_bin=/data/3308/mysql-bin

server_id=8

port=3308

[client]

socket=/data/3308/mysql.sock

#编辑3309配置文件

[root@db01 ~]# vim /data/3309/my.cnf

[mysqld]

basedir=/application/mysql

datadir=/data/3309/data

socket=/data/3309/mysql.sock

log_error=/data/3309/mysql.log

log_bin=/data/3309/mysql-bin

server_id=9

port=3309

[client]

socket=/data/3309/mysql.sock

初始化

#初始化3307数据

[root@db01 ~]# /application/mysql/scripts/mysql_install_db \

--user=mysql \ //指定用户

--defaults-file=/data/3307/my.cnf \ //指定默认配置文件的路径

--basedir=/application/mysql \ //指定程序安装路径

--datadir=/data/3307/data //数据目录

[root@db01 ~]# /application/mysql/scripts/mysql_install_db --user=mysql --defaults-file=/data/3307/my.cnf --basedir=/application/mysql --datadir=/data/3307/data

#初始化3308数据

[root@db01 ~]# /application/mysql/scripts/mysql_install_db --user=mysql --defaults-file=/data/3308/my.cnf --basedir=/application/mysql --datadir=/data/3308/data

#初始化3309数据

[root@db01 ~]# /application/mysql/scripts/mysql_install_db --user=mysql --defaults-file=/data/3309/my.cnf --basedir=/application/mysql --datadir=/data/3309/data

#初始化完成后,两个OK

0

#启动多实例

[root@db01]# mysqld_safe --defaults-file=/data/3307/my.cnf &

[root@db01]# mysqld_safe --defaults-file=/data/3308/my.cnf &

[root@db01]# mysqld_safe --defaults-file=/data/3309/my.cnf &

#查看server_id

[root@db01]# mysql -S /data/3307/mysql.sock -e "show variables like 'server_id'"

[root@db01]# mysql -S /data/3308/mysql.sock -e "show variables like 'server_id'"

[root@db01]# mysql -S /data/3309/mysql.sock -e "show variables like 'server_id'"

0

0

#添加3307密码

[root@mysql-db01~]# mysqladmin -uroot -p -S /data/3307/mysql.sock password 3307

#登录3307数据库

[root@mysql-db01~]# mysql -uroot -p3307 -S /data/3307/mysql.sock

#添加3308,3309密码,#登录3308,3309数据库

问题:3308和3309只有一个能起来,原因是/data/3307/mysql.sock文件不存在


4.MySQL 管理命令

MySQL登录及退出命令

设置密码: mysqladmin -uroot password “123456“

登录:

mysql -u用户名 -p密码 -P 端口 -S 套接字文件

-p 用户密码

-h 登陆位置 (主机名或 ip地址)

-P 端口号(3306 改了就不是了)

-S 套接字文件 (/var/lib/mysql/mysql.sock)

退出命令: exit 或 ctrl+d

#删除数据库

mysql> drop database test;

Query OK, 0 rows affected (0.01 sec)

#删除用户

mysql> drop user root@'127.0.0.1';

Query OK, 0 rows affected (0.01 sec)

#清空表里的所有内容

mysql> truncate mysql.user;

#MySQL的启动与关闭

mysql.server (sys-V方式)

mysqld_safe (临时数据库维护)

mysqld (mysqld守护进程直接启动)

0

#MySQL数据库初始化配置

0

初始化配置文件 *****

/etc/my.cnf

1.配置文件能影响到什么?

影响到了Clinet

mysql

mysqldump

xbk

mysqladmin

影响到了Server

实例启动

实例的功能运行

2.如何设置

[标签]

选项=xxxx

[clinet]

[mysql]

socket=/tmp/mysql.sock

[mysqldump]

socket=/tmp/mysql.sock

[mysqld]

basedir=

datadir=

socket=

log_error=

server id=

log_bin=

DBA规范(重点):

1.root不能给开发

2.密码复杂度

3.敏感信息隐藏:库名,表名,字段名,ip,端口,用户,密码

4.让别人解决问题

1.最好是发文字+截图

2.实在不行远程

事先连接好

3. mysql -uroot -p

enter passwd:

5.6 5.7 8.0版本的区别与不同,最好去官网自己了解

0

0


误删所有用户,解决办法1(不成熟)

1)关闭mysqld服务

[root@mysql-db01~]# /etc/init.d/mysqld stop

2) 使用此命令,跳过授权表登录到数据库,但是远端也可以登录,很危险

[root@mysql-db01~]# mysqld_safe --skip-grant-tables &

[root@mysql-db01~]# mysql

mysql>

......

#添加上此参数 --skip-networking,只能在本地登录

[root@mysql-db01~]# mysqld_safe --skip-grant-tables --skip-networking &

误删除了所有用户,解决办法2(推荐)

#关闭数据库

[root@db02 mysql-5.7.20]# /etc/init.d/mysqld stop

#启动数据库

[root@db02 mysql-5.7.20]# mysqld_safe --skip-grant-tables --skip-networking &

#使用mysql库

mysql> use mysql

#错误方法1、创建root用户

mysql> create user root@'localhost';

#错误方法2、创建root用户

mysql> insert into user(user,host,password) values('root','10.0.0.55',PASSWORD('123'));

#正确方法创建root用户

mysql> insert into mysql.user values ('localhost','root',PASSWORD('123'),

'Y',

'Y',

'Y',

'Y',

'Y',

'Y',

'Y',

'Y',

'Y',

'Y',

'Y',

'Y',

'Y',

'Y',

'Y',

'Y',

'Y',

'Y',

'Y',

'Y',

'Y',

'Y',

'Y',

'Y',

'Y',

'Y',

'Y',

'Y',

'Y',

'',

'',

'',

'',0,0,0,0,'mysql_native_password','','N');

mysql> exit

Bye

[root@mysql-db01~]# killall mysqld

[root@mysql-db01~]# /etc/init.d/mysqld start

Starting MySQL. SUCCESS!

[root@mysql-db01~]# mysql -uroot -p123

mysql> show databases;

+------------------------------+

| Database |

+------------------------------+

| information_schema |

| localhost |

| mysql |

| performance_schema |

+------------------------------+

4 rows in set (0.00 sec)

mysql>


忘记root密码

#关闭数据库

[root@db02 mysql-5.7.20]# /etc/init.d/mysqld stop

#启动数据库

[root@db02 mysql-5.7.20]# mysqld_safe --skip-grant-tables --skip-networking &

#修改root用户密码

mysql> update user set password=PASSWORD('oldboy123') where user='root' and host='localhost';

用户管理及权限管理

1)创建用户

mysql> create user oldboy@'10.0.0.%' identified by '123';

2)查看用户

mysql> select user,host from mysql.user;

3)删除用户

mysql> drop user oldboy@‘10.0.0.%’;

4)修改密码,三种方法

mysql> set password

mysql> update user set password=PASSWORD('oldboy123') where user='root' and host='localhost';

mysql> grant all privileges on *.* to oldboy@’10.0.0.%’ identified by ‘123’;

MySQL的权限定义:

作用对象:库、表

权限

INSERT, SELECT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE

归属

每次设定只能有一个属主,没有属组或其他用户的概念

grant all privileges on *.* to oldboy@'10.0.0.%' identified by '123';

权限 作用对象 归属 密码

//作用对象分解:

*.* : 当前MySQL实例中所有库下的所有表

wordpress.* : 当前MySQL实例中wordpress库中所有表(单库级别)

wordpress.user : 当前MySQL实例中wordpress库中的user表(单表级别)

#一般给开发创建用户权限

grant select,update,delete,insert on *.* to oldboy@’10.0.0.%’ identified by ‘123’;

授予的部分权限

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值