MySQL許可權系統

panpong發表於2016-12-13

MySQL權 限系統

1)  設定口令


設定 MySQL 使用者口令的方法有多種:

CREATE USER...IDENTIFIED BY

GRANT...IDENTIFIED BY

SET PASSWORD

mysqladmin password

UPDATE 授權表(不推薦)

為所有使用者帳戶分配唯一的強口令。

? 避免可以輕易猜測到的口令。

? 使用以下 SELECT 語句可列出沒有口令的所有帳戶:

SELECT Host, User FROM mysql.user

WHERE Password = '';

? 確定重複口令:

SELECT User FROM mysql.user GROUP BY password

HAVING count(user)>1;

? 讓口令失效:

ALTER USER jim@localhost PASSWORD EXPIRE;

 

2)  Mysql 支援的許可權

Privilege

Meaning and   Grantable Levels

ALL  [PRIVILEGES]

Enable use of   . Levels: Global, database,  table.

ALTER ROUTINE

Enable stored routine  creation. Levels: Global, database.

CREATE  TABLESPACE

Enable views to be created  or altered. Levels: Global, database, table.

DELETE

Enable databases, tables,  and views to be dropped. Levels: Global, database, table.

EVENT

Enable the user to cause the  server to read or write files. Level: Global.

GRANT OPTION

Enable use of   . Levels: Global, database, table, column.

LOCK TABLES

Enable foreign key creation.  Levels: Global, database, table, column.

RELOAD

Enable the user to ask where  master or slave servers are. Level: Global.

REPLICATION  SLAVE

Enable use of   . Levels: Global, database,  table, column.

USAGE


 

3)  允許的主機名格式示例

? 主機名: localhost

? 合格的主機名: 'hostname.example.com'

? IP 編號: 192.168.9.78

? IP 地址: 10.0.0.0/255.255.255.0

? 模式或萬用字元: % _

 

使用者名稱和主機名示例:

? john@10.20.30.40

? john@'10.20.30.%'

? john@'%.ourdomain.com'

? john@'10.20.30.0/255.255.255.0'

 

4)  GRANT 語句

? GRANT 語句可建立新帳戶或者修改現有帳戶。

? GRANT 語法:

GRANT SELECT ON world_innodb.* TO

'kari'@'localhost' IDENTIFIED BY 'Abc123';

? 該語句的子句:

– 要授予的許可權

– 許可權級別:

— 全域性: *.*

— 資料庫: .*

— 表: .

— 儲存例程: .

– 要授予其許可權的帳戶

– 可選口令

 

5)  許可權級別 / 表內容和許可權

user 針對伺服器已知的每個帳戶包含一個記錄

db 特定於資料庫的許可權

tables_priv 特定於表的許可權

columns_priv 特定於列的許可權

procs_priv 儲存過程和函式許可權

 

6)  撤消帳戶許可權

? 使用 REVOKE 語句可以撤消特定的 SQL 語句許可權:

REVOKE DELETE, INSERT, UPDATE ON world_innodb.*

FROM 'Amon'@'localhost';

? 撤消許可權以便將許可權授予其他使用者:

REVOKE GRANT OPTION ON world_innodb.*

FROM 'Jan'@'localhost';

? 撤消所有許可權(包括向他人授權):

REVOKE ALL PRIVILEGES, GRANT OPTION

FROM 'Sasha'@'localhost';

? 在發出 REVOKE 之前使用 SHOW GRANTS 語句確定要

撤消的許可權,隨後再次確認結果。

 

7)  禁用客戶機訪問控制

要指示伺服器不讀取授權表並禁用訪問控制,可使用

--skip-grant-tables 選項。

? 每個連線都成功:

– 可以提供任何使用者名稱及任何口令,並且可以從任何主機連線。

– 該選項將禁用整個許可權系統。

– 連線的使用者實際上擁有所有許可權。

? 阻止客戶機連線:

– 使用 --skip-networking 選項可阻止網路訪問,並且僅允許在本地套接字、命名管道或共享記憶體上訪問。

– 使用 --socket 選項可在非標準套接字上啟動伺服器以防止本地應用程式或使用者隨便訪問。

 

8)  資源限制

透過將全域性變數 MAX_USER_CONNECTIONS 設定為非

零值,限制使用伺服器資源。

– 這將限制任何一個帳戶的同時連線數量,但不會限制客

戶機在連線後能執行的操作。

? 限制單個帳戶的以下伺服器資源:

MAX_QUERIES_PER_HOUR :一個帳戶每小時可發出的查詢數量

MAX_UPDATES_PER_HOUR :一個帳戶每小時可發出的更新數量

MAX_CONNECTIONS_PER_HOUR :一個帳戶每小時可連線到伺服器的次數

MAX_USER_CONNECTIONS :允許的同時連線數量

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16976507/viewspace-2130430/,如需轉載,請註明出處,否則將追究法律責任。

相關文章