将指定
操作对象的指定操作权限授予指定的用户; 发出该 GRANT语句的可以是数据库管理员,也可以是该数据库对象的创建者;
查看用户自己权限
SHOW GRANTS;
查看其他用户权限
SHOW GRANTS FOR 'user'@'host';
Tips: host 可以使用通配符 %;如 'user'@'%', 'user'@'192.168.0.%';
语法
GRANT 权限 ON 数据库对象 TO 用户 [WITH GRANT OPTION];
刷新
FLUSH PRIVILEGES;
授予 super用户所有权限
GRANT ALL [PRIVILEGES] ON . TO 'user'@'%';
授予用户 INSERT 权限
CREATE INSERT ON db_name.* TO 'user'@'%' IDENTIFIED BY 'newpasswd';
授予用户 SELECT, UPDATE, DELETE 权限
GRANT SELECT, UPDATE, DELETE ON db_name.* TO 'user'@'localhost'
刷新
FLUSH PRIVILEGES;
Tips
WITH GRANT OPTION: 表示是否能传播其权限;(授权命令是由数据库管理员使用的)
WITH GRANT OPTION ,则获得该权限的用户可以把这种权限授予其他用户;但不允许循环传授,即被授权者不能把权限在授回给授权者或祖先;GRANT 关键字之后指定 一个或多个 特权。如果要授予用户多个权限,则每个权限都将以 逗号 分隔(见下表中的特权列表);*.* ),数据库( database.* ),表( database.table )和列级别;逗号 分隔列的列表;IDENTIFIED BY 允许为用户设置新密码;REVOKE 权限 ON 数据库对象 FROM 用户 [CASCADE | RESTRICT];
回收全部权限
REVOKE ALL [PRIVILEGES] ON . FROM 'user'@'%';
回收 INSERT 权限
REVOKE INSERT ON db_name.* FROM 'user'@'%';
Tips
CASCADE | RESTRICT 当检测到关联的特权时,RESTRICT(默认值) 导致REVOKE失败;CASCADE 可以回收所有这些关联的特权;(如U1授权U2, U2授权U3,此时使用级联(CASCADE)收回了U2和U3的权限,否则系统将拒绝执行该命令)下表说明了可用于GRANT和REVOKE语句的所有可用权限:
| 权限 | 含义 | 全局 | 数据库 | 表 | 列 | 过程 | 代理 |
|---|---|---|---|---|---|---|---|
ALL [PRIVILEGES] |
授予除了grant option之外的指定访问级别的所有权限 | ||||||
ALTER |
允许用户使用alter table语句 | X | X | X | |||
ALTER ROUTINE |
允许用户更改或删除存储程序, 可以使用{alter | drop} | X | X | X | |||
CREATE |
允许用户创建数据库和表 | X | X | X | |||
CREATE ROUTINE |
可以使用{create | alter | drop} | X | |||||
CREATE TABLESPACE |
允许用户创建,更改或删除表空间和日志文件组 | X | |||||
CREATE TEMPORARY TABLES |
允许用户使用create temporary table创建临时表 | X | X | ||||
CREATE USER |
允许用户使用create user,drop user,rename user和revoke all privileges语句 | X | |||||
CREATE VIEW |
允许用户创建或修改视图 | X | X | X | |||
DELETE |
允许用户使用delete | X | X | X | |||
DROP |
允许用户删除数据库,表和视图 | X | X | X | |||
EVENT |
能够使用事件计划的事件 | X | X | ||||
EXECUTE |
允许用户执行存储过程/存储函数 | X | X | ||||
FILE |
允许用户读取数据库目录中的任何文件 | X | |||||
GRANT OPTION |
允许用户有权授予或撤销其他帐户的权限 | X | X | X | X | X | |
INDEX |
允许用户创建或删除索引 | X | X | X | |||
INSERT |
允许用户使用insert语句 | X | X | X | X | ||
LOCK TABLES |
允许用户在具有select权限的表上使用lock tables | X | X | ||||
PROCESS |
允许用户使用show processlist语句查看所有进程 | X | |||||
PROXY |
启用用户代理 | ||||||
REFERENCES |
允许用户创建外键 | X | X | X | X | ||
RELOAD |
允许用户使用flush操作 | X | |||||
REPLICATION CLIENT |
允许用户查询主服务器或从服务器的位置 | X | |||||
REPLICATION SLAVE |
允许用户使用复制从站从主机读取二进制日志事件 | X | |||||
SELECT |
允许用户使用select语句 | X | X | X | X | ||
SHOW DATABASES |
允许用户显示所有数据库 | X | |||||
SHOW VIEW |
允许用户使用show create view语句 | X | X | X | |||
SHUTDOWN |
允许用户使用mysqladmin shutdown命令 | X | |||||
SUPER |
允许用户使用其他管理操作,如change master to,kill,purge binary logs,set global和mysqladmin命令 | X | |||||
TRIGGER |
允许用户使用trigger操作 | X | X | X | |||
UPDATE |
允许用户使用update语句 | X | X | X | X | ||
USAGE |
连接(登陆)权限(默认授予且不能被回收) |
创建用户
CREATE USER 'user'@'%' IDENTIFIED BY 'newpasswd';
重命名用户
CREATE USER 'old_user'@'%' TO 'new_user'@'%';
删除用户
查询用户
SELECT user,host FROM mysql.user;
删除用户
DROP USER 'user'@'host';
查看权限
SHOW GRANTS [FOR 'user'@'host'];
刷新权限
FLUSH PRIVILEGES;
用法
GRANT 权限 ON 数据库对象 TO 用户 [WITH GRANT OPTION]; -- 授权
REVOKE 权限 ON 数据库对象 FROM 用户 [CASCADE | RESTRICT]; -- 取消授权
Tips: REVOKE 跟 GRANT 的语法差不多,只需要把关键字 TO 换成 FROM 即可
栗子
添加权限(和已有权限合并,不会覆盖已有权限)
-- 添加普通数据用户,查询、插入、更新、删除 数据库中所有表数据的权利
grant select, insert, update, delete on testdb.* to common_user@'%'
-- 添加数据库开发人员,创建表、索引、视图、存储过程、函数。。。等权限
grant create, alter, drop on testdb.* to developer@'192.168.0.%';
-- 添加操作 MySQL 外键权限
grant references on testdb.* to developer@'192.168.0.%';
-- 添加操作 MySQL 临时表权限
grant create temporary tables on testdb.* to developer@'192.168.0.%';
-- 添加操作 MySQL 索引权限
grant index on testdb.* to developer@'192.168.0.%';
-- 添加操作 MySQL 视图、查看视图源代码 权限
grant create, show view on testdb.* to developer@'192.168.0.%';
删除授权
-- 删除普通数据用户,查询、插入、更新、删除 数据库中所有表数据的权利
revoke select, insert, update, delete on testdb.* from common_user@'%'
-- 删除数据库开发人员,创建表、索引、视图、存储过程、函数。。。等权限
revoke create, alter, drop on testdb.* from developer@'192.168.0.%';
-- 删除操作 MySQL 外键权限
revoke references on testdb.* from developer@'192.168.0.%';
-- 删除操作 MySQL 临时表权限
revoke create temporary tables on testdb.* from developer@'192.168.0.%';
-- 删除操作 MySQL 索引权限
revoke index on testdb.* from developer@'192.168.0.%';
-- 删除操作 MySQL 视图、查看视图源代码 权限
revoke create, show view on testdb.* from developer@'192.168.0.%';
DBA 权限管理
-- 普通 DBA 管理某个 MySQL 数据库的权限
grant all [privileges] on testdb to dba@'localhost'
-- 高级 DBA 管理 MySQL 中所有数据库的权限。
grant all on *.* to dba@'localhost'
细密度授权
-- 作用在整个 MySQL 服务器上
grant select on *.* to dba@localhost; -- dba 可以查询 MySQL 中所有数据库中的表
grant all on *.* to dba@localhost; -- dba 可以管理 MySQL 中的所有数据库
-- 作用在单个数据库上
grant select on testdb.* to dba@localhost; -- dba 可以查询 testdb 中的表。
-- 作用在单个数据表上
grant select, insert, update, delete on testdb.t_orders to dba@localhost;
-- 作用在表中的列上
grant select(id, username, sex) on testdb.t_user to dba@localhost;
权限传播与收回
-- 授权 dba 查询权限,并且可以将这些权限 grant 给其他用户
grant select on testdb.* to dba@localhost with grant option;
-- 收回 dba 和其传播用户的权限
revoke select on testdb.* from dba@localhost cascade;
Tips: 权限发生改变后, 需要重新加载一下权限,将权限信息从内存中写入数据库;
Via
我想用ruby编写一个小的命令行实用程序并将其作为gem分发。我知道安装后,Guard、Sass和Thor等某些gem可以从命令行自行运行。为了让gem像二进制文件一样可用,我需要在我的gemspec中指定什么。 最佳答案 Gem::Specification.newdo|s|...s.executable='name_of_executable'...endhttp://docs.rubygems.org/read/chapter/20 关于ruby-在Ruby中编写命令行实用程序
文章目录一、概述简介原理模块二、配置Mysql使用版本环境要求1.操作系统2.mysql要求三、配置canal-server离线下载在线下载上传解压修改配置单机配置集群配置分库分表配置1.修改全局配置2.实例配置垂直分库水平分库3.修改group-instance.xml4.启动监听四、配置canal-adapter1修改启动配置2配置映射文件3启动ES数据同步查询所有订阅同步数据同步开关启动4.验证五、配置canal-admin一、概述简介canal是Alibaba旗下的一款开源项目,Java开发。基于数据库增量日志解析,提供增量数据订阅&消费。Git地址:https://github.co
我从Ubuntu服务器上的RVM转移到rbenv。当我使用RVM时,使用bundle没有问题。转移到rbenv后,我在Jenkins的执行shell中收到“找不到命令”错误。我内爆并删除了RVM,并从~/.bashrc'中删除了所有与RVM相关的行。使用后我仍然收到此错误:rvmimploderm~/.rvm-rfrm~/.rvmrcgeminstallbundlerecho'exportPATH="$HOME/.rbenv/bin:$PATH"'>>~/.bashrcecho'eval"$(rbenvinit-)"'>>~/.bashrc.~/.bashrcrbenvversions
我有一个问题。我想从另一个ruby脚本运行一个ruby脚本并捕获它的输出信息,同时让它也输出到屏幕。亚军#!/usr/bin/envrubyprint"Enteryourpassword:"password=gets.chompputs"Hereisyourpassword:#{password}"我运行的脚本文件:开始.rboutput=`runner`putsoutput.match(/Hereisyour(password:.*)/).captures[0].to_s正如您在此处看到的那样,存在问题。在start.rb的第一行,屏幕是空的。我在运行程序中看不到“输入您的密
有这样的事吗?我想在Ruby程序中使用它。 最佳答案 试试这个http://csl.sublevel3.org/jp2a/此外,Imagemagick可能还有一些东西 关于ruby-是否有将图像文件转换为ASCII艺术的命令行程序或库?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/6510445/
如何在Ruby的if语句中检查bash命令的返回值(true/false)。我想要这样的东西,if("/usr/bin/fswscell>/dev/null2>&1")has_afs="true"elsehas_afs="false"end它会提示以下错误含义,它总是返回true。(irb):5:warning:stringliteralincondition正确的语法是什么?更新:/usr/bin/fswscell寻找afs安装和运行状态。它会抛出这样的字符串,Thisworkstationbelongstocell如果afs没有运行,命令以状态1退出 最
我看到其他人也遇到过类似的问题,但没有一个解决方案对我有用。0.3.14gem与其他gem文件一起存在。我已经完全按照此处指示完成了所有操作:https://github.com/brianmario/mysql2.我仍然得到以下信息。我不知道为什么安装程序指示它找不到include目录,因为我已经检查过它存在。thread.h文件存在,但不在ruby目录中。相反,它在这里:C:\RailsInstaller\DevKit\lib\perl5\5.8\msys\CORE\我正在运行Windows7并尝试在Aptana3中构建我的Rails项目。我的Ruby是1.9.3。$gemin
在几个项目中,我希望有一个类似rakeserver的rake任务,它将通过任何需要的方式开始为该应用程序提供服务。这是一个示例:task:serverdo%x{bundleexecrackup-p1234}end这行得通,但是当我准备停止它时,按Ctrl+c并没有正常关闭;它中断了Rake任务本身,它说rakeaborted!并给出堆栈跟踪。在某些情况下,我必须执行Ctrl+c两次。我可能可以用Signal.trap写一些东西来更优雅地中断它。有没有更简单的方法? 最佳答案 trap('SIGINT'){puts"Yourmessa
关于SSHkit-Github它说:Allbackendssupporttheexecute(*args),test(*args)&capture(*args)来自SSHkit-Rubydoc,我明白execute实际上是test的别名?test之间有什么区别?,execute,capture在Capistrano/SSHKit中我应该什么时候使用? 最佳答案 执行只是执行命令。使用非0退出引发错误。测试方法的行为与execute完全相同,但是它返回bool值(true如果命令以0退出,而false否则)。它通常用于控制任务中的流程
我在目录“C:\DocumentsandSettings\test.exe”中有一个文件,但是当我用单引号编写命令时`C:\DocumentsandSettings\test.exe(我无法在此框中显示),用于在Ruby中执行命令,我无法这样做,我收到的错误是找不到文件或目录。我尝试用“//”和“\”替换“\”,但似乎没有任何效果。我也使用过系统、IO.popen和exec命令,但所有的努力都是徒劳的。exec命令还使程序退出,这是我不想发生的。提前致谢。 最佳答案 反引号环境就像双引号,所以反斜杠用于转义。此外,Ruby会将空格解