mysql新增⽤户,并赋予⽤户权限
在稍微⼤⼀些的公司⾥⾯都是进⾏着明显的权限管理,特别是进⾏数据库操作。如果赋予⽤户过多权限,⽤户⼀不⼩⼼进⾏删库操作,就会造成巨⼤影响。因此公司进⾏项⽬都会创建专门的⽤户指定其权限只能控制数据库进⾏有限的操作,不会赋予root权限进⾏操作。
MySQL 在安装时会⾃动创建⼀个名为 mysql 的数据库,mysql 数据库中存储的都是⽤户权限表。⽤户登录以后,MySQL 会根据这些权限表的内容为每个⽤户赋予相应的权限。user 表是MySQL 中最重要的⼀个权限表,⽤来记录允许连接到服务器的账号信息。在 user 表⾥启⽤的所有权限都是全局级的,适⽤于所有数据库。user 表中的字段⼤致可以分为 4 类,分别是⽤户列、权限列、安全列和资源控制列。
SHOW columns FROM mysql.user;
在 MySQL 数据库中,权限表除了user表外,还有db表、tables_priv表、columns_priv表和procs_priv表。
tables_priv表⽤来对单个表进⾏权限设置,columns_priv表⽤来对单个数据列进⾏权限设置,procs_priv表可以对存储过程和存储函数进⾏权限设置。
创建⽤户
# 语法格式为 [@'host'] host 为'localhost'表⽰本地登录⽤户,host 为 IP地址或 IP 地址区间,表⽰指定IP地址的主机可登录,host 为"%",表⽰所有主机都可登录,省略代表所有主机CREATE USER 'username'[@'host'] IDENTIFIED BY 'password';
# eg. 常见 local_user ⽤户可以在所有主机登录,密码为123456
CREATE USER 'local_user'@‘%’ IDENTIFIED BY '123456';
# eg. 创建 local_user 只允许在本地登录
CREATE USER 'local_user'@'localhost' IDENTIFIED BY '123456';
删除⽤户
# 语法格式
DROP USER 'username'@'host';
# eg. 删除本地⽤户 local_user
DROP USER 'local_user'@'localhost';
修改⽤户
RENAME USER <'old username'@'host'> TO <'new username'@'host'>
查看⽤户权限
# 可以通过查询 user 表获取语法格式为
SELECT privileges|* FROM user WHERE `user` = 'username';
# eg. 查看 local_user 的权限
SELECT * FROM user WHERE `user` = 'local_user';
# 也可以⽤ SHOW GRANTS 查看
SHOW GRANTS FOR 'username' [@host];
# eg.
SHOW GRANTS FOR local_user;
赋予⽤户权限
# 语法格式
GRANT privileges ON database.table TO 'username'@'host' [IDENTIFIED BY 'password'] [WITH GRANT OPTION]; # [IDENTIFIED BY 'password']在MySQL8.0+⽆法使⽤
# eg. 赋予 local_user 在所有主机的所有权限,但不包含给其他账号赋予权限的权限
java乘法口诀如何编写GRANT all ON *.* TO 'local_user'@'%';
# 刷新权限权限更新后刷新才会起作⽤
FLUSH PRIVILEGES;
GRANT命令说明:
priveleges (权限列表),可以是all, 表⽰所有权限,也可以是select,update等权限,多个权限的名词,相互之间⽤逗号分开。
ON ⽤来指定权限针对哪些库和表。格式为数据库 .表名,点号前⾯⽤来指定数据库名,点号后⾯⽤来
指定表名,*.* 表⽰所有数据库所有表。
TO 表⽰将权限赋予某个⽤户, 格式为username@host,@前⾯为⽤户名,@后⾯接限制的主机,可以是IP、IP段、域名以及%,%表⽰任何地⽅。注意:这⾥%有
的版本不包括本地,以前碰到过给某个⽤户设置了%允许任何地⽅登录,但是在本地登录不了,这个和版本有关系,遇到这个问题再加⼀个localhost的⽤户就可以
了。
IDENTIFIED BY 指定⽤户的登录密码,该项可以省略(某些版本下回报错,必须省略)。
WITH GRANT OPTION 这个选项表⽰该⽤户可以将⾃⼰拥有的权限授权给别⼈。注意:经常有⼈在创建操作⽤户的时候不指定WITH GRANT OPTION选项导致后
来该⽤户不能使⽤GRANT命令创建⽤户或者给其它⽤户授权。
备注:可以使⽤GRANT重复给⽤户添加权限,权限叠加,⽐如你先给⽤户添加⼀个select权限,然后⼜给⽤户添加⼀个insert权限,那么该⽤户就同时拥有了select
和insert权限。
授权原则说明:
只授予能满⾜需要的最⼩权限,防⽌⽤户⼲坏事。⽐如⽤户只是需要查询,那就只给select权限就可以了,不要给⽤户赋予update、insert或者delete权限。
创建⽤户的时候限制⽤户的登录主机,⼀般是限制成指定IP或者内⽹IP段。
初始化数据库的时候删除没有密码的⽤户。安装完数据库的时候会⾃动创建⼀些⽤户,这些⽤户默认没有密码。
为每个⽤户设置满⾜密码复杂度的密码。
定期清理不需要的⽤户。回收权限或者删除⽤户。
权限列表
grant 权限 on 数据库.表 to '⽤户'@'IP地址' [WITH GRANT OPTION];
//all privileges 除grant外的所有权限
select 仅查权限
mysql查看所有存储过程
select,insert查和插⼊权限 ...
usage⽆访问权限
myeclipse和eclipse哪个好用alter使⽤alter table
alter routine使⽤alter procedure和drop procedure
create 使⽤create table
create routine使⽤create procedure
create temporary tables使⽤create temporary tables
create user使⽤create user、drop user、rename user和revoke all privileges create view使⽤create view
delete 使⽤delete
drop使⽤drop table
execute 使⽤call和存储过程
file使⽤select into outfile 和 load data infile
grant option使⽤grant 和 revoke
index 使⽤index
insert 使⽤insert
lock tables使⽤lock table
process 使⽤show full processlist
select使⽤select
show databases 使⽤show databases
show view 使⽤show view
update 使⽤update
reload 使⽤flush
amazeui框架视频教程linux系统编程考试
shutdown 使⽤mysqladmin shutdown(关闭MySQL)
super ??使⽤change master、
kill、logs、purge、master和set global。还允许mysqladmin调试登陆replication client服务器位置的访问
replication slave 由复制从属使⽤
// 数据库名.* 数据库中的所有
数据库名.表 指定数据库中的某张表北京计算机学校有哪些
数据库名.存储过程 指定数据库中的存储过程
*.* 所有数据库
删除⽤户权限
revoke 权限 on 数据库.表 from '⽤户'@'IP地址';
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论