加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_丽江站长网 (http://www.0888zz.com/)- 科技、建站、数据工具、云上网络、机器学习!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

mysql用户和权限的示例分析

发布时间:2021-12-25 04:47:21 所属栏目:MySql教程 来源:互联网
导读:小编给大家分享一下mysql用户和权限的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! 用户的创建 方法一: create user lxm; set password for lxm=PASSWORD(123
小编给大家分享一下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用户和权限的示例分析”这篇文章的所有内容,感谢各位的阅读!

(编辑:应用网_丽江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读