全部版块 我的主页
论坛 经济学论坛 三区 教育经济学
113 0
2025-11-26

数据库是用于存储和管理数据的系统,我们日常使用的购物平台、视频应用等所产生的信息,本质上都是以数据形式存入数据库中的。高效的数据存储与管理能力,是现代软件系统的核心组成部分。

要使用MySQL数据库,首先需要完成下载与安装。操作该数据库主要依赖SQL语言,并需掌握事务处理、索引机制、存储引擎、SQL性能优化以及锁机制等相关技术知识。此外,在运维层面还需了解日志管理、主从复制、读写分离、分库分表等高级功能。

基础篇:MySQL入门知识

本部分内容涵盖MySQL的基本概念、SQL语句的使用方法、数据库内置函数及其应用场景、数据约束规则、多表联合查询方式,以及为保障数据一致性和完整性而设计的事务机制。

关于MySQL数据库

MySQL是一种关系型数据库管理系统(RDBMS),常被简称为“数据库”。用户通过SQL语言向数据库管理系统发出指令,由系统负责对底层数据库及其中的数据进行实际操作。

当前主流的关系型数据库产品包括:Oracle、MySQL、SQL Server 和 PostgreSQL 等。

本课程聚焦于MySQL的学习。尽管不同数据库在细节上有所差异,但它们大多遵循标准SQL语法,因此掌握一种后可快速迁移到其他系统。

总结如下:

MySQL的下载与版本选择

推荐使用的版本为 MySQL 社区版 8.0.44,适用于学习和开发场景。

官方下载地址:

MySQL :: Download MySQL Installer

安装包示意图:

MySQL默认监听端口为 3306。

示例密码设置为:123456(实际环境中应使用强密码)

启动与停止MySQL服务

方法一:通过Windows服务管理器

在命令提示符中输入 services.msc,打开系统服务列表,找到名为 MySQL80 的服务项,手动启动或停止服务。

方法二:使用命令行控制

以管理员权限运行命令提示符:

启动命令:net start mysql80

停止命令:net stop mysql80

客户端连接MySQL

可通过MySQL自带的命令行客户端工具连接并操作数据库。

前提条件:确保MySQL服务已启动,输入正确密码后即可建立客户端连接。

另一种连接方式:使用Windows命令行执行以下命令:

mysql -h 127.0.0.1 -P 3306 -u root -p

此命令表示以root用户身份连接本地IP(127.0.0.1)、端口3306上的MySQL服务器,随后将提示输入密码,验证成功后进入MySQL命令行界面。

执行路径位于:

C:\Program Files\MySQL\MySQL Server 8.0\bin

为方便全局调用,建议配置环境变量:

右键“此电脑” → “属性” → “高级系统设置” → “环境变量”,在“系统变量”中找到PATH,点击“编辑” → “新建”,添加MySQL的bin目录路径:

C:\Program Files\MySQL\MySQL Server 8.0\bin

保存所有更改后即可在任意位置使用mysql命令。

操作MySQL数据库

客户端工具的作用就是让我们能够与MySQL交互,进而实现对数据库的操作。

DBMS即数据库管理系统,它是一个独立运行的软件程序,可用于创建和管理数据库实例。图中红色框内部分代表实际存储的数据内容。

关系型数据库概述

MySQL属于关系型数据库管理系统(RDBMS)。这类数据库基于关系模型构建,由多个相互关联的二维表格组成。

二维表结构示意:

各表之间可通过某一列字段与其他表建立联系,体现“关系”的特性。

主要特点包括:

除关系型数据库外,还存在非关系型数据库(NoSQL),如MongoDB、Redis等。

数据模型结构

在一个MySQL服务器实例中,可以创建多个独立的数据库;每个数据库内部又可包含多张数据表;每张表则用于存储若干条具体记录。

总结:

SQL语言基础

SQL(Structured Query Language)是操作关系型数据库的标准语言,主要包括通用语法规范和多种语句类型:DDL、DML、DQl、DCL。

SQL通用语法说明:

SQL语句分类:

DDL(Data Definition Language):数据定义语言,用于定义数据库对象,如数据库、表、索引等。

DML(Data Manipulation Language):数据操纵语言,用于增删改表中数据。

DQL(Data Query Language):数据查询语言,主要用于检索数据。

DCL(Data Control Language):数据控制语言,用于创建用户账户及管理数据库访问权限。

DDL操作:数据库管理

常见操作包括查询、创建、删除和使用数据库。

查询现有数据库列表:

创建新数据库:

若重复创建同名数据库会报错:

解决方法:使用 IF NOT EXISTS 条件判断,仅当数据库不存在时才创建,避免错误发生。

字符集建议使用 utf8mb4 而非 utf8,因为 utf8 在MySQL中最多支持3字节字符,无法完整存储某些特殊字符(如emoji),而 utf8mb4 支持4字节,兼容性更好。

删除数据库时也推荐加上 IF EXISTS 判断,防止因数据库不存在而导致删除失败。

使用某个数据库(切换当前操作上下文):

例如切换到 itcast 数据库:

查询当前正在使用的数据库:

DDL操作:表的管理

查看表相关信息:

查看当前数据库下所有表的列表:

创建数据表:

按照指定结构创建一张新表:

注意:注释内容应使用英文单引号包裹,否则可能引发语法错误。

创建完成后,可通过查看表列表验证是否成功。

查看表的具体结构(字段定义、类型、约束等):

由于注释未显示,需通过命令查看表的创建语句:

表结构信息解析:

  • 存储引擎:使用的是 InnoDB,作为 MySQL 默认的事务型存储引擎,支持事务处理、行级锁等关键特性。
  • 字符集设置:DEFAULT CHARSET=utf8mb4,适用于存储包括 emoji 在内的四字节 UTF-8 字符。
  • 排序规则:COLLATE=utf8mb4_0900_ai_ci,表示不区分大小写且忽略重音的比较方式。

数据类型分类

主要包括数值类型、字符串类型和日期时间类型三大类。

一、数值类型

整数类型:
  • tiniyint:占用 1 字节(byte),类似于 Java 中的 byte 类型,取值范围为 2^8 = 256。
  • smallint:2 字节,对应 Java 的 short,最大可表示 65536(即 2^16)。
  • mediumint:3 字节,介于 smallint 和 int 之间。
  • int / integer:4 字节,与 Java 的 int 相当。
  • bigint:8 字节,相当于 Java 的 long 类型。
浮点数类型:
  • float:单精度浮点数,占 4 字节,类似 Java 的 float。
  • double:双精度浮点数,8 字节,对应 Java 的 double。
  • decimal(M,D):用于精确表示小数。例如 decimal(5,2) 可表示如 123.45 这样的数值,其中“精度”M 表示总位数(共5位),“标度”D 表示小数部分长度(2位)。

实际应用建议:

  • 年龄字段通常不会为负数,因此推荐使用 tinyint unsigned 而非普通的 int,节省空间。
  • 成绩字段若要求保留一位小数且最高分为 100.0,则定义为 score double(4,1) 更合理,确保数据规范性。

二、字符串类型

  • char(N):定长字符串。例如 char(10),即使只存一个字符,也会占用 10 个字符的空间,其余用空格填充。
  • varchar(N):变长字符串。如 varchar(10),实际占用空间随内容变化,存储一个字符就只占一个字符位置。
  • tinyblob / tinytext:分别用于存储不超过 255 字节的二进制或短文本数据。
  • blob / text:适用于较长的二进制或文本内容。
  • mediumblob / mediumtext:中等长度的二进制或文本数据。
  • longblob / longtext:极大容量的数据类型,适合超大文本或文件内容。

性能对比:char 因长度固定,读写效率较高;而 varchar 需动态计算长度,性能略低。

使用场景建议:

  • 用户名字段长度不定,最多限制 50 字符时,应使用 varchar(50),按需分配空间。
  • 性别字段仅有“男”或“女”,建议使用 char(1),既节省空间又提升查询性能。

关于二进制数据:像视频、音频、安装包等资源虽然可通过 BLOB 类型存入数据库,但因性能开销大且管理不便,实践中多采用独立文件服务器存储,故 BLOB 使用频率较低。

三、日期时间类型

  • date:仅记录年月日,格式为 'YYYY-MM-DD'。
  • time:表示时分秒,格式为 'HH:MM:SS'。
  • year:只保存年份。
  • datetime:包含完整的年月日及时分秒,常用作常规时间记录。
  • timestamp:也记录完整时间,但其取值范围受限,最大到 2038 年(受 Unix 时间戳限制)。

示例说明:描述员工生日时,只需年月日即可,推荐使用 birthday date 类型。

建表示例

CREATE TABLE emp(
  id INT COMMENT '编号',
  workno VARCHAR(10) COMMENT '工号',     -- 变长字符串
  name VARCHAR(10) COMMENT '姓名',       -- 变长字符串
  gender CHAR(1) COMMENT '性别',         -- 定长字符串
  age TINYINT UNSIGNED COMMENT '年龄',   -- 无符号整型,1字节足够
  idcard CHAR(18) COMMENT '身份证号',     -- 固定长度字符串
  entrydate DATE COMMENT '入职时间'      -- 仅需年月日
) COMMENT '员工表';
    

查看表结构命令:

DESC emp;

表结构操作 —— 修改

常见的表结构变更包括:添加字段、修改字段属性、删除字段以及重命名表名。

1. 添加字段

ALTER TABLE emp ADD nickname VARCHAR(20) COMMENT '昵称';

2. 修改字段

包含两种操作:修改字段的数据类型,或同时修改字段名称与类型。

修改数据类型:

修改字段名及类型:

ALTER TABLE emp CHANGE nickname username VARCHAR(30) COMMENT '昵称';

3. 删除字段

ALTER TABLE emp DROP username;

4. 修改表名

将表 emp 重命名为 employee 的操作如下:

alter table emp rename to employee;

表操作:删除

在数据库管理中,删除表是常见的操作。有两种常用方式可以实现数据的清除。

删除指定表并重新创建该表 是一种彻底清空数据的方法,通常用于需要保留表结构但清空内容的场景。

使用以下语句可安全地删除一个表(如果存在):

drop table if exists tb_user;

若仅需清空表内所有数据而保留表结构,可使用:

truncate table employee;

执行上述命令后,employee 表将仅保留其结构,原有数据全部被清除。

需要注意的是,无论是使用 drop 还是 truncate,最终结果都会导致数据丢失,但两者机制不同:drop 删除整个表对象,truncate 则是高效清空数据并重置自增列等属性。

MySQL 图形化界面工具介绍

虽然可以通过命令行执行 SQL 语句,但在实际开发过程中,这种方式效率较低且不够直观。因此,开发者更倾向于使用图形化工具来提升工作效率和操作体验。

目前主流的 MySQL 图形化管理工具有:Sqlyog、Navicat 和 DataGrip。

其中,DataGrip 功能更为强大,支持多种数据库,具备智能提示、代码高亮、版本控制集成等特性,适合专业开发人员使用。

安装与配置 DataGrip

首先下载并安装 DataGrip 软件。

启动后创建新项目,例如命名为 mysql-base,然后进行数据库连接配置。

选择“添加数据源”以连接 MySQL 数据库:

在弹出的窗口中填写 MySQL 的连接信息,并自动或手动下载对应的数据库驱动程序。

配置完成后点击测试连接,若显示“连接成功”,则说明配置无误。

连接成功后,系统会列出当前 MySQL 实例中的所有数据库。

至此,MySQL 图形化环境已搭建完成,并成功连接到数据库服务。

在 DataGrip 中进行数据库与表的操作

可以在图形界面中轻松完成数据库和表的创建与维护。

创建数据库(也称为 schema):

create database test;

或者使用等效语句:

create schema test;

创建表

定义表的列(columns)结构:

如需修改表结构,可通过右键菜单选择“修改”选项进行可视化编辑。

也可以直接编写 SQL 语句对 test 数据库进行操作,而不依赖图形化功能。

选中多条 SQL 命令后,可一键执行全部语句。

DML 语句:数据操作语言

DML(Data Manipulation Language)主要用于对数据库表中的数据进行增加、删除和修改操作。

DML - 插入数据

使用 insert 语句向表中添加记录。

注意事项

示例一:插入指定字段的数据

insert into employee(id, workno, name, gender, age, idcard, entrydate) values (1,'1','Itcast','男',10,'123456789012345678','2000-01-01');

查看表中数据的方式有两种:

  • 双击 employee 表直接浏览内容
  • 使用查询语句:select * from employee;

尝试插入一条非法数据(age 为负数),由于 age 字段定义为 unsigned,将触发错误:

insert into employee(id, workno, name, gender, age, idcard, entrydate) values (1,'1','Itcast2','男',-1,'123456789012345678','2000-01-01'); # 报错,age不能为负

示例二:插入全部字段的数据(不指定字段名时,必须按表结构顺序提供所有值)

insert into employee values (2,'2','张无忌','男',18,'123456789012345670','2005-01-01');

批量插入多条记录

insert into employee values 
(3,'3','韦一笑','男',38,'123456782312345670','2005-01-01'),
(4,'4','赵敏','女',18,'123456712312345670','2005-01-01');

DML - 修改数据

使用 update 语句更新已有记录。

注意事项

案例一:将 id 为 1 的员工姓名改为 itheima

update employee set name = 'itheima' where id = 1;

案例二:同时修改多个字段,如将 id 为 1 的员工姓名改为“小昭”,性别改为“女”

update employee set name = '小昭', gender = '女' where id = 1;

案例三:更新所有员工的入职日期

update employee set entrydate = '2008-01-01';

DML - 删除数据

使用 delete 语句从表中移除数据。

注意事项

案例一:删除性别为女的员工记录

delete from employee where gender = '女';

案例二:删除表中所有数据

delete from employee;

DML 语句小结

通过 insert、update 和 delete 操作,我们可以灵活地管理数据库中的数据内容,完成基本的增删改功能。

DQL 语句:数据查询语言

DQL(Data Query Language)用于查询数据库表中的记录,核心关键字为 select,是数据分析和应用开发中最常用的 SQL 类型之一。

在日常开发过程中,数据查询的操作频率远高于插入、更新和删除操作。当用户访问官方网站时,系统通常会从数据库中提取所需信息,并将其展示在前端页面上。

DQL语法结构

主要包括:基本查询、条件查询、聚合函数应用、分组查询、排序查询以及分页查询等功能模块。

基本查询语句(DQL)

以下是一个关于员工信息表的构建与数据操作示例:

案例实现步骤

首先进行表结构的清理与重建:

# 删除employee表
drop table if exists employee;

# 创建emp表
create table emp(
  id int comment '编号',
  workno varchar(10) comment '工号',          -- 变长字符串
  name varchar(10) comment '姓名',            -- 变长字符串
  gender char(1) comment '性别',              -- 定长字符串
  age tinyint unsigned comment '年龄',         -- 无符号整型,占用1字节
  idcard char(18) comment '身份证号',         -- 定长字符串
  workaddress varchar(50) comment '工作地址',  -- 变长字符串
  entrydate date comment '入职时间'           -- 仅需年月日格式
) comment '员工表';

向表中插入测试数据:

insert into emp (id, workno, name, gender, age, idcard, workaddress, entrydate)
values
(1, '1', '柳岩', '女', 20, '123456789012345678', '北京', '2008-01-01'),
(2, '2', '张无忌', '男', 18, '123456789012345670', '北京', '2005-09-01'),
(3, '3', '韦一笑', '男', 38, '12345678912345670', '北京', '2005-08-01'),
(4, '4', '赵敏', '女', 18, '12345675712345670', '上海', '2009-08-01'),
(5, '5', '小昭', '女', 16, '123456759012345678', '上海', '2007-07-01'),
(6, '6', '杨逍', '男', 28, '12345678931234567X', '北京', '2006-01-01'),
(7, '7', '范瑶', '男', 40, '123456789212345670', '北京', '2005-05-01'),
(8, '8', '黛绮丝', '女', 38, '12345615712345670', '天津', '2015-05-01'),
(9, '9', '范凉凉', '女', 45, '123156789012345678', '北京', '2010-04-01'),
(10, '10', '陈友谅', '男', 53, '123456789012345670', '上海', '2011-01-01'),
(11, '11', '张士诚', '男', 55, '12356789512345670', '江苏', '2015-05-01'),
(12, '12', '常遇春', '男', 32, '12344675712345670', '北京', '2004-02-01'),
(13, '13', '张三丰', '男', 88, '123656789012345678', '江苏', '2020-11-01'),
(14, '14', '灭绝', '女', 65, '123456719012345670', '西安', '2019-05-01'),
(15, '15', '胡青牛', '男', 70, '12345674971234567X', '西安', '2018-04-01'),
(16, '16', '周芷若', '女', 18, null, '北京', '2012-06-01');

字段查询操作示例

查询指定列:name、workno 和 age 字段的信息。

select emp.name, emp.workno, emp.age from emp;
-- 或者简写为:
select name, workno, age from emp;

查询所有字段内容:

select id, workno, name, gender, age, idcard, workaddress, entrydate from emp;
-- 或使用通配符 *(不推荐)
select * from emp;

建议避免使用星号(*),因为明确列出字段更有利于代码可读性,并能清晰表达出当前查询涉及的具体列。

对查询结果中的字段设置别名,例如将工作地址字段显示为“工作地址”:

select workaddress as '工作地址' from emp;
-- 或者
select workaddress '工作地址' from emp;

查询公司员工的工作地址信息,获取所有上班地点记录:

select workaddress '工作地址' from emp;

若需去除重复项,仅查看不重复的上班地址,可使用 distinct 关键字:

select distinct workaddress from emp;

DQL语句 - 聚合函数应用

聚合函数用于对某一列数据进行纵向计算,将其视为一个整体进行统计分析。

统计企业中员工的总人数:

select count(*) from emp;

该查询返回结果为15,表示共有15条员工记录(注意:count(*) 不统计 null 值)。

若只统计身份证号非空的员工数量,则使用:

select count(idcard) from emp;

计算员工的平均年龄:

select avg(age) from emp;

查找员工中的最大年龄值:

select max(age) from emp;

查找员工中的最小年龄值:

select min(age) from emp;

统计工作地在西安的所有员工年龄总和:

select sum(age) from emp where workaddress = '西安';

DQL语句 - 分组查询操作

按照性别对员工进行分组,并统计每组的人数:

select gender, count(*) from emp group by gender;

按性别分组后,计算男、女员工各自的平均年龄:

select gender, avg(age) from emp group by gender;

筛选年龄小于45岁的员工,再根据工作地址进行分组,并进一步过滤出员工数量不少于3人的工作地:

第一步:先进行分组统计

select workaddress, count(*) from emp where age < 45 group by workaddress;

第二步:添加分组后的条件过滤

select workaddress, count(*) from emp where age < 45 group by workaddress having count(*) >= 3;

此语句也可结合别名优化可读性。

DQL语句 - 条件查询语法

条件查询通过 where 子句实现,用于筛选满足特定条件的记录。

常见比较与逻辑条件如下:

查询年龄等于88岁的员工信息:

select * from emp where age = 88;

查找年龄小于20岁的员工全部信息:

select * from emp where age < 20;

获取年龄小于或等于20岁的员工数据:

select * from emp where age <= 20;

查询没有填写身份证号码的员工信息(即 idcard 字段为空):

select * from emp where idcard IS NULL;

相反地,查询已填写身份证号的员工信息:

select * from emp where idcard IS NOT NULL;

查找年龄不等于88岁的员工记录:

select * from emp where age != 88;

查询年龄在15到20岁之间(含边界)的员工信息,可通过两种方式实现:

select * from emp where age BETWEEN 15 AND 20;
select * from emp where age >= 15 AND age <= 20;

查询性别为女性且年龄低于25岁的员工信息:

select * from emp where gender = '女' AND age < 25;

查找年龄为18岁、20岁或40岁的员工信息,可用 OR 连接多个条件,也可使用 IN 简化表达:

select * from emp where age = 18 OR age = 20 OR age = 40;
select * from emp where age in (18, 20, 40);

查询姓名恰好为两个字符长度的员工信息。利用 LIKE 配合通配符 "_" 表示单个字符:

select * from emp where name like '__';

查找身份证号最后一位是 'X' 的员工信息,可以使用模糊匹配:

select * from emp where idcard like '%X';

或者通过固定长度匹配(假设身份证号共18位),前17位任意,第18位为X:

select * from emp where idcard like '_________________X'; 

从员工表中筛选年龄小于45岁的记录,按工作地址进行分组,并统计每个工作地的员工数量,仅保留人数大于等于3的地址信息:

select workaddress, count(*) as address_count from emp where age < 45 group by workaddress having address_count >= 3;

在执行分组查询时,若使用gender作为分组字段,配合count(*)聚合函数进行统计,则name字段在此类语句中不具备实际意义:

select name, gender, count(*) from emp group by gender;

DQL语句 - 排序查询

数据库支持对查询结果进行排序操作,可通过ORDER BY子句实现升序或降序排列。

系统允许基于多个字段进行排序,优先级由字段在语句中的顺序决定。

对员工按照年龄进行升序排序(默认为升序,ASC可省略):

select * from emp order by age asc;

根据入职时间对员工进行降序排序:

select * from emp order by entrydate desc;

先按年龄升序排列,若年龄相同,则按照入职时间降序排序:

select * from emp order by age asc, entrydate desc;

DQL语句 - 分页查询

在处理大量数据时,常使用LIMIT关键字实现分页功能,控制每页显示的数据条数。

查询第一页数据,每页展示10条记录:

select * from emp limit 0, 10;

或者简写为:

select * from emp limit 10;

查询第二页数据,每页仍为10条:

select * from emp limit 10, 10;

DQL语句 - 实际案例

查找年龄为20、21、22或23岁且性别为女性的员工信息。可使用OR连接多个条件,也可用IN简化表达:

select * from emp where age = 20 or age = 21 or age = 22 or age = 23 and gender = '女';
select * from emp where age in (20, 21, 22, 23) and gender = '女';

查询性别为男性、年龄在20至40岁之间(含边界),且姓名为三个字符长度的员工:

select * from emp where gender = '男' and age between 20 and 40 and name like '___';

建议将范围条件用括号包裹以增强逻辑清晰度:

select * from emp where gender = '男' and (age between 20 and 40) and name like '___';

统计年龄低于60岁的员工中,分别有多少名男性和女性:

select gender, count(*) from emp where age < 60 group by gender;

查询所有年龄不超过35岁的员工姓名与年龄,并按年龄升序排序;当年龄相同时,按入职时间倒序排列:

select name, age from emp where age <= 35 order by age asc, entrydate desc;

获取性别为男、年龄在20到40岁之间的前五位员工信息,排序规则为:先按年龄升序,再按入职时间升序:

select * from emp where gender = '男' and age between 20 and 40 order by age asc, entrydate asc limit 0, 5;

DQL语句 - 执行顺序解析

理解SQL语句的执行流程有助于编写正确的查询逻辑。例如以下语句用于查询年龄大于15岁的员工姓名和年龄,并按年龄升序输出:

select name, age from emp where age > 15 order by age asc;

执行过程如下:首先加载表数据(FROM),然后应用筛选条件(WHERE),接着选取指定字段(SELECT),最后执行排序(ORDER BY)。

select name, age from emp e where e.age > 15 order by age asc;
select e.name, e.age from emp e where e.age > 15 order by age asc;

注意:不能在WHERE子句中使用SELECT中定义的别名,因为WHERE执行早于SELECT。如下写法是错误的:

select e.name, e.age eage from emp e where eage > 15 order by age asc;

正确顺序应为:FROM → WHERE → SELECT → ORDER BY。

DCL语句-权限控制

通过以下命令可以查看指定用户的权限信息:

# 查询权限
show grants for 'heima'@'%';

若需要赋予用户特定访问权限,可使用grant命令进行授权。例如,授予用户heima对itcast数据库中所有表的全部操作权限:

# 授予权限
grant all on itcast.* to 'heima'@'%';

再次查询权限,确认授权是否生效:

# 查询权限
show grants for 'heima'@'%';

如需回收已分配的权限,可通过revoke命令撤销对应权限:

# 撤销权限
revoke all on itcast.* from 'heima'@'%';

DQL语句-小结

SQL查询语句(DQL)的执行顺序并非按照书写顺序进行,而是遵循特定逻辑流程。以如下语句为例:

select e.name, e.age eage from emp e where e.age > 15 order by eage asc;

其实际执行步骤为:首先加载from子句中的表数据,接着根据where条件过滤记录,然后执行select选择字段,最后按orderby进行排序。

DCL语句

数据控制语言(DCL)主要用于管理数据库用户及控制数据库访问权限,确保数据的安全性和访问可控性。

DCL语句-管理用户

在MySQL中,Host表示允许登录的主机地址,User代表用户名。例如:

# 创建用户itcast,仅允许在本地主机localhost登录,密码为123456
create user 'itcast'@'localhost' identified by '123456';

虽然该用户可以使用命令行连接MySQL服务,但初始状态下并无操作权限。

此时用户只能看到系统自带的少量数据库,原因在于仅创建了账户而未分配任何权限。

另一种情况是创建可在任意主机访问的用户:

# 创建用户heima,允许从任意远程主机连接,密码为123456
create user 'heima'@'%' identified by '123456';

后续可根据需求修改用户密码或删除用户:

# 修改用户heima的密码为1234
alter user 'heima'@'%' identified with mysql_native_password by '1234';

# 删除用户itcast@localhost
drop user 'itcast'@'localhost';

DCL语句-小结

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群