Mysql账户管理以及DDT语言

前言

本章讲解的是Mysql基础的管理以及其他的一些常识。

账户管理

账户管理是MySQL用户管理最基本的内容。包括登录,退出MySQL服务器、创建用户、删除用户、密码管理和权限管理等内容。
1.新建普通用户

  • 使用create user语句来创建新的用户;
  • 直接在mysql.user表中insert 用户;
  • 使用grant 语句来新建用户;

1)使用CREATE USER语句创建用户,必须要拥有CREATE USER权限。其格式如下:

CREATE USER user[IDENTIFIED BY [PASSWORD] 'password'],
[user[IDENTIFIED BY [PASSWORD] 'password']]...

其中,user参数表示新建用户的账户,user由用户名(User)和主机名(Host)构成;IDENTIFIED BY关键字用来设置用户的密码;password参数表示用户的密码;如果密码是一个普通的字符串,就不需要使用PASSWORD关键字。可以没有初始密码。

例:

CREATE USER 'admin'@'%' IDENTIFIED BY 'admin'

执行之后user表会增加一行记录,但权限暂时全部为’N’。

2)用INSERT语句新建普通用户
可以使用INSERT语句直接将用户的信息添加到mysql.user表。但必须拥有mysql.user表的INSERT权限。

INSERT INTO mysql.user(Host,User,Password,ssl_cipher,x509_issuer,x509_subject) VALUES('%','newuser1',PASSWORD('123456'),'','','')

执行INSERT之后,需要使用一下命令来刷新权限:

FLUSH PRIVILEGES

3)用GRANT语句来新建普通用户
用GRANT来创建新的用户时,能够在创建用户时为用户授权。但需要拥有GRANT权限。

扫描二维码关注公众号,回复: 11933408 查看本文章
GRANT priv_type ON database.table

TO user[IDENTIFIED BY [PASSWORD] 'password']

[,user [IDENTIFIED BY [PASSWORD] 'password']...]

2删除普通用户
1)DROP USER语句删除普通用户
需要拥有DROP USER权限

DROP USER user[,user]...

user是需要删除的用户,由用户名(User)和主机名(Host)构成。

DROP USER 'newuser1'@'%'

2)DELETE语句删除普通用户
可以使用DELETE语句直接将用户的信息从mysql.user表中删除。但必须拥有对mysql.user表的DELETE权限。

DELETE FROM mysql.user WHERE Host = '%' AND User = 'admin'

删除完成后,一样要FLUSH PRIVILEGES才生效。

3.忘记密码解决方式
如果root用户密码丢失了,会给用户造成很大的麻烦。但是,可以通过某种特殊方法登录到root用户下,然后修改密码。
登录root用户,并且设置新密码
mysql -u root
必须使用UPDATE语句更新mysql数据库下的user表,而不能使用SET语句,因为–skip-grant-tables不能使用SET语句。
修改完密码以后,FLUSH PRIVILEGES语句加载权限表,新密码即生效。

常用引擎

在MySQL中,不需要在整个服务器中使用同一种存储引擎,针对具体的要求,可以对每一个表使用不同的存储引擎。Support列的值表示某种引擎是否能使用:YES表示可以使用、NO表示不能使用、DEFAULT表示该引擎为当前默认的存储引擎 。下面来看一下其中几种常用的引擎。

  1. InnoDB存储引擎:InnoDB是事务型数据库的首选引擎,支持事务安全表(ACID),支持行锁定和外键,上图也看到了,InnoDB是默认的MySQL引擎。
  2. MyISAM存储引擎:MyISAM基于ISAM存储引擎,并对其进行扩展。它是在Web、数据仓储和其他应用环境下最常使用的存储引擎之一。MyISAM拥有较高的插入、查询速度,但不支持事物。
  3. MEMORY存储引擎:MEMORY存储引擎将表中的数据存储到内存中,未查询和引用其他表数据提供快速访问。

不同的存储引擎都有各自的特点,以适应不同的需求,如图所示:
在这里插入图片描述

常见约束

分类:六大约束
1.NOT NULL :非空,用于保证该字段的值不能为空。例如学生表的学生姓名及学号等等。

2.DEFAULT:默认值,用于保证该字段有默认值。例如学生表的学生性别

3.PRIMARY KEY:主键,用于保证该字段的值具有唯一性并且非空。例如学生表的学生学号等。

4.UNIQUE:唯一,用于保证该字段的值具有唯一性,可以为空。例如注册用户的手机号,身份证号等。

5.CHECK:检查约束(MySql不支持),检查字段的值是否为指定的值。

6.FOREIGN KEY:外键,用于限制两个表的关系,用于保证该字段的值必须来自于主表的关联列的值,在从表添加外键约束,用于引用主表中某些的值。
添加列级约束 :

create table if not exists t_stuinfo(
2     id int primary key, 
3     stuName varchar(20) not null, 
4     gender char(1) check(gender='男' or gender='女'), 
5     seat int unique, 
6     age int default 18, 
7     majorId int references major(id)
8     );

添加表级约束:

create table if not exists t_stuinfo(
 2     id int,
 3     stuName varchar(20),
 4     gender char(1),
 5     seat int,
 6     age int,
 7     majorId int,
 8     constraint pk primary key(id), 
 9     constraint uq unique(seat), 
10     constraint ck check(gender='男' or gender='女'),  
11     constraint fk_stuinfo_major foreign key(majorId) references major(id)  
12     );
表的管理

创建表语句:

CREATE TABLE employee(

             eid INT,

             ename VARCHAR(20),

             gender CHAR(2),

             birthday DATE,

             email VARCHAR(20),

             remark VARCHAR(50)

           );

查看表结构:

desc employee;

删除表:

 drop table Employee;

修改多个字段:

UPDATE USER SET birthday='2018-08-30',score=99 WHERE sid=2;
思维导图

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_45432593/article/details/106743442
ddt
今日推荐