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
下一篇 2018-06-09

相關推薦

  • Linux基礎命令

    Linux基礎命令簡要介紹

    2018-03-30
  • ansible的使用

    運維自動化發展歷程及技術應用 IAAS基礎設置即服務,提供硬件服務 PAAS平臺即服務,提供操作系統服務 SAAS軟件即服務,提供整套服務   ansible的安裝 yum -y install ansible ansible –version 查看版本信息   /etc/ansible/ansible.cfg? 配置文件 /…

    2018-06-04
  • aide

    aide 實現查看文件是否篡改 查看是否被攻擊 aide 的主配置文件 /etc/aide.conf aide的日志 /var/log/aide aide的數據庫 /var/lib/aide (用于存放比對信息數據) 在 /etc/aide.conf 里 定義你自己的要檢查的什么屬性 在 后面調用就行 比如 /date/ rules !/date/f1 監控…

    Linux筆記 2018-05-27
  • 作業-1

    Linux系統基礎-計算機組成.Linux簡介

    2018-06-19
  • 第八周博客作業

    一、簡述systemd的新特性及unit常見類型分析,能夠實現編譯安裝的如nginx\apache實現通過systemd來管理。
    二、描述awk命令用法及示例
    三、描述awk函數示例

    2018-05-10
  • Centos6.9上安裝httpd2.2.34步驟

    Centos6.9上安裝httpd2.2.34步驟 1.????? 首先安裝包組 yum groupinstall “development tools”如下圖所示: 2.????? 我們需要建立一個repo倉庫,可以指向網絡鏡像地址,也可以指向光盤,這里為了更加快速,所以指向光盤。并且清除緩存,獲取repolist列表。 在/etc/yum.repos.d…

    2018-04-22
欧美性久久久久