一、用户账号管理
0.概念
select host,user from mysql.user;
mysql数据库.user数据表.user用户登录名列,host域名IP地址列(存储了所有用户账号和相关信息)
其中root这个登陆名是超级账户
1.创建用户账号
1.1创建最简单的账号
create user tom;
1.2创建带初始密码的账号
create user 用户名 identified by’密码’;–明文密码
create user 用户名 identified by password’xxxxxxx’;–密文密码
select password(‘654321’);–查看明文对应密文 password()函数
create user tom identified by'123456';
select password('654321');--查对应密文
create user tom identified by password'*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9';--用密文初始化密码要用password'',注意这里没有();为什么用密文,出于安全因素考量
1.3改初始化密码(超级管理员看到的密码是加密后的密码 无法破解)
set password [for sb]=password(‘xxx’)
–设置密码不能直接设置 要用password()函数绕一圈,没有for sb就是为当前账户设置
set password [for tom]=password('654321');
1.4重命名用户账号
rename user oldname to newname;
rename user tom to jerry;
1.5自行测试语句/做完上述操作后
select host,user from mysql.user; --查看账户是否创建成功,其中显示%指所有
show grants [for tom]; 查看账户授权情况 其中usage为只连接数据库权限
show grants; 看自己在哪个账户下
mysql -utom --无初始密码
exit
drop user tom;(以超级用户账号权限删除)
二、账户权限设置
2.1授予权限
授什么权给什么人(授什么权在什么上授,给什么人) 背没什么必要 本身就是英语 逐渐会有语感 有语感后句子自然就出来 命令出错可以分析原因(标准的符合英语语法的一句话)
2.1.1 Example1:
情境:给Jerry分配查看db_student中看学号 姓名
语法:grant 权限名称 [(列名)} on dbname.tbname to sb;—列权限,数据库权限,表权限
grant select(studentno,studentname) on db_student.tb_student to jerry;
2.1.2 Example2
情境:创建账户Tom,给他两个权限(在db_studnet上查看和select,update insert权限)
要求;创建账号+分配权限 一条命令完成
grant select,insert,update,delete on db_student.* to tom identified by'123456';--*.*所有数据库的所有表;也可以select(字段)
测试语句举例:
select host,user from mysql.user;—(user数据表)
exit
show grants;
show database;
尝试做操作看是否成功
2.1.3 Example3
grant all on *.* to tom; --超级用户
2.2转移权限
grant all on *.* to tom with grant option;--建立一个拥有转移权的账户tom
grant select on db_student.* to jerry;--tom转移权给jerry
2.3剥夺权限
revoke select on db_student.* from Jerry;-- (from 剥夺,授予to)
易混点总结:
rename…to…命名为
set…for sb…为谁设置…
show grants for sb;
grant…to…授权/转移权限
revoke…from…剥夺权限
口诀:
授权to 剥夺from
注意:描述Tom拥有select的用户权限,指全部select权限