MySQL中的用户账号信息都存储在一个名为mysql
的数据库中,数据库里有一个名为user
的数据表,包含了所有账号,并且它用一个名为user
的列存储用户的登录名。
知道以上信息,那么我们根据以前的知识,应该知道如何查看用户账号信息了吧?方法如下:
select user from mysql.user;
新安装的系统只有一个名为 root 的用户,拥有对整个服务器的完全控制的权限。在实际操作中,需要创建一系列具备适当权限的账号,来保证数据库的安全。
创建用户账号
使用create user
语句创建一个或多个账户,并设置相应口令,语法格式为:
create user user_name
identified by [password] 'password';
- user_name:用户账号。其格式为用户名+主机名,即’user_name’@‘host_name’。如果没有指定主机名,默认为’%’,表示一组主机。
- [password]:可选项,用于指定散列口令。通俗点说就是,如果你直接指定明文密码,该参数可省略;如果你的密码需要加密,改参数不可省略。
实例说明:
select password('456')
--加密返回散列值
--结果为 ‘*531e82...eo4’
--创建两个新用户zhangsan 和 lisi,密码分别为'123'和'456',其中‘456’密码使用加密后的散列值
create user
'zhangsan'@'localhost' identified by '123',
'lisi'@'localhost' identified by password '*531e82...eo4';
修改用户
1、修改账号名
rename user old_user to new_user;
2、修改密码
set password for 'wangwu'@'localhost' = 'hello';
删除用户
drop user lisi@localhost;
--这里删除lisi的账户及权限,如果不指定其主机名,会报错。因为系统默认主机名为‘%’
权限管理
成功创建用户账号后,需要分配适当的权限,新的用户账号只能登陆服务器,不能进行任何操作。
1、查看用户权限
show grants for 'zhangsan'@'localhost';
2、权限授予
grant 权限 on 权限级别 to 用户
[with with_option];
- 权限:即权限的名称。可以指定为select、insert、delete、update等等权限。详情参考官方文档 Grant用法。
- 权限级别:可以理解为权限的作用域。可以指定为*,* . * ,db_name.*,db_name.tb_name 等等。详情请面向百度编程。哈哈~
- [with_option]:可选项,实现权限的转移和限制。
- 当权限授予的用户不存在时,
grant
语句也可以起到创建用户的作用。见课后习题。
实例说明:
--授予用户huang,在表tb_student上拥有select,update权限
grant select,update
on db_school.tb_student
to 'huang'@'localhost' identified by '123';
3、权限撤销
revoke 权限 on 权限级别 from 用户;
revoke
用法与grant
用法刚好相反,格式相似。
revoke select on db_school.tb_student from 'zhou'@'localhost';
课后习题
grant select,update
on db_test.content
to 'wanming'@'localhost' identified by '123';