SQL中的用户管理
之前在登陆数据时,一直使用的都是 root 用户, root用户是数据库系统中的超级管理员,可以对数据库做任何操作。
在生产环境中,开发人员一般只是对数据做读取操作。root 用户对于普通人来说,权限太大了,如果不小心做了一些不可逆的操作。那么后果是非常严重的。
所以 root 用户不会让开发人员使用,一般会由DBA或运维人员统一管理。给开发人员针对项目的数据库建立专门的用户来操作。
查看所有用户
MySQL中所有的用户及权限信息都存储在MySQL数据库的user表中。
通过 desc user;
可以查看user表的结构
主要字段:
- Host 允许访问的主机地址 localhost 为本机, % 为任何主机
- User 用户名
- authentication_string 密码,保存的是加密后的值
查看所有的用户
select host ,user,authentication_string from user;
创建帐户、授权
注:用户管理操作的权限 都是管理员来操作的,只能使用 root 用户操作。
- 常用权限: create、alter、drop、insert、update、delete、select
- 全部权限: all privileges
语法:grant 权限列表 on 数据库 to '用户名'@'访问主机' identified by '密码';
-
创建账户并授予查询权限
-- 加入testuser用户,密码123123,只能对jddb中的表做查询操作 grant select on jddb.* to 'testuser'@'localhost' identified by '123123';
查看权限
语法: show grants for 用户名@主机地址
```sql
show grants for testuser@localhost;
```
<img src='images/123.png'>
修改权限
语法:grant 权限名称 on 数据库 to 账户@主机 with grant option;
-- 将testuser权限改为对所有库有所有权限
grant all privileges on *.* to 'testuser'@'localhost' with grant option;
flush privileges;
删除用户
语法:drop user 用户名@主机地址 drop user 'testuser'@'localhost';
用户管理小结:
用户管理是MySQL当中一块非常重要的内容,它涉及到了数据的安全问题。 但是对于开发人员来讲,这块内容在实际工作中涉及又不多,因为数据库的维护会有专门的运维人员或DBA来完成。 一般在操作数据时,不会使用root用户。