程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> mysql敕令行下用戶治理辦法分享

mysql敕令行下用戶治理辦法分享

編輯:MySQL綜合教程

mysql敕令行下用戶治理辦法分享。本站提示廣大學習愛好者:(mysql敕令行下用戶治理辦法分享)文章只能為提供參考,不一定能成為您想要的結果。以下是mysql敕令行下用戶治理辦法分享正文


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這個用戶的一切權限

作者:海底蒼鷹
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved