文章目录
为了保证MySql服务器的安全,每个MySql的用户应该对他们需要的数据具有适当的访问权。
例如:
- 多数用户只能够用到读写权限,只有少数用户能够创建表格和删除表格。
- 一些用户只能访问某个数据库而不能访问其他的数据库。
- 一些用户可以管理其他用户的账号,但大多数人不需要管理别人的账号
每个用户需要用到什么权限,就只给他们什么权限,如果每个用户的权限都很高,那数据库会变得十分危险,随时都需要面临很多误操作,比如一些删库提桶跑路的操作,,,所以要进行访问权限控制。
1. 用户账号存储
在MySql下,所有的用户的账号,密码,对数据库的操作权限,都存储在mysql下(数据库的名字就叫mysql)的user表格中,user表格有一个user属性,user属性就是当前所有的用户名,通过以下操作可以查看当前mysql的用户一共有多少
use mysql
select user from user
当前的用户如下:
2. 创建用户账号
既然mysql中的user表格中存放着当前mysql的用户,那么新增用户只需要在user表中使用insert语句新增一条记录即可,不过为了安全起见不建议这样做,mysql数据库存放着很重要的数据,这样直接对mysql数据库直接操作可能会伤害到mysql服务器。
2.1 新增用户
- 新增一个用户语法:
CREATE USER [user_name] IDENTIFIED BY [user_pwd]
例如新增一个用户张三,密码123456
CREATE USER 张三 IDENTIFIED BY '123456'
2.2 修改用户名
- 对用户重命名的语法:
RENAME USER [user_name] TO [new_user_name]
例如将账号名从张三改为李四
RENAME USER 张三 TO 李四
2.3 修改用户密码
- 修改用户密码语法:
SET PASSWORD FOR [user_name] = Password('[new_pwd]')
这里使用password函数对新密码进行加密,新密码必须加密。
- 如果不指定用户名:
SET PASSWORD = Password('[new_pwd]')
默认为修改当前登陆的用户的密码。
例如修改李四账号的密码:
SET PASSWORD FOR 李四 = Password('135790')
3. 删除用户账号
- 如果一个用户离开了公司,需要把该用户的账号删除,使用以下语法:
DROP USER [user_name]
张三离职,删除张三的账号:
DROP USER 张三
如果mysql版本低于mysql5,需要先revoke用户所有的权限,才能删除账号。更高版本则可以一次性删除权限和账号。
4. 用户权限控制
4.1 查看用户权限
- 刚创建的的用户是没有任何权限的,使用以下语法查看某用户所拥有的权限:
SHOW GRANTS FOR [user_name]
而GRANT USAGE ON *.* TO 'lS'@'%'
则代表了用户ls没有任何权限。
4.2 授权
- 给用户授权的语法
GRANT [权限名] ON [数据库名].[表名] TO [用户名]
例如给用户ls 查找权限select
从表格中可以看到ls新增的权限。
4.3 撤销授权
- 撤销用户权限的语法:
REVOKE [权限名] ON [数据库名].[表名] FROM [用户名]
例如收回用户 ls 查找权限 select
从表格中可以看初 ls 新增的权限消失了。