MySql数据库运维学习笔记

数据库运维常识
DQL、DML、DCL 和 DDL 是 SQL(结构化查询语言)中的四个重要类别,它们分别用于不同类型的数据库操作,下面为你简单明了地解释这四类语句:
1. DQL(数据查询语言,Data Query Language)
- 定义:主要用于从数据库中查询数据,不涉及对数据的修改、插入或删除操作。
- 常用命令:
SELECT是 DQL 中最核心的命令,用于指定查询的字段、表以及查询条件等。 - 示例:从
employees表中查询所有员工的姓名和薪水:
SELECT name, salary FROM employees;
1.创建数据库支持中文编码 大小写不敏感(完美且严谨)
CREATE DATABASE IF NOT EXISTS users2 DEFAULT CHARSET UTF8 COLLATE utf8_general_ci;
案例:
MariaDB [(none)]> SHOW CREATE DATABASE users2;
±---------±----------------------------------------------------------------------------------------+
| Database | Create Database |
±---------±----------------------------------------------------------------------------------------+
| users2 | CREATE DATABASE users2 /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci */ |
±---------±----------------------------------------------------------------------------------------+
1 row in set (0.000 sec)
MariaDB [(none)]> show create database users;
±---------±-------------------------------------------------------------------------------------------+
| Database | Create Database |
±---------±-------------------------------------------------------------------------------------------+
| users | CREATE DATABASE users /*!40100 DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci */ |
±---------±-------------------------------------------------------------------------------------------+
2.查询我当前在那个数据库中:
select databases();
3.查看数据表结构:
desc + 数据表名;
4.查看表中所有信息:
select * from + 表名;指定查询 (比如查询: user host password)
2. DML(数据操作语言,Data Manipulation Language)
- 定义:用于对数据库中的数据进行增、删、改操作。
- 常用命令
INSERT:用于向数据库表中插入新的数据记录。UPDATE:用于修改数据库表中已有的数据记录。DELETE:用于从数据库表中删除指定的数据记录。\
1.删除一些无用的用户数据
语法: delelte from 数据库.数据表 where 条件;
delete from mysql.user where user='xxw' and host='192.168.153.*'; //删除mysql数据库下user表 user等于xxw 并且 host=192.168.153.*的用户数据
3. DCL(数据控制语言,Data Control Language)
- 定义:用于控制数据库的访问权限和事务处理,确保数据库的安全性和数据完整性。
- 常用命令
GRANT:用于授予用户或角色对数据库对象(如表、视图等)的特定权限。REVOKE:用于撤销用户或角色已经被授予的权限。COMMIT:用于提交事务,将事务中所做的所有修改永久保存到数据库中。ROLLBACK:用于回滚事务,撤销事务中所做的所有修改。
- 示例
- 授予权限:授予用户
user1对employees表的查询权限。
- 授予权限:授予用户
GRANT SELECT ON employees TO user1;
- 撤销权限:撤销用户
user1对employees表的查询权限。
REVOKE SELECT ON employees FROM user1;
1.案例:给开发创建一个账号 用来连接数据库 和查看数据库信息:
create user test1@'%' identified by '2004129'; //发现可以远程登录但是 无法进行任何操作----
2.接着我们给test1用户赋予查看mysql数据库下的user表权限:
grant select on mysql.user to test1@'%';
2.查询用户权限
备注:默认创建的用户 只有一个USAGE权限(只能登陆)reate user test1@'%' identified by '2004129';
flush privileges; //刷新数据库
4. DDL(数据定义语言,Data Definition Language)
- 定义:用于定义数据库的结构,包括创建、修改和删除数据库对象(如表、视图、索引等)。
- 常用命令
CREATE:用于创建数据库对象,如创建数据库、表、视图等。ALTER:用于修改已存在的数据库对象的结构,如添加列、修改列的数据类型等。DROP:用于删除数据库对象,如删除数据库、表、视图等。
- 示例
- 创建表:创建一个名为
employees的表。
- 创建表:创建一个名为
CREATE TABLE employees (id INT PRIMARY KEY,name VARCHAR(50),salary DECIMAL(10, 2)
);
- 修改表:向
employees表中添加一个新的列department。
ALTER TABLE employees ADD COLUMN department VARCHAR(50);
- 删除表:删除
employees表。
DROP TABLE employees;
副本:
1.查看数据库编码类型:
show variables like 'char%';
2.查找匹配关键字 like
show databases like 'u%'; //只查找以u开头的数据库
3.创建数据表(数据表严格区分大小写)
CREATE TABLE IF NOT EXISTS `tanke` ( id INT, name VARCHAR(100) NOT NULL, jneng VARCHAR(100) NOT NULL, jiage INT NOT NULL, PRIMARY KEY (id) ) ENGINE=innodb DEFAULT CHARSET=utf8; // PRIMARY KEY (id) 设置key为id // ENGINE=innoDB 设置引擎为Innodb
/// 查看创建表信息 show create table + 表名
// 查看表结构 desc +表名MariaDB [kings]> desc tanke;
4.删除数据库
drop database if exists +数据库名;
5.删除数据表
drop table if exists + 表名
用户管理
1.创建用户:
create user test@'%' identified by '密码';
2.授权:
grant all select,input,update,create on 数据库.数据表 to test@'%' identified by '密码';
危险:给予最大权限:grant all privileges on 数据库.数据表 to test@‘%’ identified by ‘密码’;
删除用户: drop user 用户名+‘ip’ // 加不加ip都可以 加了更精准
-----------------------------------------------------------------------------------------------------------------------------2025年2/22 23:51
后端代码连接mysql
php连接mysql脚本
环境安装: sudo dnf install mysqlnd php
脚本运行: php + 文件
<?php
// 数据库连接参数
$servername = "localhost";
$username = "your_username";
$password = "your_password";
$dbname = "your_database_name";// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);// 检查连接是否成功
if ($conn->connect_error) {die("连接失败: " . $conn->connect_error);
}// 设置字符集为 UTF-8
if (!$conn->set_charset("utf8")) {printf("字符集设置失败: %s\n", $conn->error);exit();
}
echo "连接成功,字符集已设置为 UTF-8<br>";// 执行查询
$sql = "SELECT * FROM your_table_name";
$result = $conn->query($sql);if ($result->num_rows > 0) {// 输出数据while ($row = $result->fetch_assoc()) {echo "ID: " . $row["id"] . " - 姓名: " . $row["name"] . "<br>";}
} else {echo "0 结果";
}// 关闭连接
$conn->close();
?>
Python连接mysql
安装环境:sudo dnf install python3 python3-devel
安装第三方库: pip install pymysql
import pymysql# 数据库连接参数
host = 'localhost'
user = 'your_username'
password = 'your_password'
database = 'your_database_name'
charset = 'utf8'try:# 创建数据库连接connection = pymysql.connect(host=host,user=user,password=password,database=database,charset=charset)print("连接成功,字符集已设置为 UTF-8")# 创建游标对象with connection.cursor() as cursor:# 执行 SQL 查询sql = "SELECT * FROM your_table_name"cursor.execute(sql)# 获取查询结果results = cursor.fetchall()if results:for row in results:print(f"ID: {row[0]}, 姓名: {row[1]}")else:print("0 结果")except pymysql.Error as e:print(f"数据库连接或操作出错: {e}")
finally:# 关闭数据库连接if 'connection' in locals() and connection.open:connection.close()print("数据库连接已关闭")
-----------------------------------------------------\\\\2025 2-23 21.00
一.修该数据表
1.修改数据表名字:
rename table 旧的表名 to 新表名;

2.修改数据表字段
MariaDB [kings]> select * from tanke;
±—±-------±-------±------+
| id | name | jneng | jiage |
±—±-------±-------±------+
| 2 | 刘邦 | 传送 | 18888 |
±—±-------±-------±------+
1 row in set (0.000 sec)
上面 id 就是所谓的字段
3.添加字段
语法:alter table 表名 add 字段名 数据类型 其他…;
alter table tankex add age int;


枚举类型
枚举意思如下图:

alter table tabkes add 字段名 ENUM('XXXX','XXXXX') not null default 'XXXX'; //

4.删除数据表字段
语法:alter table 表名 drop 字段名;
alter table tankex drop host;
二 .添加索引 (索引就像目录一样)
1.查看数据表索引 : show index from 数据库.数据表\G;
2.添加索引:alter table 表名 add index 索引名(字段名);
3.删除索引:alter table 数据表 drop index + 索引名;
三.删除基本语法
1.删除数据库 drop database +数据库名;
2.删除数据表: drop table + 数据表名;
相关文章:
MySql数据库运维学习笔记
数据库运维常识 DQL、DML、DCL 和 DDL 是 SQL(结构化查询语言)中的四个重要类别,它们分别用于不同类型的数据库操作,下面为你简单明了地解释这四类语句: 1. DQL(数据查询语言,Data Query Langu…...
Linux中Shell运行原理和权限(下)(4)
文章目录 前言一、Shell的运行原理二、Linux当中的权限问题Linux权限的概念如何将普通用户添加到信任列表 三、Linux权限管理文件访问者的分类(人)文件类型和访问权限(事物属性)文件权限值的表示方法文件访问权限的相关设置方法如…...
LeetCode热题100- 字符串解码【JavaScript讲解】
古语有云:“事以密成,语以泄败”! 关于字符串解码: 题目:题解:js代码:代码中遇到的方法:repeat方法:为什么这里不用this.strstack.push(result)? 题目&#x…...
每日一题——LRU缓存机制的C语言实现详解
LRU缓存机制的C语言实现详解 参考1. 数据结构设计双向链表节点哈希表节点哈希表LRU缓存结构 2. 初始化哈希表和双向链表哈希函数初始化哈希表初始化双向链表创建LRU缓存 3. 更新双向链表4. 实现Get操作5. 实现Put操作更新节点值删除最久未使用节点插入或更新节点 6. 释放缓存释…...
Leetcode3162:优质数对的总数 I
题目描述: 给你两个整数数组 nums1 和 nums2,长度分别为 n 和 m。同时给你一个正整数 k。 如果 nums1[i] 可以除尽 nums2[j] * k,则称数对 (i, j) 为 优质数对(0 < i < n - 1, 0 < j < m - 1)。 返回 优…...
docker安装etcd:docker离线安装etcd、docker在线安装etcd、etcd镜像下载、etcd配置详解、etcd常用命令、安装常见问题总结
官方网站 官方网址:etcd 二进制包下载:Install | etcd GitHub社区项目:etcd-io GitHub GitHub社区项目版本历史:Releases etcd-io/etcd GitHub 一、镜像下载 1、在线下载 在一台能连外网的linux上执行docker镜像拉取命令…...
Apache SeaTunnel 构建实时数据同步管道(最新版)
文章作者 王海林 白鲸开源 数据集成引擎研发 Apache SeaTunnel Committer & PMC Member,Apache SkyWalking Committer,多年平台研发经验,目前专注于数据集成领域。 导读 在当今数字化快速发展的时代,数据已然成为企业决策…...
递归、搜索与回溯第二讲:二叉树中的深搜 穷举vs暴搜vs深搜vs回溯vs剪枝
递归、搜索与回溯第二讲:二叉树中的深搜 && 穷举vs暴搜vs深搜vs回溯vs剪枝 1.计算布尔二叉树的值2.求根节点到叶结点数字之和3.二叉树剪枝4.验证二叉搜索树5.二叉搜索树中第K小的元素6.二叉树的所有路径7.全排列8.子集 1.计算布尔二叉树的值 2.求根节点到叶…...
Hbase分布式——储存机制
说明: 客户端调用,到达zk。然后到大HMaster(主节点可以有多个但是只有和active在一起的才有效。)。然后找到一个HRegionServer(从节点可以有多个)去做保存操作。 每一个HRegionServer上管理着表的HRegion…...
Word表格中如何只单独调整某一单元格宽度
大家好,我是小鱼。 在日常制作Word表格时,表格中不同单元格有时需要设置不同的宽度,但是很多小伙伴会发现想单独调整某一个单元格宽度时,发现其它单元格宽度也会发生变化。那么,到底怎么才能单独调整某一单元格宽度呢…...
Build错误:Cannot determine build data storage root for project 和 无法加载主类的解决办法的经验分享
Build错误:Cannot determine build data storage root for project 解决方案与经验分享 1. 引言 查看错误信息 “Cannot determine build data storage root for project”的含义: 这是一个关于构建项目时遇到的常见错误。错误信息表明构建工具无法确定…...
【Springboot知识】Logback从1.2.x升级到1.3.x需要注意哪些点?
文章目录 **1. 确认依赖版本**示例依赖配置(Maven): **2. 处理 StaticLoggerBinder 的移除**解决方案: **3. 修改日志配置文件**示例 logback.xml 配置: **4. 检查兼容性问题**Spring Boot 2.x 的兼容性解决方案&#…...
大语言加持的闭环端到端自动驾驶模型 学习笔记纯干货
LMDrive:大语言模型辅助闭环端到端 LMDrive:大语言模型辅助闭环端到端 背景框架输入部分:导航指令:视觉数据:提示指令(可选):处理部分:输出部分: 视觉编码器…...
初阶数据结构(C语言实现)——2算法的时间复杂度和空间复杂度
目录 本节目标1. 算法效率1.1 如何衡量一个算法的好坏1.2 算法的复杂度 2.时间复杂度2.1 时间复杂度的概念2.1.1 入门习题2.1.2 进阶习题 2.2 常见时间复杂度 3. 空间复杂度3.1 常见空间复杂度 本节目标 算法效率时间复杂度空间复杂度常见时间复杂度以及复杂度oj练习 1. 算法…...
MySQL知识
1.Navicat客户端连接 打开navicat,点击连接,点击MySQL 输入连接名与密码,如果连接的mysql是windows下的mysql主机号就填写localhost 填写好后点击测试连接 点击确定,mysql连接navicat成功 2.MySQL数据定义语言(DDL) DDL用于数据库…...
【前端定位线上问题的多种方案(不依赖 Sentry)】
前端定位线上问题的多种方案(不依赖 Sentry) 🛠️ 一、构建时注入调试信息 🔧 1. 注入版本信息与 Git 提交哈希 Webpack 配置: // webpack.config.js const webpack require(webpack); const gitRevision require(…...
怎么修改node_modules里的文件,怎么使用patch-package修改node_modules的文件,怎么修改第三方库原文件。
在开发中会遇到需要node_modules里第三方库有bug,然后需要修改node_modules文件的情况 使用patch-package包可以修改node_modules里的文件 patch-package npm 官网:patch-package - npm 安装 npm i patch-package 修改文件后 npx patch-package s…...
muduo网络库2
Muduo网络库:底层实质上为Linux的epoll pthread线程池,且依赖boost库。 muduo的网络设计核心为一个线程一个事件循环,有一个main Reactor负载accept连接,然后把连接分发到某个sub Reactor(采用轮询的方式来选择sub Reactor)&…...
什么是DrawCall?DrawCall为什么会影响游戏运行效率?如何减少DrawCall?
目录 1 什么是DrawCall? 2 DrawCall为什么会影响游戏运行效率? 3 如何减少 DrawCall?(结合性能分析工具) 1 什么是DrawCall? DrawCall(绘制调用) 是 GPU 的一个指令,…...
LabVIEW电能质量分析软件
随着电力系统的复杂性增加,电能质量问题日益突出,传统的电能质量检测装置多采用DSP技术,不仅开发周期长、功能单一,而且在多功能集成方面存在局限性。基于LabVIEW虚拟仪器开发平台的电能质量分析软件利用FFT、STFT、WT、HHT等多种…...
内存分配函数malloc kmalloc vmalloc
内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...
云计算——弹性云计算器(ECS)
弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...
三维GIS开发cesium智慧地铁教程(5)Cesium相机控制
一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点: 路径验证:确保相对路径.…...
如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...
Python实现prophet 理论及参数优化
文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...
C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...
NFT模式:数字资产确权与链游经济系统构建
NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...
嵌入式学习笔记DAY33(网络编程——TCP)
一、网络架构 C/S (client/server 客户端/服务器):由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序,负责提供用户界面和交互逻辑 ,接收用户输入,向服务器发送请求,并展示服务…...
【Redis】笔记|第8节|大厂高并发缓存架构实战与优化
缓存架构 代码结构 代码详情 功能点: 多级缓存,先查本地缓存,再查Redis,最后才查数据库热点数据重建逻辑使用分布式锁,二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...
探索Selenium:自动化测试的神奇钥匙
目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...
