MySQL授權管理與結構分層

2020-12-15 anyux1

在資料庫操作過程,經常會遇到分配普通用戶權限問題,root權限是最高權限,本文講述了權限管理

MySQL

授權命令

grant all on *.* to oldboy@'10.0.0.%' identified by '123' with grant option;grant 權限 on 作用目標 to 用戶 identified by 密碼 with grant option;grant select,insert,update,delete,create on wordpress.* to root@'localhost' identified by '123';

作用目標:

*.*wordpress.*wordpress.t1

授權需求

創建一個管理員用戶root,可以通過10網段,管理資料庫grant all on *.* to root@'10.0.0.%' identified by '123' with grant option;

創建一個應用用戶wordpress,可以通過10網段管理wordpress庫下的所有表進行select,insert,update,delete操作grant select ,insert,update,delete on wordpress.* to wordpress@'10.0.0.%' identified by '123'

回收權限

查找用戶權限

show grants for wordpress@'10.0.0.%';

回收delete權限

revoke delete on wordpress.* from wordpress@'10.0.0.%';

回收授權權限

revoke grant option on *.* from root@'10.0.0.%';

資料庫分層

MySQL分層結構圖

連接層

提供連接協議用戶驗證提供連接線程SQL層

語法和SQL_MODE語義和權限解析優化器(代價)執行器查詢緩存日誌記錄二進位日誌存儲引擎層

從磁碟讀取數據頁返回給SQL層

資料庫結構

物理結構

資料庫----->目錄

表,對於MyISAM引擎和InnoDB有不同的結構

MyISAM結構

FRM存儲列信息MYD存儲數據MYI存儲索引InnoDB結構

FRM 存儲列信息IBD 存儲數據邏輯結構

資料庫包含庫名和庫屬性

數據表包含列和列屬性,數據行,表的屬性

頁:最小的存儲單元,默認16k區:64個連續的頁,共1M段:一個表就是一個段,包含一個或多個區MySQL基礎管理

日常啟停

mysql.server start ----> mysqld_safe ---->mysqldmysql.service ------> mysqld

需要依賴於 /etc/my.cnf

維護性任務

我們一般分將參數添加到命令行中,也會讀取/etc/my.cnf的內容,但是如果衝突,命令行優先級最高

mysqld_safe --skip-networking --skip-grant-tables &

MySQL無密碼登錄

關閉資料庫方法

mysqladmin -uroot -p123 shutdown

初始化配置

作用

影響資料庫的啟動影響到客戶端的功能初始化配置的方法

初始化配置文件(例如/etc/my.cnf)啟動命令行上進行設置(例如:mysqld_safe mysqld)預編譯時設置(僅限於編譯安裝時設置)初始化配置文件的書寫格式

[標籤]xxx=xxx[標籤]xxxx=xxxx

配置文件標籤的歸類

[server]和[client]屬於歸納類的標籤,配置後,會影響所有小類的配置,不建議使用

伺服器端

[mysqld] [mysqld_safe] [server]

客戶端

[mysql] [mysqladmin] [mysqldump] [client]

配置文件設置樣板(5.7)

#伺服器端配置[mysqld]#用戶user=mysql#軟體安裝目錄basedir=/application/mysql#數據路徑datadir=/data/mysql/data#socket文件位置socket=/tmp/mysql.sock#伺服器id號server_id=6#埠號port=3306#客戶端配置[mysql]#socket文件位置socket=/tmp/mysql.sock

配置文件讀取順序

資料庫服務端程序從左到右依次讀取文件,如果配置項發生衝突,以最新讀取的為主。一般情況下使用/etc/my.cnf,不建議使用其他的配置文件,容易混亂

[root@db01 ~]# mysqld --help --verbose | grep my.cnf | head -1/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf

強制使用自定義配置文件

mysqld_safe --defaults-file=/etc/myself.cnf &

MySQL的連接管理

mysql命令

如果同時使用TCPIP和SOCKET方式連接數據,以為TCPIP連接為主

注意:提前應該將用戶授權做好

grant all on *.* to root@'10.0.0.%' identified by '123' with grant option;

TCPIP:

mysql -uroot -p -h 10.0.0.1 -P3306

SOCKET:

mysql -uroot -p -S /tmp/mysql.sock

相關焦點

  • 艾編程教程:Linux環境下MySQL安裝
    >useradd mysql2)mysql 目錄改為 mysql 讀寫權限chown -R mysql:mysql /var/lib/mysql --如果沒有目錄就建立一下chown -R mysql:mysql /usr/local/mysql
  • MySQL何時執行flush privileges?
    需求背景我們平時在給用戶授權grant語句執行後,都習慣性的執行一個命令flush privileges;,但是我發現有時候不執行這個命令,授權語句執行之後,權限驗證也是OK的,但是有時候發現不執行這個flush privileges;命令,權限認證還不能通過。
  • 【教程資源】oracle/access/mysql/sql視頻教程資料庫管理DBA/OCP自學在線課程
    oracle/access/mysql/sql視頻教程資料庫管理DBA/OCP自學在線課程《需要的可以找我,你就可以擁有這個課程》
  • 資料庫基礎:mysql主從集群搭建
    本文轉載自【微信公眾號:java架構師進階之路,ID:gh_a39b0d322dde】經微信公眾號授權轉載,如需轉載與原文作者聯繫前言:Mysql資料庫沒有增量備份的機制還好mysql資料庫提供了一種主從備份的機制,其實就是把主資料庫的所有的數據同時寫到備份的資料庫中。實現mysql資料庫的熱備份。 要想實現雙機的熱備,首先要了解主從資料庫伺服器的版本的需求。要實現熱備mysql的版本都高於3.2。還有一個基本的原則就是作為從資料庫的數據版本可以高於主伺服器資料庫的版本,但是不可以低於主伺服器的資料庫版本。
  • MySQL 資料庫的哈希表-愛可生
    MySQL 的默認索引結構是 B+ 樹,也可以指定索引結構為 HASH 或者 R 樹等其他結構來適應不同的檢索需求。這裡我們來介紹 MySQL 哈希索引。MySQL 哈希索引又基於哈希表(散列表)來實現,所以了解什麼是哈希表對 MySQL 哈希索引的理解至關重要。
  • Prometheus 監控MySQL資料庫
    Prometheus 監控mysql容器Prometheus這裡我們演示中,prometheus以及mysqld_exporter都使用容器進行運行。通過systemd進行管理systemctl daemon-reloadsystemctl enable node_exportersystemctl start node_exportersystemctl status node_exporter
  • MySQL中InnoDB-Cluster 日常運維掃盲-愛可生
    本文來源:原創投稿 *愛可生開源社區出品,原創內容未經授權不得隨意使用,轉載請聯繫小編並註明來源。 本篇是《innodb-cluster 掃盲-安裝篇》的續篇。
  • MySQL進階系列:主從複製原理及其配置
    本次測試mysql的版本是5.7.  比較窮,在一臺機子上裝了兩個mysql實例,修改下不同埠即可。當然如果有錢準備兩臺能互相訪問的機子安裝兩個mysql也是可以的。),待兩臺mysql都按照完成之後,我們開始配置主從複製了。
  • MySQL分支資料庫MariaDB之CentOS安裝教程
    採用GPL授權許可 MariaDB的目的是完全兼容MySQL,包括API和命令行,在存儲引擎方面,使用XtraDB(英語:XtraDB)來代替MySQL的InnoDB。1.1.4 測試登錄:mysql -u root –p查看埠是否開啟成功:netstat -anpt | grep mysqld1.2 配置UTF字符集編碼1)vi /etc/my.cnf在 [mysqld
  • 青銅到王者,快速提升你 MySQL 資料庫的段位!
    如果加 —initialize-insecure 密碼為空第二部分:秩序白銀篇大概了解完 MySQL 的安裝,我們來介紹下 MySQL 的體系結構。先看下官方版本的圖:從圖中我們可以看出:MySQL 體系結構分兩部分(mysql server 層 + mysql 存儲引擎層)通過一條 sql 語句進入資料庫的過程細分,又可以由8個小部分組成如下圖
  • MySQL資料庫測試題
    >、假設在D盤根目錄下有一個名為db.sql的文件,以下哪些語句可以利用db.sql恢復資料庫test(資料庫名已經存在)中的表結構和數據(難度A)A、在DOS提示符下輸入以下命令mysql -uroot -p1234 test<d:/db.sql B、在DOS提示符下輸入以下命令mysqldump -uroot -p1234 test<d:/db.sql
  • MySQL 工作、底層原理,看這一篇就夠了!
    mysql原理圖各個組件說明:1. connectors與其他程式語言中的sql 語句進行交互,如php、java等。2. Management Serveices & Utilities系統管理和控制工具3.
  • SpringBoot + MyBatis + MySQL讀寫分離實踐!
    本文轉載自【微信公眾號:java進階架構師,ID:java_jiagoushi】經微信公眾號授權轉載,如需轉載與原文作者聯繫1. 引言讀寫分離要做的事情就是對於一條SQL該選擇哪個資料庫去執行,至於誰來做選擇資料庫這件事兒,無非兩個,要麼中間件幫我們做,要麼程序自己做。
  • xml 映射mysql - CSDN
    KEY (`STOCK_ID`) USING BTREE, UNIQUE KEY `UNI_STOCK_NAME` (`STOCK_NAME`), UNIQUE KEY `UNI_STOCK_ID` (`STOCK_CODE`) USING BTREE) ENGINE=InnoDB DEFAULT CHARSET=utf8; 2.使用Maven生成項目結構
  • 主庫n -> 從庫s - MySQL5.7多主一從(多源複製)同步配置 - 計算機...
    部署環境註:使用docker部署mysql實例,方便快速搭建演示環境。但本文重點是講解主從配置,因此簡略描述docker環境構建mysql容器實例。創建授權用戶連接mysql主資料庫,鍵入命令mysql -u root -p,輸入密碼後登錄資料庫。
  • MySQL 5.7的新增功能白皮書(中文版)
    測試環境如下:關於MySQL 5.7 基準測試更多信息,請訪問:http://www.mysql.com/why-mysql/benchmarks/適用於特定測試應用案例的Sysbech基準測試工具是免費的,可以在這裡下載:http://dev.mysql.com/downloads/benchmarks.html原生JSON
  • MySQL DBA好幫手--dbm
    ini #cat /etc/my-3306.cnf [mysqld] # basic user = mysql3306 basedir = /usr/local
  • MySQL 8.0 可以操作 JSON 了,牛逼...
    閱讀了一下官方文檔,雖然絕大多數的JSON操作都是應用層完成,但是會一些Mysql的JSON語法,方便進行debug;選出基礎的, 有價值的部分,供未來參考;https://dev.mysql.com/doc/refman/8.0/en/json.htmlhttps://dev.mysql.com/doc/refman/8.0/
  • MySQL Client中一些被遺忘的功能
    mysql client的一些命令確實有很多有意思的地方。
  • Python爬蟲-扒一扒百度貼吧裡的email並保存到MySQL
    :https://dev.mysql.com/downloads/mysql/考慮到有些人像我當年一樣沒電腦只有一部android手機也寫了幾個月的代碼的情況下,在這裡我也說下如何用手機安裝MySQL(mariadb),請確認你的手機是android並且版本在5.x以上最好6.x首先在你手機安裝一個軟體-termux,你可以百度或者去google play下載