文章目录
- 用户管理
- 用户信息
- 创建用户
- 删除用户
- 修改用户密码
- 用户权限
- 用户赋权
- 回收权限
用户管理
如果我们只能使用root用户,这样存在安全隐患,因为root可以访问所有的数据库和表,这时,就需要使用MySQL的用户管理,从而限制某个特定的用户只能访问特定的数据库和表,并且对其权限作出一定的限制,比如只有可读权限
用户信息
MySQL中用户信息都在库mysql的user表中
| 字段 | 解释 |
|---|---|
host | 表示这个用户可以从哪个主机登陆,如果是localhost表示只能从本机登陆,%表示任意 |
user | 用户名 |
authentication_string | 用户密码通过password函数加密后的结果 |
XXX_priv | 表示用户拥有的权限,后面跟Y表示允许,N表示拒绝 |
例子:

use mysql;#进入mysql这个数据库
select host,user,authentication_string from user;

创建用户
create user '用户名' @'登陆主机或者ip' identified by '用户的密码';
- %从任意处登录,一般只有root用户设置
- 普通用户一般只会设置在某个地方登录来保证安全性,%一般只会设置root用户


关于新增用户这里,需要大家注意,不要轻易添加一个可以从任意地方登陆的user, 这里是为了测试,可能实际在设置密码的时候,因为mysql本身的认证等级比较高,一些简单的密码无法设置,会出现报错,提前设置认证等级
此时我们可以以用户test的身份登录mysql: mysql -utest -p; 然后输入密码
当然,我们也可以通过Windows登录新创建的用户:
- 在cmd中输入:mysql -h 主机名 -u 用户名 -p

注意: 用户被创建好,也无法进行大部分操作,新用户没有权限,因此无法访问数据库,我们需要对用户进行赋权,
删除用户
drop user '用户名'@'主机名'; #不建议直接drop user 用户名
修改用户密码
用户自行修改密码
set password=password('新的密码');
注意:此时是在test用户的身份下

root用户修改其他用户密码
set password for '用户名'@'主机名'=password('新的密码');

注意:此时是在root用户的身份下
用户权限
| 权限 | 字段 | 上下文 |
|---|---|---|
| CREATE | Create_priv | 数据库、表或索引 |
| DROP | Drop_priv | 数据库、表 |
| GRANT OPTION | Grant_priv | 数据库、表或保存的程序 |
| REFERENCES | References_priv | 数据库或表 |
| ALTER | Alter_priv | 表 |
| DELETE | Delete_priv | 表 |
| INDEX | Index_priv | 表 |
| INSERT | Insert_priv | 表 |
| SELECT | Select_priv | 表 |
| UPDATE | Update_priy | 表 |
| CREATE VIEW | Create_view_priy | 视图 |
| SHOW VIEW | Show_view_priv | 视图 |
| ALTER ROUTINE | Alter_routine_priy | 保存的程序 |
| 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 | Create_user_priv | 服务器管理 |
| PROCESS | Process_priv | 服务器管理 |
| RELOAD | Reload_priv | 服务器管理 |
| REPLICATION CLIENT | Repl_client_priv | 服务器管理 |
| REPLICATION SLAVE | Repl_slave_priv | 服务器管理 |
| SHOW_DATABASES | Show_db_priy | 服务器管理 |
| SHUTDOWN | Shutdown_priy | 服务器管理 |
| SUPER | Super_priv | 服务器管理 |
用户赋权
查看用户所拥有的权限:
show grants for '用户名'@'登陆位置';
例如:查看test用户的权限:

查看所有用户的权限列表
select * from mysql.user\G; #在root身份下查看
给用户赋权:
grant 权限列表 on 库名.对象名 to '用户名'@'登陆位置' [ identified by '密码' ];
- 权限列表:多个权限用逗号分开,如果使用all则赋予所有权利,
- 库.对象名 :
库.*表示某个数据库中的所有数据对象(表,视图,存储过程等),*.*表示所有库的所有数据对象
如果嫌麻烦的话可以直接把权限列表写成all,赋权给用户
grant all on *.* to '用户名'@'登陆IP';
- identified by:可选,如果用户存在,赋予权限的同时修改密码,如果该用户不存在,就是创建用户,
赋权之后如果没反应,需要进行刷新权限
flush privileges;
比如要给test用户查看和修改test表的权限:


注意:此时只能查看和更新表,不能删除表,因为没有删除权限
回收权限
revoke 权限列表 on 库.对象名 from '用户名'@'登陆IP';


















![[附源码]Python计算机毕业设计电影售票管理系统Django(程序+LW)](https://img-blog.csdnimg.cn/525f6442f2654610828c0f3a2665c586.png)

![[附源码]Python计算机毕业设计SSM基于web的医院门诊管理系统(程序+LW)](https://img-blog.csdnimg.cn/ff3c9f20cbfa402a8cd00ae12634e033.png)