MySQL之用戶與權限管理

本節索引:

一、MySQL用戶管理

二、MySQL權限管理

三、操作:破解Mysql數據庫口令

u=765769178,3345533486&fm=27&gp=0

一、MySQL用戶管理

用戶賬號:

MySQL的用戶賬號由兩部分組成:用戶名+主機名

‘USERNAME’@’HOST’

其中:

主機名HOST可以是IP地址或Network;

如:wxlinux@192.168.30.10

主機名HOST也支持通配符的寫法:

如:wxlinux@172.20.%.%

 

MySQL中自帶有一張名稱為mysql的數據庫,稱為元數據數據庫。

它是mysql的核心數據庫,類似于sql server中的master庫,主要負責存儲數據庫的

用戶、權限設置、關鍵字等mysql自己需要使用的控制和管理信息。

系統授權表:

1

user表:該表決定是否允許用戶連接到服務器。如果允許連接,權限字段則

為該用戶的全局權限。

db表:用于決定哪些用戶可以從哪些主機訪問哪些數據庫。包含在db表中的

權限適用于這個表標識的數據庫。

host表:當您想在db表的范圍之內擴展一個條目時,就會用到這個表。舉例

來說,如果某個db允許通過多個主機訪問的話,那么超級用戶就可

以讓db表內將host列為空,然后用必要的主機名填充host表。

tables_priv表:該表與db表相似,不同之處是它用于表而不是數據庫。這個

表還包含一個其他字段類型,包括timestamp和grantor兩個字段,用

于存儲時間戳和授權方。在本文后面我們會對這個表做進一步的講解。

columns_priv:該表作用幾乎與db和tables_priv表一樣,不同之處是它提供

的是針對某些表的特定列的權限。這個表也多 出了一個字段類型,即

其他字段,包括了一個timestamp列,用于存放時間戳。

 

 

 

用戶管理

創建用戶:

方法一:

CREATE USER ‘USERNAME’@’HOST’ [IDENTIFIED BY ‘password’];

默認權限:USAGE,只能連接數據庫,無法查看、更改、刪除

示例:

Mysql> create user wxlinux@’192.168.30.%’ identified by ‘wxlinux’;

Mysql> select user,host,password from mysql.user where user=’wxlinux’;

2

方法二:

也可使用GRANT 授權同時創建用戶

示例:

授權wang用戶select、insert權限同時創建用戶

Mysql> grant select,insert on hellodb.* to wang@’%’ identified by ‘centos’;

Mysql> select user,host,password from mysql.user where user=’wang’;???????

3

 

用戶重命名:

RENAME USER old_user_name TO new_user_name

示例:

Mysql> rename user wxlinux@’192.168.30.%’ to wangx@’192.168.30.%’;

Mysql> select user,host,password from user where user=’wangx’;

4

 

刪除用戶:

DROP USER ‘USERNAME’@’HOST’

示例:

刪除匿名用戶:

MariaDB [mysql]> select user,host,password from user;

5

 

刪除指定用戶:

Mysql> drop user wangx@’192.168.30.%’;

Mysql> select user,host,password from user where user=’wangx’;

Empty set (0.00 sec)

 

修改密碼:

方法一:

Mysql> SET PASSWORD FOR ‘user’@’host’ = PASSWORD(‘password’);

方法二:???

Mysql> UPDATE mysql.user SET password=PASSWORD(‘password’) WHERE clause;

此方法需要執行下面指令才能生效:

Mysql> FLUSH PRIVILEGES;

方法三:

bash命令行修改??

無密碼新設密碼:

# mysqladmin -u root ?password ?‘newpasswd’

修改舊密碼:

#mysqladmin -u root –poldpasswd password ?‘newpasswd’

 

 

二、MySQL權限管理

權限類別:

數據庫級別

表級別

字段級別

管理類

程序類

 

管理類:

CREATE TEMPORARY TABLES

CREATE USER

FILE

SUPER

SHOW DATABASES

RELOAD

SHUTDOWN

REPLICATION SLAVE

REPLICATION CLIENT

LOCK TABLES

PROCESS

 

程序類: FUNCTION、PROCEDURE、TRIGGER

CREATE

ALTER

DROP

EXCUTE

 

庫和表級別:DATABASE、TABLE

ALTER

CREATE

CREATE VIEW

DROP

INDEX

SHOW VIEW

GRANT OPTION:能將自己獲得的權限轉贈給其他用戶

 

數據操作:

SELECT

INSERT

DELETE

UPDATE

 

字段級別:

SELECT(col1,col2,…)

UPDATE(col1,col2,…)

INSERT(col1,col2,…)

 

所有權限:ALL PRIVILEGES 或 ALL

 

 

授權:

參考:https://dev.mysql.com/doc/refman/5.7/en/grant.html

GRANT priv_type [(column_list)],… ON [object_type] priv_level TO ‘user’@’host’

[IDENTIFIED BY ‘password’] [WITH GRANT OPTION];

priv_type:ALL [PRIVILEGES]

?? object_type:TABLE | FUNCTION | PROCEDURE

?? priv_level:*(所有庫) | *.* | db_name.* | db_name.tbl_name | tbl_name(當前庫

的表) | db_name.routine_name(指定庫的函數,存儲過程,觸發器)

with_option:GRANT OPTION

| MAX_QUERIES_PER_HOUR count

| MAX_UPDATES_PER_HOUR count

| MAX_CONNECTIONS_PER_HOUR count

| MAX_USER_CONNECTIONS count

 

回收授權:

REVOKE priv_type [(column_list)] [, priv_type[(column_list)]] …

ON [object_type] priv_level FROM user [, user] …

查看指定用戶獲得的授權:

???????? Help SHOW GRANTS

???????? SHOW GRANTS FOR ‘user’@’host’;

???????? SHOW GRANTS FOR CURRENT_USER[()];

注意:MariaDB服務進程啟動時會讀取mysql庫中所有授權表至內存

(1) GRANT或REVOKE等執行權限操作會保存于系統表中,MariaDB的服務進

程通常會自動重讀授權表,使之生效

(2) 對于不能夠或不能及時重讀授權表的命令,可手動讓MariaDB的服務進程

重讀授權表:mysql> FLUSH PRIVILEGES;

 

示例:

授權同時創建用戶

MariaDB [hellodb]> grant select,insert on hellodb.* to mage@’%’ identified by ‘centos’;

MariaDB [hellodb]> select user,host,password from mysql.user;??????????

3

只授權某個字段的操作權限

MariaDB [hellodb]> grant select(stuid,name) on hellodb.students to zhang@’%’identified by ‘centos’;

 

查看指定用戶的權限

MariaDB [hellodb]> show grants for wang@’192.168.30.%’;

6

 

查看本機登錄用戶權限

current_user()是一個變量,特指本機

MariaDB [(none)]> show grants for current_user();

7

 

收回指定用戶的select權限

MariaDB [hellodb]> revoke select on hellodb.* from mage@’%’;

 

 

三、并發控制

鎖粒度:

表級鎖

行級鎖

鎖:

讀鎖:共享鎖,只讀不可寫,多個讀互不阻塞,

寫鎖:獨占鎖,排它鎖,一個寫鎖會阻塞其它讀和它鎖

實現

存儲引擎:自行實現其鎖策略和鎖粒度

服務器級:實現了鎖,表級鎖;用戶可顯式請求

分類:

隱式鎖:由存儲引擎自動施加鎖

顯式鎖:用戶手動請求

 

鎖策略:在鎖粒度及數據安全性尋求的平衡機制

顯示使用鎖

? LOCK TABLES

tbl_name [[AS] alias] lock_type

???????? [, tbl_name [[AS] alias] lock_type] …

???????? lock_type: READ , WRITE

解鎖

UNLOCK TABLES

 

FLUSH TABLES tb_name[,…] [WITH READ LOCK]?

關閉正在打開的表(清除查詢緩存),通常在備份前加全局讀鎖

SELECT clause [FOR UPDATE | LOCK IN SHARE MODE]

查詢時加寫或讀鎖

 

添加讀鎖:

效果:可查看但不可修改,本端會提示,其他客戶端會卡住并且無提示

MariaDB [hellodb]> lock tables teachers read;

 

添加寫鎖:

效果:自己可讀,但別人無法讀

MariaDB [hellodb]> lock tables students write;

 

四、操作:破解Mysql數據庫口令

方法一:

適合干凈環境,沒有其他數據庫:

systemctl stop mariadb

cd /var/lib/mysql/

rm -rf mysql/*

systemctl start mariadb

 

方法二:

vim /etc/my.cnf.d

[mysqld]

skip-grant-tables???????????? #忽略授權表

 

重啟mysql服務

systemctl restart mariadb

 

#mysql

MariaDB [mysql] > use mysql

MariaDB [mysql] > update user set password=(‘centos’)where user=’root’ and host=’localhost’

 

 

最后再將忽略授權表那行刪掉

 

重啟mysql服務

systemctl restart mariadb

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/100695

(1)
wangxczwangxcz
上一篇 2018-06-09 09:08
下一篇 2018-06-09 17:49

相關推薦

  • mysql數據庫的具體介紹和使用

    表的建立。刪除,增加,修改,等

    2018-06-06
  • 簡述一下TCP三次握手四次揮手

    TCP,名為傳輸控制協議,是一種可靠的傳輸層協議,IP協議號為6。 原則上任何數據傳輸都無法確保絕對可靠,三次握手只是確??煽康幕拘枰?TCP三次握手 TCP建立連接為什么是三次握手,而不是兩次或四次? 個人理解:因為要雙方都要確定對方的網絡沒毛病,通訊正常。 還有一個網上看到的說法,我覺得很有意思: 我:1+1等于幾? 她:2,2+2等于幾? 我:4 …

    2018-04-30
  • 參加馬哥教育面授班

    很興奮,今天是開班的第6天了,課程的具體安排為,1、3、5上課,2、4、6實操課。課堂上目前是王老師授課,講的都是滿滿的干貨,很詳細。讓我再次確信參加這次培訓不會有錯。 面授班與在網絡學習,我覺得學習效果差別還是蠻大的。參加面授班能很好的約束我的行為,不會出現學著學著就打開游戲或看電影了,學習效率很高,哈哈。初次見到馬哥教育的各個老師發現都很平易近人,學習上…

    Linux筆記 2018-07-21
  • 腳本練習題

    1.使用腳本打印出如下圖形 ************答案一:#!/bin/bash#1.接受一個參數為星星的個數。num=$1 #2.求出總共要打印的行數let lines=num*2 #3.for 循環處理每一行的數據for i in `seq $lines`;do#4.前半個星星處理邏輯if [ $i -le $num ];thenfor j in `s…

    Linux筆記 2018-03-26
  • 第一周作業

    1、描述計算機的組成及其功能。
    2、按系列羅列Linux的發行版,并描述不同發行版之間的聯系與區別。
    3、描述Linux的哲學思想,并按照自己的理解對其進行解釋性描述。
    4、說明Linux系統上命令的使用格式;詳細介紹ifconfig、echo、tty、startx、export、pwd、history、shutdown、poweroff、reboot、hwclock、date命令的使用,并配合相應的示例來闡述。
    5、如何在Linux系統上獲取命令的幫助信息,請詳細列出,并描述man文檔的章節是如何劃分的。
    6、請羅列Linux發行版的基礎目錄名稱命名法則及功用規定。

    Linux筆記 2018-05-13
  • 對正則表達式,VIM的基本命令的操作,SHELL編程的基本格式等的一些見解。

    第一 正則表達式,第二 VIM的具體適應,第三 shell編程的基本格式跟規范!

    Linux筆記 2018-04-08
欧美性久久久久