之前我们一直都使用root身份来对mysql进行操作,但这样存在安全隐患。这时,就需要使用MySQL的用户管理
目录
一、用户
1.1 用户信息
1.2 添加用户
1.3 删除用户
1.4 修改用户密码
二、用户权限
2.1 赋予授权
2.2 回收权限
一、用户
1.1 用户信息
在MySQL中所有允许被登录的用户信息都被存放在系统数据库mysql的user表中:

来看看这张表中有着什么样的信息:

在上表中我们先介绍几个比较关键的列:
Host:表示这个用户可以从哪个主机登陆,如果是localhost,表示只能从本机登陆,如果是%表示可以从任何服务器上登录(不推荐%的设置方式,这是很危险的)
user: 用户名
authentication_string: 通过password函数加密后的用户密码
*_priv: 用户拥有的权限
所以我们在对用户信息做修改,本质上是对这个user表做修改!
1.2 添加用户
我们在数据库下添加用户,本质上可以使用insert语句向user表中插入数据,但表中要插入的数据太多了,insert语句在这里就显的不实用了,mysql提供下列语句来方便我们插入用户数据:
create user '用户名'@'登陆主机/ip' identified by '密码';在我们对user表做了任何修改后,都要下面的语句刷新一下,才能生效:
flush privileges;1.3 删除用户
mysql提供下列语句供我们删除用户:
drop user '用户名'@'主机名';1.4 修改用户密码
自己改自己密码:
set password=password('新的密码');root用户修改指定用户的密码:
set password for '用户名'@'主机名'=password('新的密码');修改完后记得刷新一下哦:
flush privileges;二、用户权限
在mysql下用户共有以下权限:
| 权限 | 列 | 上下文 | 
|---|---|---|
| CREATE | Create_priv | 数据库、表或索引 | 
| DROP | Drop_priv | 数据库或表 | 
| GRANT OPTION | Rant_priv | 数据库、表或保存的程序 | 
| REFERENCES | References _priv | 数据库或表 | 
| ALTER | Alter_priv | 表 | 
| DELETE | Delete_priv | 表 | 
| INDEX | Index_priv | 表 | 
| INSERT | Insert_priv | 表 | 
| SELECT | Select_priv | 表 | 
| UPDATE | Update_priv | 表 | 
| CREATE VIEW | Create_view_priv | 视图 | 
| SHOW VIEW | Show_view_priv | 视图 | 
| ALTER ROUTINE | Alter_routine_priv | 保存的程序 | 
| CREATE ROUTINE | Create_routine_priv | 保存的程序 | 
| EXECUTE | Execute _priv | 保存的程序 | 
| FILE | File_priv | 服务器主机上的文件访问 | 
| CREATE TEMPORARY TABLES | Create_tmp_table_priv | 服务器管理 | 
| LOCK TABLES | Lock_tables _priv | 服务器管理 | 
| CREATE USER | Reate_user_priv | 服务器管理 | 
| PROCESS | Process_priv | 服务器管理 | 
| RELOAD | Reload_priv | 服务器管理 | 
| REPLICATION CLIENT | Repl_client_priv | 服务器管理 | 
| REPLICATION SLAVE | Repl_slave_priv | 服务器管理 | 
| SHOW DATABASES | show_db_priv | 服务器管理 | 
| SHUTDOWN | Shutdown_priv | 服务器管理 | 
| SUPER | Super_priv | 服务器管理 | 
2.1 赋予授权
刚创建的用户没有任何权限。需要通过下列语句给用户授权:
grant 权限列表 on 库名.表名 to '用户名'@'登陆位置' [identified by '密码'];注意:
当我们要给多个权限时,记得用逗号分开:
grant select, delete, create ...
我们可以在权限列表中使用all关键字,表示赋予该用户在该对象上的所有权限
库名和表名我们可以使用*来代表所有
如*.* 代表本系统中的所有数据库的所有对象(表,视图,存储过程等)
identified by可选,如果用户存在,赋予权限的同时修改密码,如果该用户不存在,就是创建用户
2.2 回收权限
我们可以使用下列语句来回收用户的权限:
revoke 权限列表 on 库名.表名 from '用户名'@'登陆位置';
感谢各位的阅览~
更多MySQL技能请看:http://t.csdn.cn/W9dQl
博主努力更新中~