【Linux】MySQL数据库的使用

【Linux】MySQL数据库的使用

  • 一、访问MySQL数据库
  • 二、创建及删除库和表
    • 1、创建新的库
    • 2、创建新的表
    • 3、删除一个数据表
    • 4、删除一个数据库
  • 三、管理表中的数据记录
    • 1、插入数据记录
    • 2、查询数据记录
    • 3、修改数据记录
    • 4、删除数据记录
  • 四、数据库用户授权
    • 1、授予权限
    • 2、查看权限
    • 3、撤销权限

linux中部署MySQL详见我的上一篇博文:
Ubuntu22部署MySQL5.7详细教程

本篇文章将介绍在Ubuntu中如何使用MySQL数据库。

一、访问MySQL数据库

首先使用root用户登录MySQL

mysql -u root -p

验证成功以后将会进入提示符为‘mysql>”的数据库操作环境,用户可以输入各种操作语句对数据库进行管理。
在这里插入图片描述
每条MySQL操作语句以分号 ‘;’ 表示结束,输入时可以不区分大小写

status;表示查看当前数据库服务的基本信息。

status;

在这里插入图片描述

show databases;表示用于查看当前MySQL服务器中包含的库。

show databases;

经初始化后的MySQL服务器,默认建立了四个库:test.mysql.information_schema和performance_schema(其中mysql库是mysql正常运行所需的库,其中包含了用户认证相关的表)。
在这里插入图片描述
使用Navicat远程连接数据库可以看到这四个库
在这里插入图片描述
show tables;用于查看当前所在的库中包含的表。 在操作之前,需要先使用USE语句切换到所使用的库,例如,执行以下操作可以显示mysql库中包含的所有表。

use mysql;
show tables;

在这里插入图片描述
describe用于显示表的结构,即组成表的各字段(列)的信息。需要指定“库名.表名” 作为参数;若只指定表名参数,则需先通过USE语句切换到目标库。 例如,执行以下操作可以查看mysql库中的user表的结构。与直接执行“DESCRIBE mysql.user;’”语句的效果相同。

use mysql;
describe user;

在这里插入图片描述
在“mysql>”操作环境中,执行 “exit”或“quit”命令 可以退出mysql命令工具,返回原来的Shell环境。

二、创建及删除库和表

1、创建新的库

CREATE DATABASE语句:用于创建一个新的库,需指定数据库名称作为参数。 例如,执行以下操作可以创建一个名为auth的库。

create database auth;

在这里插入图片描述
刚创建的数据库是空的,其中不包含任何表,在数据库存放目录下会自动生成一个与新建的库名相同的文件夹。

使用以下命令可以查看数据库存放目录。

SHOW VARIABLES LIKE 'datadir';

在这里插入图片描述
可见在数据库存放目录下新增了一个auth文件夹。
在这里插入图片描述

2、创建新的表

CREATE TABLE 语句:用于在当前库中创建新的表,需指定数据表名称作为参数,并定义该表格所使用的各字段,基本格式如下所示。

CREATE TABLE 表名 (字段1名称 类型, 字段2名称 类型, ..., PRIMARY KEY (主键名))

创建表之前,应先明确数据表格的结构、各字段的名称和类型等信息,例如,若要创建一个包含用户名、密码字串的用户验证表,应先分析表格结构。

用户验证表内容

用户名密码字串
zhangsan123456
lisi654321

上述表格中,“用户名”为不超过16字节的字符串,不能为空;“密码字串”为不超过48个字符的字符串(插入记录时使用MySQL的函数加密)。默认值为空字串。考虑到字符集兼容性,最好不要使用中文字段名,改用user_name,user_passwd分别表示用户名、密码字串,表格中不能拥有同名的用户。因此可将 user_name作为主键。

针对上述分析结果,可以在auth库中按如下操作创建users表,其中,字段定义部分的DEFAULT 语句用于设置默认的密码字串,PRIMARY语句用于设置主键字段名。

USE auth;
CREATE TABLE users (user_name CHAR(16) NOT NULL, user_passwd CHAR(48) DEFAULT '', PRIMARY KEY (user_name));

在这里插入图片描述
在Navicat中刷新连接可以看到新增的auth库和users表。
在这里插入图片描述

3、删除一个数据表

DROP TABLE语句:用于删除库中的表,需要指定“库名.表名”作为参数;若只指定表名参数, 则需先通过执行“USE”语句切换到目标库。

例如,执行以下操作可以删除auth库中的users表。

DROP TABLE auth.users;

4、删除一个数据库

DROP DATABASE语句:用于删除指定的库,需要指定库名作为参数。

例如,执行以下操作可以删除名为auth的库。

DROP DATABASE auth;

三、管理表中的数据记录

1、插入数据记录

INSERT INTO语句:用于向表中插入新的数据记录,语句格式如下所示。

INSERT INTO 表名(字段1, 字段2, ...) VALUES(字段1的值, 字段2的值, ...)

执行以下操作将会向 auth 库中的 users表插入一条记录:用户名为“zhangsan”,对应的密码为 “123456”,需注意的是,VALUES部分的值应与前面指定的各字段逐一对应。

USE auth;
INSERT INTO users(user_name, user_passwd) VALUES('zhangsan', PASSWORD('123456'));

在这里插入图片描述

在插入新的数据记录时,如果这条记录完整包括表中所有字段的值,则插入语句中指定字段的 部分可以省略。例如,执行以下操作也可以向auth库中的user表插入一条新的记录:用户名为“lisi” 对应的密码为“654321”。

INSERT INTO users VALUES('lisi', PASSWORD('654321'));

在这里插入图片描述

2、查询数据记录

SELECT语句:用于从指定的表中查找符合条件的数据记录。 MySQL数据库支持标准的SQL查询语句,语句格式如下所示。

SELECT 字段名1, 字段名2, ... FROM 表名 WHERE 条件表达式

表示所有字段时,可以使用通配符“*”,若要显示所有的数据记录,则可以省略WHERE条件子句。 例如,执行以下操作可以查看auth库中users表内的所有数据记录,其中由于密码字串已加密,因此不会直接显示出实际的密码内容。

SELECT * FROM auth.users;

在这里插入图片描述
当需要根据特定的条件查找记录时,WHERE条件子句是必不可少的。 例如,若要查找users表 中用户名为“zhangsan”的记录,显示其中用户名,密码字段的信息,可以执行以下操作。

SELECT user_name, user_passwd FROM auth.users WHERE user_name = 'zhangsan';

在这里插入图片描述

3、修改数据记录

UPDATE语句:用于修改、更新表中的数据记录,语句格式如下所示。

UPDATE 表名 SET 字段名1=字段值1[字段名2=字段值2] WHERE 条件表达式

执行以下操作可以修改users表中用户名为“lisi”的记录,将密码字串设为空值,验证记录内容。可以发现 lisi 用户的密码串值已变为空白。

UPDATE auth.users SET user_passwd=PASSWORD('') WHERE user_name='lisi';
SELECT * FROM auth.users;

在这里插入图片描述
在MySQL数据库服务器中,用于访问数据库的各种用户(如root)信息都保存在mysql库的user表中,熟练的管理员可以直接修改其中的数据记录。例如,以下操作可以将数据库用户root的密码设为“123457”,当再次使用“mysql-u root-p”访问MySQL数据库服务器时,必须使用此密码进行验证。FLUSH PRIVILEGES;用于刷新用户授权信息。

UPDATE mysql.user SET password=PASSWORD('1234567') WHERE user='root';
FLUSH PRIVILEGES;

若是在 Linux 命令行环境中执行,还可以使用mysqladmin 工具来设置密码,命令格式为 “mysqladmin-u root-p“旧密码password“新密码“。例如,执行以下操作可将数据库用户root 的密码设置为“123456”。

mysqladmin -u root -p '1234567' password '123456'

4、删除数据记录

DELETE语句:用于删除表中指定的数据记录。语句格式如下所示。

DELETE FROM 表名 WHERE 条件表达式

执行以下操作可以删除users表中用户名为“lisi”的数据记录,验证记录内容可以发现,lisi用户的数据记录已经消失。

DELETE FROM auth.users WHERE user_name='lisi';
SELECT * FROM auth.users;

在这里插入图片描述
在MySQL数据库服务器中,默认添加了从本机访问数据库的来宾用户(user、password均为空)。基于数据库安全性考虑,应该删除这些来宾用户。

执行以下操作显示user字段为空的用户记录,并用DELETE 语句进行该用户记录的删除。

SELECT user,host FROM mysql.user WHERE user='';
DELECT FROM mysql.user WHERE user='';

四、数据库用户授权

1、授予权限

GRANT语句:专门用来设置数据库用户的访问权限。当指定的用户名不存在时,GRANT语句将会创建新的用户,否则,GRANT语句用于修改用户信息,语句格式如下所示。

GRANT 权限列表 ON 库名.表名 TO 用户名@来源地址 [IDENTIFIRF BY '密码']
  • 权限列表用于列出授权使用的各种数据库操作,以逗号进行分隔,如“select,insert,update"。使用 “all”表示所有权限 ,可授权执行任何操作。
  • 库名.表名:用于指定授权操作的库和表的名称,其中可以使用通配符 “*” 。例如,使用 “auth.*” 表示授权操作的对象为auth库中的所有表。
  • 用户名@来源地址用于指定用户名称和允许访问的客户机地址,即谁能连接、能从哪里连接。 来源地址可以是域名,IP地址,还可以使用“%”通配符,表示某个区域或网段内的所有地址,如“%.bdqn.com”,“192.168.1.%”等。
  • DENTIFEDBY用于设置用户连接数据库时所使用的密码字符串。 在新建用户时,若省略 “IDENTIFEDBY”部分,则用户的密码将为空。

执行以下操作可以添加一个名为“xiaoqi”的数据库用户,并允许其从本机访问,对auth库中的所有表具有查询权限,验证密码为“123456”。使用GRANT语句授权的用户记录,会保存到mysql 库的user、db、tables_priv等相关表中,无须刷新即可生效。

GRANT select ON auth.* TO 'xiaoqi'@'localhost' IDENTIFIED BY '123456';

在这里插入图片描述
切换到其他Shell终端,以用户xiaoqi的身份连接数据库,当执行授权的数据库操作时将被允许, 而执行非授权的数据库操作时将被拒绝。例如,允许用户xiaoqi 查询auth 库中 users表的数据记录, 但禁止查询其他库中的表的记录。

用户xiaoqi登录数据库

mysql -u xiaoqi -p

在这里插入图片描述

验证授权的访问操作

SELECT * FROM auth.users;

在这里插入图片描述

验证非授权的访问操作

SELECT * FROM mysql.user;

在这里插入图片描述

在企业服务器的应用中,数据库与网站服务器有时候是相互独立的。因此在MySQL服务器中,应根据实际情况创建新的用户授权,允许授权用户从网站服务器访问数据库。通常的做法是,创建一个或几个网站专用的库,并授予所有权限,限制访问的来源IP地址。

例如,执行以下操作可以新建bdqn库,并授权从IP地址为192.168.4.19的主机连接,用户名为“dbuser”,密码为“pwd@123”。允许在bdqn库中执行所有操作。

CREATE DATABASE bdqn;
GRANT all ON bdqn.* TO 'dbuser'@'192.168.4.19' IDENTIFIED BY 'pwd@123';

在这里插入图片描述

2、查看权限

SHOW GRANTS语句:专门用来查看数据库用户的授权信息,通过FOR子句可指定查看的用户对象(必须与授权时使用的对象名称一致)语句格式如下所示。

SHOW GRANTS FOR 用户名@来源地址

执行以下操作可以查看用户dbuser从主机192.168.4.19访问数据库时的授权信息。其中USAGE权限对应的授权记录中包含了用户的连接密码字串。

SHOW GRANTS FOR 'dbuser'@'192.168.4.19';

在这里插入图片描述

3、撤销权限

REVOKE语句:用于撤销指定用户的数据库权限,撤销权限后的用户仍然可以连接到MySQL服务器,但将被禁止执行对应的数据库操作。 语句格式如下所示。

REVOKE 权限列表 ON 数据库名.表名 FROM 用户名@来源地址

执行以下操作可以撤销用户xiaoqi从本机访问数据库auth的所有权限。

REVOKE all ON auth.* FROM 'xiaoqi'@'localhost';
SHOW GRANTS FOR 'xiaoqi'@'localhost';

在这里插入图片描述

参考资料:
Linux——MySQL数据库的使用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/695519.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《图解HTTP》笔记1:http的诞生

1,http的诞生: 1.1 为共享知识而生 我们现在使用web(World Wide Web的简称,即万维网)浏览器,目前可以输入一个网址(http://www.baidu.com),就会有一个网页显示出来。 最开始设想出…

jenkins远程触发构建报:Error 403 No valid crumb was included in the request

最近在跨jenkins触发构建的时候发现不能触发相应的项目,报如下图错误 解决方案: 1、安装Build Authorization Token Root Plugin插件 安装完成后去配置API Token,用户列表,配置用户的API Token,生成后记得保存 2、项…

YOLOv9来啦!YOLO目标检测全新工作!性能表现SOTA!在各个方面都大大超过了RT-DETR、YOLOv8等

摘要 今天的深度学习方法侧重于如何设计最合适的目标函数,使模型的预测结果最接近实际情况。同时,必须设计一种适当的架构,该架构可以促进获取足够的信息用于预测。现有的方法忽略了一个事实,即当输入数据经过逐层特征提取和空间…

【Linux】再谈进程地址空间

目录 一、引入 二、物理内存和外设空间的交互 三、解决页表过大问题 一、引入 我们在往期的博客中有讲解过进程地址空间:【Linux】进程地址空间 但是在上述博客中我们只是对进程地址空间的左边部分详细进行了讲解,下面我们就来谈谈右边的部分&#…

第3.6章:StarRocks数据导入——DataX StarRocksWriter

一、Datax 1.1 DataX 3.0概述 DataX3.0是一个异构数据源离线同步工具,可以方便的对各种异构数据源进行高效的数据同步。 其github地址为: https://github.com/alibaba/DataX/blob/master/introduction.mdhttps://github.com/alibaba/DataX/blob/mast…

盘点那些世界名校计算机专业采用的教材

清华、北大、MIT、CMU、斯坦福的学霸们在新学期里要学什么?今天我们来盘点一下那些世界名校计算机专业采用的教材。 书单目录 1.《深入理解计算机系统》(原书第3版)2. 《算法导论》(原书第3版)3. 《计算机程序的构造和…

el-table增加/编辑打开el-dialog内嵌套el-form,解决编辑重置表单不成功等问题

需求:在做表格的增删改查,其中新增和编辑弹窗都是同一个弹窗,之后有个重置按钮,需要用户输入的时候可以重置清空等。本文章解决如下问题 1.就是在编辑数据回填后点击重置表单没有清空也没有报错 2.解决清空表单和表格数据相互影响…

C-MAPSS涡扇发动机仿真数据(PHM2008)

数据集介绍 在开始介绍数据集之前,先帮大家理清一下涡扇发动机的数据(NASA提供,本文中称为数据集A)和PHM2008竞赛数据(本文称为数据集B)的关系。之所以将数据集A和数据集B放在一篇文章中,是因为…

【论文解读】transformer小目标检测综述

目录 一、简要介绍 二、研究背景 三、用于小目标检测的transformer 3.1 Object Representation 3.2 Fast Attention for High-Resolution or Multi-Scale Feature Maps 3.3 Fully Transformer-Based Detectors 3.4 Architecture and Block Modifications 3.6 Improved …

MT8788|MTK8788安卓核心板参数_4G联发科MTK模块

MT8788核心板是一款功能强大的4G全网通安卓智能模块。该模块采用了联发科AIOT芯片平台,具有长达8年的生命周期。MT8788模块内置了12nm制程的八核处理器,包括4个Cortex A73和4个Coretex A53,主频最高可达2.0GHZ。标配内存为4GB64GB&#xff0c…

01 Linux简介

Linux背景 发展史 linux从哪来的?怎么发展的?得从UNIX说起 1968年,一些来自通用电气公司、贝尔实验室和麻省理工学院的研究人员开发了一个名叫Multics的特殊操作系统。Multics在多任务文件管理和用户连接中综合了许多新概念1969-1970年&am…

智能运维服务指的是哪些?智能运维阶段有哪些

智能运维服务通常包含哪些关键组成部分?它们在IT管理中的作用和重要性?智能运维的发展可以分为哪些主要阶段?每个阶段的核心技术或实践有哪些,它们是如何推动运维工作向更高水平的自动化和智能化发展的? 智能运维服务…

Linux离线安装插件

当公司Linux环境无外网情况下,需要先下载好离线安装包,然后上传到服务器,进行安装。 这里介绍一个下载插件安装包的网站,可以搜索到lrzsz、lsof、telnet、unzip、zip等安装包 搜索到想要的插件安装包后,下载并上传到服…

Ubuntu20.04安装Carla0.9.15

文章目录 环境要求下载Carla解压Carla运行Carla测试官方用例创建python环境安装依赖包案例:生成车辆案例:测试自动驾驶 参考链接 环境要求 系统配置要求: 至少3G显存的GPU,推荐3060及以上的显卡进行Carla拟真。预留足够的硬盘空…

Tomcat线程池原理(上篇:初始化原理)

文章目录 前言正文一、从启动脚本开始分析二、ProtocolHandler 的启动原理三、AbstractEndPoint 的启动原理四、创建默认线程池五、参数配置原理5.1 常规的参数配置5.2 自定义线程池5.3 测试自定义线程 前言 在Java Web的开发过程中,Tomcat常用的web容器。SpringBo…

C#知识点-13(进程、多线程、使用Socket实现服务器与客户端通信)

进程 定义:每一个正在运行的应用程序,都是一个进程 进程不等于正在运行的应用程序。而是为应用程序的运行构建一个运行环境 Process[] pros Process.GetProcesses();//获取电脑中所有正在运行的进程//通过进程,直接打开文件//告诉进程&…

cmd命令开启windows桌面远程控制并设置防火墙允许远程

cmd命令开启桌面远程控制 1、开启之前: 2、使用管理员身份运行cmd 3、执行cmd命令 reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlset\Control\Terminal server" /v fDenyTSConnections /t REG_DWORD /d 0 /f4、如果这台电脑的防火墙打开&#xff…

Android14 InputManager-InputManagerService环境的构造

IMS分为Java层与Native层两个部分,其启动过程是从Java部分的初始化开始,进而完成Native部分的初始化。 □创建新的IMS对象。 □调用IMS对象的start()函数完成启动 同其他系统服务一样,IMS在SystemServer中的ServerT…

股票K线认知从形态到逻辑,仓位管理与交易体系实战

一、教程描述 本套教程内容分为三个部分,1、基础篇:讲的都是干货基础,有些是书本上没有的,通过对基础知识的掌握,对技术形态会有更深的理解,比如集合竞价、K线指标、盘中看盘技巧等等。2、交易篇&#xff…

CentOS升级python

1、下载python39 https://mirrors.huaweicloud.com/python/3.9.0/Python-3.9.0.tgz2、拷贝到Linux环境(当然也可以直接在Linux环境使用wget直接下载) 先安装一下依赖,不然编译会有问题 sudo yum -y install zlib-devel bzip2-devel openssl…