共计 3016 个字符,预计需要花费 8 分钟才能阅读完成。
丸趣 TV 小编给大家分享一下 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 用户和权限的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注丸趣 TV 行业资讯频道!