《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這個用戶的所有權限
作者:海底蒼鷹
維易PHP培訓學院每天發布《Mysql學習mysql命令行下用戶管理方法分享》等實戰技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培養人才。
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/13304.html