mysql命令列下使用者管理方法分享

來源:互聯網
上載者:User

mysql安裝後好,會有一個名字為mysql的資料庫,存放使用者的表是user,mysql資料庫的使用者管理就是圍繞這個表展開的,當然還有一些表,例如:tables_priv,procs_priv,clumns_priv,information_schema資料庫裡面的USER_PRIVILEGES等。

如果有mysql管理工具phpmyadmin的話,我們可以通過圖形畫介面來對使用者進行管理,但是如果沒有phpmyadmin這樣的管理工具怎麼辦呢?這個時候,我們可以通過命令列執行sql語句來管理mysql的使用者。

一,添加使用者

1,create user

文法:

CREATE USER user_specification
[, user_specification] ...

user_specification:
user [IDENTIFIED BY [PASSWORD] 'password']
執行個體: 複製代碼 代碼如下:mysql> create user '44'@'127.0.0.1'; //建立一個44使用者
Query OK, 0 rows affected (0.00 sec)

mysql> create user '33'@'localhost' identified by 'aaaa'; //建立一個33使用者,密碼為aaaa
Query OK, 0 rows affected (0.00 sec)

mysql> select * from mysql.user where user='33' or user='44'\G; //查看一下mysql下的user

create user 雖然可以建立使用者,但是它只是建立使用者,並沒有給使用者指派置許可權,所以一般被 grant命令所取代。

2,grant

文法:

GRANT
priv_type [(column_list)]
[, priv_type [(column_list)]] ...
ON [object_type] priv_level
TO user_specification [, user_specification] ...
[REQUIRE {NONE | ssl_option [[AND] ssl_option] ...}]
[WITH with_option ...]

object_type:
TABLE
| FUNCTION
| PROCEDURE

priv_level:
*
| *.*
| db_name.*
| db_name.tbl_name
| tbl_name
| db_name.routine_name

user_specification:
user [IDENTIFIED BY [PASSWORD] 'password']

ssl_option:
SSL
| X509 #要求x509認證
| CIPHER 'cipher' #密碼編譯演算法
| ISSUER 'issuer' #認證發行商
| SUBJECT 'subject' #主題

with_option:
GRANT OPTION
| MAX_QUERIES_PER_HOUR count #每小時最多執行多少條sql
| MAX_UPDATES_PER_HOUR count #每小時最多更新多少條資料
| MAX_CONNECTIONS_PER_HOUR count #每小時最大的聯結數是多少
| MAX_USER_CONNECTIONS count #最大使用者聯結數
不要被上面的文法嚇倒,其實理解什麼意思,就很容易掌握。我是這樣理解的。

grant 許可權 on 應用範圍(資料庫表,方法等) to 使用者(用@隔開,前面是使用者名稱後面是主機名稱'使用者名稱'@'主機名稱') identified by 密碼 require 要求什麼的 with 對使用者的進行的執行sql的條數控制。

個人覺得,只要記得上面幾個紅色的關鍵詞,基本上這個命令就掌握了。

Privilege Meaning
ALL [PRIVILEGES] 所有許可權
ALTER 可以使用alter table
ALTER ROUTINE 可以使用alter routine
CREATE 可以建立資料庫和表
CREATE ROUTINE 可以使用create routine
CREATE TEMPORARY TABLES 可以使用暫存資料表
CREATE USER 可以對使用者進添加,刪除,重新命名,撤銷許可權
CREATE VIEW 可以建立和修改視圖
DELETE 可以刪除資料
DROP 可能刪除資料庫,表,視圖等
EVENT 可以使用事件高度器
EXECUTE 可以執行routine
FILE 可以在伺服器讀寫檔案
GRANT OPTION 使用者有權對自己添加的用衣授權
INDEX 可以建立,刪除索引
INSERT 可以插入
LOCK TABLES 可以鎖定表
PROCESS 可以使用SHOW PROCESSLIST來查看mysql目前使用者的執行sql情況
REFERENCES Not implemented
RELOAD 可以使用重新整理功能
REPLICATION CLIENT 使用者可以進行主從同步
REPLICATION SLAVE 主從同步時,從伺服器可以從主伺服器讀取binary log
SELECT 可以尋找
SHOW DATABASES 可以使用show databases來查看所有資料庫
SHOW VIEW 可以使用show view來查看視圖
SHUTDOWN 可以使用mysqladmin中的參數shutdown
SUPER Enable use of other adminstrative operations such as CHANGE MASTER TO, KILL, PURGE BINARY LOGS, SET GLOBAL, and mysqladmin debug command
TRIGGER 可以使用觸發器
UPDATE 可以進行理會新操作
USAGE 無特權

執行個體: 複製代碼 代碼如下:grant all ON test.* TO 'test'@'localhost'; //test使用者擁有test資料庫下的所有操作
grant select,update on test.user to 'test'@'localhost'; //test使用者可以對test資料庫下user表,進行尋找和更新操作
//test使用者的的密碼是111111,對user表中的name欄位有讀取許可權,對id,name有更新許可權
grant select(name),update(id,name) on test.user to 'test'@'localhost' identified by '111111';
//test使用者對所有資料庫擁有所有權力,並且要求ssl加密
grant all privileges on *.* to 'test'@'%' identified by '123456' require ssl

當添加完使用者後,別忘 了 flush privileges;

二,刪除使用者

文法:

DROP USER user [, user] ...
執行個體: 複製代碼 代碼如下:drop user 'test2'@'localhost'; //當用drop刪除使用者進,tables_priv,procs_priv等表中的資料也會被刪除

在這裡為什麼要用'test2'@'localhost'當使用者名稱,而不是直接test2呢,因為mysql.user這張表,是根使用者名和host名決定一個使用者,你可查看一下表結構就知道了。

show create table mysql.user\G;你會發現有這個東西PRIMARY KEY (`Host`,`User`),表示聯合主鍵

三,修改使用者

文法:

RENAME USER old_user TO new_user
[, old_user TO new_user] ...
執行個體: 複製代碼 代碼如下:rename user 'test2'@'localhost' to 'test'@'%';

四,修改許可權

文法:

REVOKE
priv_type [(column_list)]
[, priv_type [(column_list)]] ...
ON [object_type] priv_level
FROM user [, user] ...

REVOKE ALL PRIVILEGES, GRANT OPTION
FROM user [, user] ...
grant就給使用者指派許可權,revoke是把許可權從使用者的身上拿走。

執行個體: 複製代碼 代碼如下:mysql> revoke update on *.* from 'tank'@'localhost';
Query OK, 0 rows affected (0.00 sec)

mysql> select mysql.user.update_priv from mysql.user where user='tank' and host='localhost';
+-------------+
| update_priv |
+-------------+

+-------------+
1 row in set (0.00 sec)

去掉tank@localhost這個使用者的更新功能,這個是去掉一個許可權,如果我要全部去掉怎麼辦呢,一個一個寫太麻煩了,看下面的一個例子 複製代碼 代碼如下:mysql> revoke all privileges ,grant option from '33'@'localhost';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

用掉33@localhost這個使用者的所有許可權

作者:海底蒼鷹

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.