MySQL创建⽤户和分配权限
回顾今天的数据库实验⊂(ο  ο)⊃
先新建⼀个测试数据库
再创建个表填些数据
⼀、查看⽤户
查看⽤户并没有直接的SQL语句,⽽是进⼊ mysql 数据库的 user 表(这个mysql库和user表都是⼀开始就有的),直接⽤ select * from user;来查看有什么⽤户
use mysql;
select * from user;
⼆、创建⽤户
create user 'user_name'@'host' identified by 'password';
user_name:要创建⽤户的名字。
host:表⽰要这个新创建的⽤户允许从哪台机登陆,如果只允许从本机登陆,则填 ‘localhost’ ,如果允许从远程登陆,则填 ‘%’password:新创建⽤户的登陆数据库密码,如果没密码可以不写。
创建不同限制的账户
-- 创建账户,"%"是⽆登录限制的,“123”是密码
create user 'liwker'@'%' identified by '123';
-- "localhost"是限制为本地登录
create user 'liwker'@'localhost' identified by '123';
-- 这个是限制 ip 为 10.11.20.30 的主机访问
create user 'liwker'@'10.11.20.30' identified by '123';
⼆、分配权限
grant privileges on databasename.tablename to 'username'@'host';
privileges:表⽰要授予什么权⼒,例如可以有 select , insert ,delete,update等,如果要授予全部权⼒,则填 ALL
databasename.tablename:表⽰⽤户的权限能⽤在哪个库的哪个表中,如果想要⽤户的权限很作⽤于所有的数据库所有的表,则填 "
*.* ",* 是⼀个通配符,表⽰全部。
’username‘@‘host’:表⽰授权给哪个⽤户,username 的引号可以不加哦,但 host 必须加。
为账户分配不同的权限
-- Liwker库的student表的只读权限分配给 liwker 账户
grant select on Liwker.student to liwker@'%';
-- Liwker库(所有表)的多个权限分配给 liwker 账户
grant select,insert,delete,update on Liwker.* to liwker@'%';
-- Liwker库的所有权限分配给 liwker 账户
grant all on Liwker.* to liwker@'%';
-- 所有库的所有权限分配给 liwker 账户
grant all on *.* to liwker@'%';
-- 刷新权限
flush privileges;
权限列表:
ALTER: 修改表和索引。
CREATE: 创建数据库和表。
DELETE: 删除表中已有的记录。
DROP: 抛弃(删除)数据库和表。
INDEX: 创建或抛弃索引。
INSERT: 向表中插⼊新⾏。
REFERENCE: 未⽤。
SELECT: 检索表中的记录。
UPDATE: 修改现存表记录。
FILE: 读或写服务器上的⽂件。
PROCESS: 查看服务器中执⾏的线程信息或杀死线程。
RELOAD: 重载授权表或清空⽇志、主机缓存或表缓存。
SHUTDOWN: 关闭服务器。
ALL: 所有权限,ALL PRIVILEGES同义词。
USAGE: 特殊的 "⽆权限" 权限.
可根据上⾯的权限字段为⽤户分配相应的权限
注意:
⽤以上命令授权的⽤户不能给其他⽤户授权,如果想这个⽤户能够给其他⽤户授权,就要在后⾯加上 WITH GRANT OPTION 如:
grant all on *.* to 'liwker'@'%' with grant option;
补充为⽤户创建数据库:
create database basename DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
三、删除⽤户
drop user 'username'@'host';
四、设置与更改⽤户密码
set password for 'username'@'host' = password('newpassword');
-- 如果是设置当前⽤户的密码
set password = password('newpassword');
五、撤销账户权限
-- 回收权限,格式和分配差不多,grant -> revoke , to -> from
revoke select on Liwker.student from liwker@'%';
但注意:
若授予权利是这样写:grant select on *.* to liwker@'%';
则⽤revoke select on Liwker.student to liwker@'%';是不能撤销⽤户 liwker 对 Liwker.student 中的 SELECT 权利的。
反过来grant select on Liwker.student to liwker@'%';授予权⼒
⽤revoke select on *.* to liwker@'%';也是不能⽤来撤销⽤户 liwker 对 Liwker 库的 student 表的SELECT 权利的六、测试
先创建⼀个新账户
再给他分配⼀些操作权限
接下来,就打开cmd⽤新账户测试⼀下
先登录这个账户
可以看到除了默认数据库,只能看到分配给的数据库和表
⽤分配给的不同SQL语句测试⼀下
再试⼀试没权限的
这时,我们可以在管理台给他新增这个权限
在测试台重新试⼀试刚刚的 delete
再试⼀试回收权限,管理台回收 delete 权限
测试台,这下就不⾏了
drop删除表
最后就试⼀试删除这个账户
成功。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。