【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数据库的使用

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C/C++暴力/枚举/穷举题目持续更新(刷蓝桥杯基础题的进!)

目录 前言 一、百钱买百鸡 二、百元兑钞 三、门牌号码(蓝桥杯真题) 四、相乘(蓝桥杯真题) 五、卡片拼数字(蓝桥杯真题) 六、货物摆放(蓝桥杯真题) 七、最短路径(蓝…

文献阅读:Large Language Models are Null-Shot Learners

文献阅读:Large Language Models are Null-Shot Learners 1. 文章简介2. 方法介绍3. 实验考察 & 结论 1. 基础实验 1. 实验设计2. 实验结果 2. 消融实验 1. 小模型上的有效性2. ∅CoT Prompting3. 位置影响4. 组成内容 4. 总结 & 思考 文献链接&#xff1…

双重检查锁定与延迟初始化

双重检验锁:多线程下的单例模式。 懒加载模式:延迟初始化。

域名系统与IP地址分配

域名 域名的概述 域名是一个逻辑的概念,它不反映主机的物理地点 域名结构 由于数字形式的IP地址难以记忆和理解,为此人们采用英文符号来表示IP地址,这就产生了域名,域名长度不超过255各字符,每一层域名长度不超过6…

利用psutil库检查脚本是否在运行

摘要 如果要判断某一脚本是否在运行,可以通过psutil库获取所有进程的cmdline,并判断指定的文件名是否在cmdline中。 目录 1.psutil库简介 2.检查代码及说明 2.1检查思路 2.2异常捕获 2.3执行方法 1.psutil库简介 psutil 是一个跨平台(…

算法沉淀——动态规划之简单多状态 dp 问题(上)(leetcode真题剖析)

算法沉淀——动态规划之简单多状态 dp 问题上 01.按摩师02.打家劫舍 II03.删除并获得点数04.粉刷房子 01.按摩师 题目链接:https://leetcode.cn/problems/the-masseuse-lcci/ 一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接。在…

【Unity】提示No valid Unity Editor liscense found.Please active your liscense.

有两个软件,如果只有一个,点黑的不会有效果、、、、(楼主是这个原因,可以对号入座一下) 简而言之,就是去下载Unity Hub,再里面激活管理通行证 问题情境: 点击unity出现以下弹窗&a…

防御保护--入侵防御系统IPS

目录 DFI和DPI技术 --- 深度检测技术 入侵防御(IPS) 签名 入侵防御策略的配置 内容安全:攻击可能只是一个点,防御需要全方面进行 IAE引擎 DFI和DPI技术 --- 深度检测技术 DPI--深度包检测技术--主要针对完整的数据包&#xff0…

操作符详解3

✨✨ 欢迎大家来到莉莉的博文✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 前面我们已经讲过算术操作符、赋值操作符、逻辑操作符、条件操作符和部分的单目操作 符,今天继续介绍一部分。 目录 1.操作符的分类 2…

typescript 类型声明文件

typescript 类型声明文件概述 在今天几乎所有的JavaScript应用都会引入许多第三方库来完成任务需求。这些第三方库不管是否是用TS编写的,最终都要编译成JS代码,才能发布给开发者使用。6我们知道是TS提供了类型,才有了代码提示和类型保护等机…

K8S—集群调度

目录 前言 一 List-Watch 1.1 list-watch概述 1.2 list-watch工作机制 二 集群调度 2.1 调度过程 2.2 Predicate 和 Priorities 的常见算法和优先级选项 2.3 调度方式 三 亲和性 3.1 节点亲和性 3.2 Pod 亲和性 3.3 键值运算关系 3.4 Pod亲和性与反亲和性 3.5 示例…

《高质量的C/C++编程规范》学习

目录 一、编程规范基础知识 1、头文件 2、程序的板式风格 3、命名规则 二、表达式和基本语句 1、运算符的优先级 2、复合表达式 3、if语句 4、循环语句的效率 5、for循环语句 6、switch语句 三、常量 1、#define和const比较 2、常量定义规则 四、函数设计 1、参…

Python及Pycharm专业版下载安装教程(Python 3.11版)附JetBrains学生认证教程

目录 一、Python下载及安装1、Python下载2、Python安装3、验证是否安装成功 二、PyCharm下载及安装1、PyCharm下载2、PyCharm安装3、激活PyCharm 三、JetBrains学生认证 本篇主要介绍Python和PyCharm专业版的下载及安装方式,以及通过两种方式进行JetBrains学生认证。…

Meta AI | 指令回译:如何从大量无标签文档挖掘高质量大模型训练数据?

Meta AI | 指令回译:如何从大量无标签文档挖掘高质量大模型训练数据? 文章来自Meta AI,self-Alignment with Instruction Backtranslation[1]:通过指令反向翻译进行自对准。 一种从互联网大量无标签数据中挖掘高质量的指令遵循数据…

vscode 设置打开中断的默认工作目录/路径

vscode 设置打开终端的默认工作目录/路径** 文章目录 vscode 设置打开终端的默认工作目录/路径**打开vscode,打开设置UI 或是设置JSON文件,找到相关设置项方式1:通过打开settings.json的UI界面 设置:方式2:通过打开设置settings.j…

机器学习基础(六)TensorFlow与PyTorch

导语:上一节我们详细探索了监督与非监督学习的结合使用。,详情可见: 机器学习基础(五)监督与非监督学习的结合-CSDN博客文章浏览阅读4次。将监督学习和非监督学习结合起来,就像将两种不同的艺术形式融合&a…

[树形DP] 树的最大独立集

题目 这个挺简单的&#xff0c;注意状态转移时&#xff0c;如果选这个点&#xff0c;那么它的子结点状态应该为不选&#xff0c;如果这个点的状态是不选&#xff0c;那么可以在它的子结点里选择&#xff1a;选/不选两个状态&#xff0c;所以最后结果是max挑选。 #include<b…

python自动化管理和zabbix监控网络设备(有线网络配置部分)

目录 一、拓扑图 二、core-sw1 三、core-sw2 四、sum-sw1 五、sum-sw2 一、拓扑图 二、core-sw1 sys sysname core-sw1 vlan batch 10 20 30 40 50 60 100 vlan batch 200 210 220 230 240 250 stp region-configuration region-name huawei revision-level 1 instance…

vue2和vue3 setup beforecreate create生命周期时间比较

创建一个vue程序&#xff0c;vue3可以兼容Vue2的写法&#xff0c;很流畅完全没问题 写了一个vue3组件 <template><div></div> </template><script lang"ts"> import {onMounted} from vue export default{data(){return {}},beforeCr…

深入理解JS的执行上下文、词法作用域和闭包(中)

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…