mysql用户和权限的示例分析

发布时间:2021-11-06 11:05:27 作者:小新
来源:亿速云 阅读:166

小编给大家分享一下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用户和权限的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

推荐阅读:
  1. MySQL用户和权限管理
  2. MySQL 用户和权限管理

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

mysql

上一篇:mysqldump常用备份恢复方法有哪些

下一篇:怎么从0到1设计一个MQ消息队列

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》