MySQL用户和权限管理

权限类别:
	库级别
	表级别
	字段级别
	管理类
	程序类

	管理类:
		CREATE TEMPORARY TABLES        	#创建临时表,临时表大概有16M空间
		CREATE USER						#创建用户
		FILE							#创建文件
		SUPER							#高级别管理操作,例如:复制,权限授权等高级权限
		SHOW DATABASES					#一般而言授权给所有用户
		RELOAD							#重新装载授权表的
		SHUTDOWN						#是否拥有进程级别关闭的权限
		REPLICATION SLAVE				#复制的方式连接至服务器端
		REPLICATION CLIENT				#是否有权限去请求复制主数据库产生的数据的
		LOCK TABLES						#锁表权限
		PROCESS							#进程权限,列出进程列表。

	程序类:
		FUNCTION						#
		PROCEDURE
		TRIGGER							#触发器

		CREATE, ALTER, DROP, EXCUTE(执行)		

	库和表级别:TABLE or DATABASE
		ALTER				#修改
		CREATE 				
		CREATE VIEW
		DROP
		INDEX
		SHOW VIEW
		GRANT OPTION:能够把自己获得的权限赠经其他用户一个副本;

	数据操作:
		SELECT
		INSERT
		DELETE
		UPDATE

	字段级别:  DELETE没有字段级别的权限
		SELECT(col1,col2,...)
		UPDATE(col1,col2,...)
		INSERT(col1,col2,...)

	所有有限:ALL PRIVILEGES, ALL

	元数据数据库:mysql 该表中保存了相关的用户和授权
		授权表:
			db, host, user
			columns_priv, tables_priv, procs_priv, proxies_priv

用户账号:
	'USERNAME'@'HOST':
		@'HOST':
			主机名;
			IP地址或Network; 
			通配符:
				%, _: 172.16.%.%

	创建用户:CREATE USER
		CREATE USER 'USERNAME'@'HOST' [IDENTIFIED BY 'password'];

		查看用户获得的授权:SHOW GRANTS FOR
			SHOW GRANTS FOR 'USERNAME'@'HOST'

	用户重命名:RENAME USER
		RENAME USER old_user_name TO new_user_name

	删除用户:DROP USER 'USERNAME'@'HOST'
	
	mysql刷新权限命令:FLUSH PRIVILEGES;

	修改密码:
		(1) SET PASSWORD FOR
		(2) UPDATE mysql.user SET password=PASSWORD('your_password') WHERE clause;
		(3) mysqladmin password
			 mysqladmin [OPTIONS] command command....
			 	-u, -h, -p

	忘记管理员密码的解决办法:
		(1) 启动mysqld进程时,为其使用:--skip-grant-tables --skip-networking
		(2) 使用UPDATE命令修改管理员密码
		(3) 关闭mysqld进程,移除上述两个选项,重启mysqld; 

授权:GRANT
	GRANT priv_type[,...] ON [{table|function|procedure}] db.{table|routine} TO 'USERNAME'@'HOST' [IDENTIFIED BY 'password']
		[REQUIRE SSL] [WITH with_option]			
		with_option:
		    GRANT OPTION
		  | MAX_QUERIES_PER_HOUR count
		  | MAX_UPDATES_PER_HOUR count
		  | MAX_CONNECTIONS_PER_HOUR count
		  | MAX_USER_CONNECTIONS count
	

取消授权:REVOKE
	REVOKE priv_type [(column_list)] [, priv_type [(column_list)]] ... ON [object_type] priv_level FROM user [, user] ...