數據庫-用戶管理

一、創建用戶

create user 'xy104'@'192..168.42.24' identified by '123456';

xy104:用戶名
localhost;這個權限最高的root用戶
%:任務ip地址
192.168.42.24:登錄的IP地址
identified by ‘123456’:指定該用戶的密碼

mysql -h 192.168.42.24 -u xy104 -p123456
#在命令行遠程登錄數據庫

二、賦權和解除權限

grant:用于授予用戶對數據庫對象的訪問權限
all:所有,增刪改查所有命令

grant select,insert on xyjy.* to 'xy104'@'192.168.42.24';
#賦予xyjy數據庫內的xy104用戶查詢和增加的權限

在這里插入圖片描述

刪除權限

revoke:刪除權限

revoke delete on xyjy.* from 'xy104'@'192.168.42.24';
#刪除xyjy數據庫內的xy104用戶的權限

在這里插入圖片描述

三、刪除用戶

drop user 'xy104'@'192.168.42.24';
#刪除xy104用戶

修改密碼

vim /etc/my.cnf
skip-grant-table
#免密登錄
保存退出
mysql -u root -p
update user set authentication_string = '' where user='root';
selsct host,user,authentication_string,plugin from user;
alter user 'root'@'localhost' identified with mysql_native_password by '123456';

四、刪除表內數據

刪除表內數據,到那時保留表名和表的結構
方法1:
delete from 表名;
如果該表有自增長的字段,delete刪除之后,會保留之前的自增長記錄
方法2:
truncate table 表名
全部清空,自增長記錄也會從1開始

五、mysql的索引

索引在所有的關系型數據庫當中的都有,索引是一個排序的列表,在這個列表當中存儲了索引的值和這個值對應數據所在的物理地址。
使用了索引之后,查詢數據表時,可以不用全表掃描來定義數據所在行。
可以通過索引直接找到該行數據對應的物理地址,直接訪問數據,提高查詢的速度,合理的設置索引可以提高數據庫查詢速度,也是必備的一項操作

索引的作用

索引的好處

1、索引就相當于書本的目錄,當表很大(數據量多)或者查詢涉及到多個表時(不超過3個),使用索引可以提高成千上萬倍的查詢速度
2、可以降低數據庫的l/o成本,索引也會降低數據庫的排序成本
3、也可以創建唯一性索引
4、可以加快表與表之間的連接速度
5、使用索引可以減少分組和排序的時間
6、通過索引可以提高數據庫的恢復速度

索引的副作用

1、索引也需要占用磁盤的空間
2、更新一個有索引的表比更新沒有索引的表時間更長,因為索引也需要更新

索引的創建原則

索引的創建原則:
雖然索引可以提高訪問速度,但是也不是任何情況下都需要索引
在有索引的情況下,數據庫會先查索引然后再定位到數據行
索引的設置如果不合理,反而會增加數據庫的負擔
1、表的主鍵和外鍵必須有索引,但是主鍵和外鍵默認就是索引
2、超過300行的表數據,就需要添加索引
3、和其他表連接的字段,要建立索引
4、唯一性差的字段,不適合設置索引
5、字段更新頻繁,不適合索引
6、經常出現在where條件的字段當中的,尤其是大表,應該建立索引
7、在經常進行group by和order by ,要創建索引

索引的類型

mysql的索引默認就是B-TREE索引
葉子節點上包含的條目直接指向到數據行,葉子節點之間也互相連接,形成了一個向下延伸的指針
根據索引值一步一步定位到數據行
哈希索引:它是把索引值轉換成值,通過對應索引的hash值找到對應數據行

索引的創建

主鍵索引:創建了主鍵默認就是索引
explain select * from member (name(5));
普通索引
create index name_index on member (name(5));
#name(5):列名當中匹配的長度,在不損失精確性的情況下,長度越小越好,減少索引文件的大小create table if not exists xy104 (
id int(4) zerofill primary key auto_increment,
name varchar(10) not null,
cardid int(18) not null unique key,
hobby varchar(50),
index name_index (name)
);唯一索引,該字段的值必須是唯一的,膽識可以為空,天價唯一約束,自動就是唯一索引
create table if not exists xy104 (
id int(4) zerofill primary key ,
name varchar(10) unique key,
cardid int(18)  ,
hobby varchar(50),
);create unique index name_index on member (name(5));組合索引:可以是單字段的索引,也可以是多字段的組合
要滿足最左原則,select的查詢語句的where條件,是從左往右執行的,字段的組合要符合索引的排序
create table if not exists xy104 (
id int(4) zerofill primary key ,
name varchar(10) unique key,
cardid int(18)  ,
hobby varchar(50),
unique index cardid phone address (cardid, phone, address)
);alter table member4 add constraint uc_cardid_phone_address unique (cardid ,phone,address )全文索引:適合使用模糊查詢進行匹配時使用,用來檢索文章當中的信息
create fulltext index remark——index on  members(remark)
#創建索引
select * from member3 where match(remark) against(‘第八集’)

索引:
主鍵索引 創建了主鍵默認就是索引
普通索引 最常見的一種索引方式
唯一索引: 創建唯一約束就是唯一索引,唯一索引的值可以是null
組合索引: 多個字段結合起來成為共同。
全文索引: 大文本的匹配。
match---->列 against------>文本

六、mysql的事務和存儲引擎

mysql innodb自帶了事務的特性
原子性
一致性
隔離性
持久性

隔離性

隔離性:每個事務執行的過程時獨立的,互相不能被干擾,并發事務之間是獨立的
1、臟讀
A事務在訪問數據并且修改了數據,但是修改的結果沒有提交到數據庫,
B事務也訪問了這條數據,而且看到了未提交的結果。
2、不可重復讀: 在一個事務之內,多次讀同一數據。
這A事務沒有結束時,另一個B事務也訪問該數據,由于在A事務中兩次讀取數據,在中間B事務修改了數據,
導致A事務兩次查詢的結果是不一致的,這就是不可重復讀,不能讀到相同的數據。
3、幻讀:A事務對數據進行了修改,B事務也對數據進行了修改,A事務發現數據還是沒有修改的數據,產生了幻覺。

事物的隔離級別

mysql支持事務四種隔離級別:
1、未提交讀,允許臟讀,可以看到未提交的修改 read uncimmitted
2、提交讀,read committed提交讀,只允許看到修改提交之后的數據
begin 顯示開始一個事務
update cost set money=150 where id =1
commit 提交 事務,所有的修改都是永久性
3、可重復讀,mysql默認隔離級別,一個事務在執行兩次select語句,保證得到相同的結果
update cost set money=150 where id =1
4、串行讀,后一個事務必須等待前一個完成之后才能繼續,在這個過程中表會完全鎖住,讀寫都活阻塞

事務的控制語句

begin:顯示開始一個事務
commit:提交事務,所有的修改都是永久性
rollback:對事務進行回滾,返回到上一次的操作,只能回滾正在進行未提交的修改
savepoint:在事務當中創建一個回滾點,回滾到指定的位置,一個事務中可以有多個回滾點。
savepoint在一個事務當中是一個臨時的標記,在事務執行過程中的一個回滾點,多個回滾點,是按照順序進行的,
前面的回滾點一旦執行,后續的回滾點就回失效。

七、行鎖和死鎖

innodb的行鎖和死鎖

行鎖

innodb通過給索引加鎖來實現行級的鎖定,如果沒有索引,會使用隱藏的聚簇索引來實施實現鎖定
如果A事務對索引字段進行操作,就會觸發聚簇索引,鎖定整行,B事務對這個行進行的操作都會被鎖住

死鎖

兩個事務相互等待對方的資源,形成了一個環路導致的
for update:設置一個排他鎖,在當前事務未提交前,禁止事務的寫入和更新操作
死鎖發生會自動選擇一個事務當中的語句進行執行,直接終止其中的一個事務,回滾另外一個事務,以解除死鎖

如何避免死鎖的發生
1、按照固定的順序對表和行進行訪問
2、大事務拆成小事務,業務允許的情況下
3、調整事務的默認隔離級別,如果業務允許,隔離級別越低越好
4、要給表添加合適的索引(不是經常需要訪問的字段,最好不要設置索引。)

八、mysql的備份和還原以及日志管理

備份的目的就是災難恢復
數據庫備份的分類:
1、物理備份
冷備份:關閉數據庫進行備份的,全量備份
2、邏輯備份***
熱備份:數據庫可以正常運行,不影響數據庫的操作,在這個條件可以實現備份和恢復
備份策略:
全量備份
增量備份
冷備份只能進行全量備份,邏輯備份既可以實現全量,也可以實現增量
mysqldump,常用的邏輯備份的工具,mysql自帶的。
全量備份,物理冷備份:
tar -jcvf /opt/mysql_all_$(date+%F).tar.xz /usr/local/mysql/data
把mysql的date目錄,打包的格式.xz,保存到opt的目錄下

mysqldump的備份和恢復

mysqldump是針對庫和表的全量和增量,使用的是熱備份
把備份的庫和表,以文件的形式導出,再從導出的文件進行恢復
mysqldump -u root -p123456 --databases xyjy > /opt/xyjy.sql
--databases:指定庫
把xyjy庫備份到/opt/xyjy.sql目錄下
mysql -u root -p123456  < /opt/xyjy.sql
把xyjy庫重新導入到mysql數據庫
mysqldump -u root -p123456  xyjy cost  > /opt/xyjy.sql
把xyjy庫中的cost表備份到/opt/xyjy.sql
mysql -u root -p123456 xyjy  < /opt/xyjy.sql
把表恢復到指定庫中 
直接在命令行輸入命令

對于數據的備份和恢復***

熱備份
使用mysql的二進制日志的方式進行備份,對數據的全量或者是增量
基于位置的恢復
基于時間點的恢復
打開/etc/my.cnf
先要剋期二進制日志的功能
log-bin=mysql-bin
開啟二進制日志的功能,二進制文件的名稱mysql-bin.000001
binlog_format=MIXED
二進制日志的記錄格式
log-error=/usr/local/mysql/data/mysql-error.log
#記錄mysql在啟動,停止或者是運行時,產生錯誤的日志
general_log=ON
general_log_file=/usr/local/mysql/data/mysql_general.log
#開啟mysql在使用過程中的記錄日志
slow_query_log=ON
slow_query_log_file=/usr/local/mysql/data/mysql_slow_query.log
long_query_time=5
#開啟慢查詢日志,用來記錄所有查詢的時間超過long_query_time=5的記錄,查詢的執行時間超過5秒鐘就會記錄。
不注明,默認10秒

vim /etc/my.cnflog-bin=mysql-binbinlog_format=MIXEDlog-error=/usr/local/mysql/data/mysql-error.loggeneral_log=ONgeneral_log_file=/usr/local/mysql/data/mysql_general.logslow_query_log=ONslow_query_log_file=/usr/local/mysql/data/mysql_slow_query.loglong_query_time=5

二進制日志的記錄格式:
1、ROW 基于行
記錄每一行的數據,準確,但是恢復效率低
2、STATEMENT 基于sql語句
按照順序對sql語句進行記錄,高并發的情況下,sql的記錄有可能會出錯,可能會導致數據的記錄有偏差,雖然恢復的效率比較高
3、MIXED 混合
正常情況下使用STATEMENT,高并發自動切換ROW的記錄方式
mysqlbinlog --no-defaults --base64-output=decode-rows -v mysql-bin.000001可以解讀二進制日志mysql-bin.000001進行解析
mysqlbinlog --no-defaults mysql-bin.000001 |mysql -u root -p 123456
恢復增量
mysqladmin -u root -p123456 flush-logs
刷新,打斷點
我們是按天來執行的,我們就可以按天對數據庫進行增量的備份
mysqlbinlog --no-defaults --start-position=‘1338’ mysql-bin.000005 | mysql -u root -p123456
這個命令從指定的位置(位置1338)開始恢復數據,一直恢復到文件的結尾。
mysqlbinlog --no-defaults --stop-position=‘1338’ mysql-bin.000005 | mysql -u root -p123456
這個命令從文件的開始位置恢復數據,直到指定的結束位置(位置1338)
從指定位置開始到指定位置結束
mysqlbinlog --no-defaults --start -position=‘2364’ --stop-position=‘3235’ mysql-bin.000001 | mysql -u root -p123456
從指定時間開始到指定時間結束
mysqlbinlog --no-defaults --start -datetime=‘2024-12-20 13:47:17’ --stop-datetime=‘2024-12-20 13:47:38’ mysql-bin.000001 | mysql -u root -p123456

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/63989.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/63989.shtml
英文地址,請注明出處:http://en.pswp.cn/web/63989.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

管理者需要的技能

管理者需要具備技術技能、人際技能和概念技能&#xff0c;這三種技能的內涵如下&#xff1a; 技術技能 專業知識與技術能力&#xff1a;指管理者掌握和運用某一專業領域內的知識、技術和方法的能力。這包括對特定行業的專業知識、技術流程、工具設備的熟悉和精通。例如&#x…

scala基礎學習(數據類型)-字符串

文章目錄 scala中的字符串引號單引號雙引號三引號 常用內置函數length 獲取字符串長度charAt 字符串元素訪問substring 獲取字串indexOf 獲取字串位置replace 字符串替換toLowerCase,toUpperCase 字符串大小寫轉換trim 去除首位空白符split 字符串切割以及查看startsWith,endsW…

數據庫安全-redisCouchdb

1.redis未授權訪問 默認端口:6379 1.1 Redis沙盒逃逸漏洞RCE-CVE-2022-0543 介紹&#xff1a;Redis 是一套開源的使用 ANSI C編寫、支持網絡、可基于內存亦可持久化的日志型、鍵值存儲數據庫&#xff0c;并提供多種語言的API。Redis 如果在沒有開啟認證的情況下&#xff0c;…

springboot集成websokcet+uniapp開發聊天原型驗證(一)

1. 整體思路 群組聊天功能實現思路 需要為每個群組維護一個對應的集合&#xff08;可以是 Set 等數據結構&#xff09;&#xff0c;用來存放該群組內所有在線用戶的 WebSocketSession。當有消息發送到群組時&#xff0c;遍歷該群組對應的集合&#xff0c;向其中的每個在線用戶…

Reed-Muller(RM)碼之編碼

點個關注吧! 看了一些中文的博客,RM碼沒有很詳細的資料,所以本文嘗試給出推導原理。 推導 RM碼由 ( r , m ) ( r , m ) (r,m

List直接使用removeAll報錯

List直接使用removeAll報錯 需要先將list轉換才能使用 原因是&#xff1a; removeAll 方法在 Java 中用于從當前列表中刪除另一個列表中存在的所有元素。如果直接對 List 接口的一個實現使用 removeAll 方法拋出異常&#xff0c;可能的原因有&#xff1a; 不同的List實現&am…

Linux -- 線程的優點、pthread 線程庫

目錄 線程的優點 pthread 線程庫 前言 認識線程庫 簡單驗證線程的獨立棧空間 線程的優點 與進程之間的切換相比&#xff0c;線程之間的切換需要操作系統做的工作要少得多。 調度進程時&#xff0c;CPU 中有一個 cache&#xff08;緩存&#xff0c;提高運行效率&#xff0…

【magic-dash】01:magic-dash創建單頁面應用及二次開發

文章目錄 一、magic-dash是什么1.1 安裝1.2 使用1.2.1 查看內置項目模板1.2.2 生成指定項目模板1.2.3 查看當前magic-dash版本1.2.4 查看命令說明1.2.5 內置模板列表二、創建虛擬環境并安裝magic-dash三、magic-dash單頁工具應用開發3.1 創建單頁面項目3.1.1 使用命令行創建單頁…

從零開始使用MaxKB打造本地大語言模型智能問答系統與遠程交互

文章目錄 前言1. 下載運行Ollama2. 安裝大語言模型3. 安裝Cpolar工具4. 配置公網地址5. 固定公網地址6. MaxKB 添加Olama7.創建問答應用 前言 目前大語言模型&#xff08;LLM&#xff09;已經成為了人工智能領域的一顆璀璨明星&#xff0c;從自然語言處理到智能問答系統&#…

深度解析 Pytest 中的 conftest.py

關注開源優測不迷路 大數據測試過程、策略及挑戰 測試框架原理&#xff0c;構建成功的基石 在自動化測試工作之前&#xff0c;你應該知道的10條建議 在自動化測試中&#xff0c;重要的不是工具 在使用 Pytest 進行測試的過程中&#xff0c;conftest.py 文件扮演著極為重要的角色…

【python】銀行客戶流失預測預處理部分,獨熱編碼·標簽編碼·數據離散化處理·數據篩選·數據分割

數據預處理 通過網盤分享的文件&#xff1a;銀行流失預測數據和代碼 鏈接: https://pan.baidu.com/s/1loiB8rMvZArfjJccu4KW6w?pwdpfcs 提取碼: pfcs 非數值特征處理 目的&#xff1a;將非數值特征轉換為數值型&#xff0c;以便模型能夠處理。方法&#xff1a; 地理位置&am…

回歸預測 | MATLAB實現CNN-LSSVM卷積神經網絡結合最小二乘支持向量機多輸入單輸出回歸預測

回歸預測 | MATLAB實現CNN-LSSVM卷積神經網絡結合最小二乘支持向量機多輸入單輸出回歸預測 目錄 回歸預測 | MATLAB實現CNN-LSSVM卷積神經網絡結合最小二乘支持向量機多輸入單輸出回歸預測預測效果基本介紹程序設計參考資料 預測效果 基本介紹 回歸預測 | MATLAB實現CNN-LSSVM…

slam學習筆記7---狀態量求導相關數學公式

前言&#xff1a;本來打算只是歸納一下數學求導相關公式&#xff0c;后面也寫了旋轉求導相關內容&#xff0c;哈哈。感覺有點發散把握不住呀。水平有限&#xff0c;歡迎評論區點出。 一、基本初等函數求導公式 ( C ) ′ 0 , C (C)0,C (C)′0,C為常數 ( x μ ) ′ μ x μ ?…

32單片機串口數據接收、空閑IDLE中斷詳解

一、前提說明 一開始寫單片機程序的時候不太清楚空閑中斷這個東西&#xff0c;每次用串口接收數據&#xff0c;都要再開一個定時器&#xff0c;在定時器內進行倒計時&#xff0c;每次接收數據就重置計時時間&#xff0c;計時結束就觸發中斷&#xff0c;再判斷所有接收的數據&am…

深入探討 Go 中的高級表單驗證與翻譯:Gin 與 Validator 的實踐之道20241223

深入探討 Go 中的高級表單驗證與翻譯&#xff1a;Gin 與 Validator 的實踐之道 在現代后端開發中&#xff0c;表單驗證是保證數據完整性和服務穩定性的核心環節。如何優雅、高效地實現表單驗證&#xff0c;同時提供人性化的錯誤提示&#xff0c;是每位開發者的必修課。在本文中…

掌握 Ansys ACP 中的參考方向:簡化復雜的復合材料設計

概括 在復合材料分析領域&#xff0c;精度至關重要&#xff0c;尤其是在定義纖維方向和鋪層時。Ansys ACP&#xff08;Ansys Composite PrepPost&#xff09;提供了強大的工具來建立參考方向&#xff0c;這是實現精確結構模擬的關鍵步驟。在本博客中&#xff0c;我們將揭開在 …

Vue2學習(一)——Vue簡介、Vue指令與指令修飾符

一、Vue簡介 Vue是一套用于構建用戶界面的漸進式框架。 所謂漸進式就是循序漸進&#xff0c;不一定非得把Vue中的所有API都學完才能開發Vue&#xff0c;可以學一點開發一點。 Vue2官網地址&#xff1a;https://v2.cn.vuejs.org/ Vue3官網地址&#xff1a;https://cn.vuejs…

Redis--通用命令學習

目錄 一、引言 二、基礎命令 1.set 2.get 3.keys 3.1 keys &#xff1f; 3.2 keys * 3.3 keys [abe] 3.4 keys [^] 3.5 keys [a-b] 4.exists 5.delete 6.expire 7.ttl 8.type 三、Redis中的過期策略&#xff08;面試題&#xff09; 1.惰性刪除 2.定期刪除 …

Linux程序設計(第四版)| 學習筆記

上次學習Linux相關內容還是上學的時候為了應付考試&#xff0c;最近有項目涉及Linux&#xff0c;重新學習以下。 很多年前關于Linux的總結 一、入門 1.概念 (1) UNIX 1)定義&#xff1a;指的是一種遵循特定規范的計算機操作系統。 2)特點&#xff1a;簡單性、集中性、可重用…

PostgreSQL 的歷史

title: PostgreSQL 的歷史 date: 2024/12/23 updated: 2024/12/23 author: cmdragon excerpt: PostgreSQL 是一款功能強大且廣泛使用的開源關系型數據庫管理系統。其歷史可以追溯到1986年,當時由加州大學伯克利分校的一個研究團隊開發。文章將深入探討 PostgreSQL 的起源、…