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

MySQL用戶管理

編輯:MySQL綜合教程

MySQL用戶管理


一、權限表   默認創建名為mysql的數據庫,存儲的是每個用戶的權限信息   user表   存儲每個用戶的權限   用戶列   Host、User、Password字段   用戶基本的登錄信息,命令修改密碼也是改password字段   權限列   Select_priv、Insert_priv等字段   查詢、增刪改等權限,以及管理權限   Y表示該權限應用到所有數據庫,N則不能應用到所有,默認為N   安全列   ssl_type、ssl_cipher、x509_issuer、x509_subject字段   ssl用於加密,x509標識用戶   資源控制列   max_questions、max_updates、max_connections、max_user_connections字段   max_question字段:每小時最大查詢   update字段:每小時最大更新   conn字段:每小時建立的最大連接   nuser_conn字段:單個用戶最大連接數   db表   存儲用戶操作數據庫的權限   用戶列   Host、Db、User字段   權限列   相比user表多了Create_routine_priv、Alter_routine_priv字段,用於創建、修改存儲過程   tables_priv表   可對單個表進行權限設置   字段:   Host、Db、User   Table_priv:設置表的權限   Timestamp:修改權限時間   Grantor:指定用戶   columns_priv表   對單個數據列進行權限設置   字段:   Host、Db、User、Table_name、Timestamp略   Columns_priv:設置列的權限   Columns_name:指定哪一列   procs_priv表   可對存儲過程、存儲函數進行權限設置   字段:   Host、Db、User、Grantor、Timestamp略   Routine_name:存儲過程名   Routine_type:存儲過程類型,有FUNCTION、PROCEDURE   二、用戶管理   查看   mysql> SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user; +------------------------------+ | query                        | +------------------------------+ | User: 'user1@localhost'@'%'; |  | User: 'root'@'127.0.0.1';    | | User: 'root'@'::1';          | | User: 'root'@'localhost';    | +------------------------------+   創建   用戶user1,密碼123,主機名localhost   mysql> create user 'user1@localhost' identified by '123';   INSERT創建用戶,必須為後3個字段設置默認值   mysql> insert into mysql.user(Host,User,Password,ssl_cipher,x509_issuer,x509_subject) -> values('localhost','user1',PASSWORD('123'),'','',''); mysql> flush privileges;--重新從user表加載權限   user1遠程登錄,且擁有所有權限。%表示任意主機可登錄   mysql> create user 'user1'@'%' identified by '123456'; mysql> grant all privileges on *.* to 'user1'@'%';   刪除   mysql> drop user 'user1@localhost'; mysql> delete from mysql.user where Host='localhost' and User='user1';   修改密碼   修改user1密碼   mysql> set password for 'user1@localhost'=password("123456");   mysql> update mysql.user     -> set password=password("123") -> where User="user1" and host="localhost";   mysql> grant select on *.* to 'user1@localhost' identified by '123';   修改root密碼   mysql> set password=password("123456");   破解root密碼   1、關閉服務   [root@CentOS ~]# service mysql stop   2、不加載權限表啟動   [root@CentOS ~]# mysqld_safe --user=mysql --skip-grant-tables --skip-networking &   3、連接數據庫   [root@CentOS ~]# mysql -u root mysql   4、修改密碼   mysql> update mysql.user     -> set password=password("123456") -> where user="root";   5、刷新權限表   mysql> flush privileges;   6、重啟服務   [root@CentOS ~]# service mysql restart   三、權限管理   查看   查看當前用戶   mysql> show grants;   查看root   mysql> show grants for root@localhost;    類型   所有權限:ALL PRIVILEGES   DDL:CREATE、DROP、ALTER、CREATE TEMPORARY TABLES(創建臨時表)、LOCK TABLES(鎖定表)、GRANT OPTION   DML:SELECT、INSERT、UPDATE、DELETE、INDEX(索引查詢表)、REFERENCE   視圖:CREATE VIEW、SHOW VIEW   存儲過程:ALTER ROUTINE、CREATE ROUTINE、EXECUTE   用戶:CREATE USER   服務器:SHOW DATABASE、FILE(加載服務器文件)、PROCESS(服務器管理)、RELOAD(重新加載權限表)、REPLICATION CLIENT、REPLICATION SLAVE、SHUTDOWN、SUPER(超級權限)   授予   語法:   GRANT priv_type [column_list] ON 數據庫.表   TO user [IDENTIFIED BY [PASSWORD] 'PASSWORD']   [ user [IDENTIFIED BY [PASSWORD] 'PASSWORD'] ]   [WITH with_option [with_option] ]   #priv_type:權限類型   #column_list:列   #identified by:設置密碼   #with_option:   GRANT OPTION:用戶還可授權給別的用戶   MAX_QUERIES_PER_HOUR 10:每小時最多查詢10次   MAX_UPDATES_PER_HOUR 10:每小時最多更新10次   MAX_CONNECTIONS_PER_HOUR 10:每小時最多建立10次連接   MAX_USER_CONNECTIONT 10:每個用戶每小時最多建立10個連接   創建用戶user4,有查詢、更新所有表權限   mysql> grant select,update on *.*     -> to 'user4'@'localhost' identified by '123' -> with grant option;   授權user3查看mysql數據庫的所有表   mysql> grant select on mysql.* -> to 'user3@localhost';   收回   撤銷user4所有權限   mysql> revoke all on *.* -> from user4@localhost;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved