用戶的管理(CRUD和權限(CRUD)的管理

1)4類SQL語句:
	DDL: 操作數據庫和表
	DML: 增刪改
	DQL: 查詢
	DCL: 管理用戶及其授權
	
2)DBA: 數據庫管理員

3)管理用戶
	(1)添加用戶
		DCL創建用戶的語法(不要用insert):create user '用戶名'@‘主機名’ identified by ‘密碼’;
			如: create user 'zhangsan'@‘localhost’ identified by '123’;
	
			create user 'zhangsan'@‘%’ identified by '123’; -- 該用戶可以在任意主機上訪問
			
		測試登錄:
			mysql -uzhangsan -p123
			exit
	
	(2)刪除用戶
		drop user '用戶名'@‘主機名’;
			如: drop user 'zhangsan'@‘localhost’;
	
	(3)修改用戶(注意加密,如用password函數)
		需求: 修改lisi用戶密碼爲abc
		
		可以用的寫法: update user set password = password('新密碼') where name = 'lisi';
		
		DCL的寫法: set password for '用戶名'@'主機名' = password('新密碼');
			如: set password for 'root'@'localhost' = password('123');
			
		在mysql中忘記了root用戶的密碼?
			1.cmd去執行net stop mysql; -- 停止mysql的服務,需要有管理員的權限(以管理員身份運行)
			2.使用無驗證方式啓動mysql服務: mysqld --skip-grant-tables  這時光標會卡主
			3.直接另起一個窗口, 輸入 mysql 即可 無驗證啓動mysql,修改密碼
				use mysql;
				update user set password = password('root') where user = 'root';
			4.用任務管理器將mysqld.exe這個進程關閉. 關閉2個cmd窗口
			5.再次用管理員運行mysql服務  net start mysql
			6.發現用修改的密碼就能進入了
			
	(4)查詢用戶
		use mysql;
		select * from user;
		
		其中, localhost是本機訪問, %是通配符,可以在任意主機使用用戶登錄數據庫
	
4)授權
	(1)查詢權限
		show grants for '用戶名'@'主機名';
			如: show grants for 'lisi'@'%';
			
			show grants for 'root'@'%'; -- 發現root有所有的權限
	
	(2)授予權限
		grant 權限列表 on 數據庫名.表名 TO '用戶名'@'主機名';
			如: grant select on db3.account to 'lisi'@'%'; -- 只能看到account表,而且只能查詢account表
			
			如: grant select,delete,update on db3.account to 'lisi'@'%'; -- 權限的授予是非常細粒度的
			
			如: 給張三用戶授予所有權限(通配符:所有權限  所有數據庫的所有表)
				grant all on *.* to 'zhangsan'@'localhost';
			
	
	(3)撤銷權限
		revoke 權限列表 on 數據庫名.表名 from '用戶名'@'主機名';
			如: 撤銷李四的修改權限
				revoke update on db3.account from 'zhangsan'@'localhost';




 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章