小编给大家分享一下mysql用户和权限的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
用户的创建
方法一:
create user lxm;
set password for lxm=PASSWORD('123456');
alter user lxm password expire; 设置用户密码过期。
select user, host, password from mysql.user; 查询账号信息
方法二:
在授权时会默然创建用户
grant select on test.table1 to lxm@192.168.2.154 identified by '123456';
方法三:
直接修改user表,修改完后记得flush privileges。
insert into mysql.user(host,user,password,ssl_cipher,x509_issuer,x509_subject) values ('192.168.2.154','lxm','123456','','','');
update mysql.user set password=password('lxm') where user='lxm' and host='%'; 修改用户密码
用户的删除:
drop user lxm@192.168.2.154, lxm2@192.168.2.154, lxm3@192.168.2.154; 可以一次删除多个用户
drop user不会自动中止已连接的用户会话。
=========================================================================
权限
mysql中权限的粒度由粗到细分别是全局,数据库,表,列,程序。可以用一句话来概括:分配某个用户从某台机器连接进来访问某个数据库下的某张表的某个列的某部分记录的权限。
1、全局级别
与全局相关的权限信息记录在mysql.user表中。这个全局权限不是指拥有所有的权限,它具体指的是拥有该MYSQL服务器所有数据库对象的权限。
2、数据库级别
与数据库级别的权限信息记录在mysql.db表中。
3、表对象级别
表对象的授权信息记录在mysql.tables_priv字典表中。
4、列级别
列级权限是mysql权限体系中的最细粒度。权限信息记录在mysql.column_priv表中。
grant select (col1) on test.table1 to lxm; 授予用户lxm查询test.table1表中col1列的权限。
grant insert (col1) on test.table1 to lxm; 授予用户lxm向test.table1表中col1列添加值的权限。
5、程序
mysql中的程序指procedure和function两类对象。对已存在的程序,可以授予执行(EXECUTE),修改(ALTER ROUTINE),授予(GRANT)权限。这些权限信息记录在表mysql.procs_priv中。
查询用户权限:
show grants for lxm@’192.168.2.154; 查询用户lxm所拥有的权限
show grants; 查询当前用户的所有权限
回收权限:
revoke select on test.table1 from lxm@192.168.2.154;
revoke all privileges,grant option from user; 回收用户的所有权限
权限变更何时生效:
如果是用mysql提供的命令来执行修改,比如GRANT,REVOKE,SET PASSWORD,RENAME USER,则权限变更立即生效。
如果是手动修改字典表的方式,比如INSERT,UPDATE,DELETE,则需要重启mysql服务,或者手动触发授权表(GRANT TABLES)重新装载到内存中,即flush privileges。
权限变更对客户端的影响:
表或者列粒度的权限改变将在客户端执行下一次操作时生效。
数据库级别的权限将在客户端切换数据库时生效。
全局权限和密码修改,当客户端下一次连接时生效。
在LINUX/UNIX系统下,使用mysql命令行工具执行的所有操作,都会被记录到一个名为.mysql_history的文件中。该文件默认保存在当前用户的根目录下。可以通过修改参数MYSQL_HISTFILE来更改路径。
权限类型列表:
create user 可以执行create user,drop user,rename user,revoke all privileges语句
create 创建数据库或者表对象 *拥有create权限的用户只能创建和查看自己新建的数据库或表对象,而无法删除。
create view 可以创建/修改视图
select 查找
insert 执行insert语句
update 允许执行update操作
delete 可以执行delete语句
drop 可以删除表/视图/数据库
alter 执行alter table操作
index 创建或者删除索引
create tablespace 创建,修改或者删除表空间以及日志文件组
create temporary tables 通过执行create temporary table语句创建临时表
lock tables 对拥有select权限的表对象执行lock tables
trigger 允许创建或者删除触发器
create routine 创建存储过程和函数
alter routine 修改或者删除存储过程和函数
execute 允许用户可以执行存储程序
replication client 允许用户连接复制环境中的master/slave
replication slave 允许复制环境的slave端从master端读取数据
grant option 允许将授予的权限再由该用户授予给其他用户
all privileges 授予所有除grant option外的权限
usage 指没有权限(no privileges),但是还是可以登录的。该权限是默认给予的,无法被回收。
event 允许使用event对象
file 允许用户读写文件
proxy 可以使用proxy
注:all privileges和grant option两类权限比较特殊,在授予和回收时都不能与其他权限同时操作。
max_queries_per_hour 用户每小时执行的查询语句数量
max_update_per_hour 用户每小时执行的更新语句数量
max_connections_per_hour 用户每小时可以连接的最大次数
max_user_connections 用户同时连接服务器的数量
其他:
在表级对象你可以赋予的权限有select、insert、update、delete、create、drop、grant option、index、以及alter。
execution、file、process、reload、replication client、replication slave,show databases,shutdown,以及super这些权限都是管理权限,只能被全局赋予,即用on *.*的方式。
以上是“mysql用户和权限的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。