Mysql中grant命令详解
1.远程登录mysql
mysql -h ip -u root -p 密码
2.创建⽤户
格式:grant 权限 on 数据库.* to ⽤户名@登录主机 identified by “密码”;
例1:增加⼀个test1⽤户,密码为123456,可以在任何主机上登录,并对所有数据库有查询,增加,修改和删除的功能。需要在mysql 的root⽤户下进⾏
mysql>grant select,insert,update,delete on *.* to test1@”%” identified by “123456″;
mysql>flush privileges;
例2:增加⼀个test2⽤户,密码为123456,只能在192.168.2.12上登录,并对数据库student有查询,增加,修改和删除的功能。需要在mysql的root⽤户下进⾏
mysql>grant select,insert,update,delete on student.* to test2@192.168.2.12 identified by “123456″;
mysql>flush privileges;
例3:授权⽤户test3拥有数据库student的所有权限
mysql>grant all privileges on student.* to test3@localhost identified by ’123456′;
mysql>flush privileges;
3.修改⽤户密码
mysql>update mysql.user set password=password(’123456′) where User=’test1′ and Host=’localhost’;
mysql>flush privileges;
4.删除⽤户
mysql>delete from user where user=’test2′ and host=’localhost’;
mysql>flush privileges;
5.删除数据库和删除表
mysql>drop database 数据库名;
mysql>drop table 表名;
6.删除账户及权限
drop user ⽤户名@’%’
drop user ⽤户名@localhost
**************************************************************************************
grant 详细解析如下:
**************************************************************************************
MySQL 赋予⽤户权限命令的简单格式可概括为:
grant 权限 on 数据库对象 to ⽤户
⼀、grant 普通数据⽤户,查询、插⼊、更新、删除 数据库中所有表数据的权利。
grant select on testdb.* to common_user@’%’
grant insert on testdb.* to common_user@’%’
grant update on testdb.* to common_user@’%’
grant delete on testdb.* to common_user@’%’mysql中delete语句
或者,⽤⼀条 MySQL 命令来替代:
grant select, insert, update, delete on testdb.* to common_user@’%’
⼆、grant 数据库开发⼈员,创建表、索引、视图、存储过程、函数。。。等权限。
grant 创建、修改、删除 MySQL 数据表结构权限。
grant create on testdb.* to developer@’192.168.0.%’;
grant alter on testdb.* to developer@’192.168.0.%’;
grant drop on testdb.* to developer@’192.168.0.%’;
grant 操作 MySQL 外键权限。
grant references on testdb.* to developer@’192.168.0.%’;
grant 操作 MySQL 临时表权限。
grant create temporary tables on testdb.* to developer@’192.168.0.%’;
grant 操作 MySQL 索引权限。
grant index on testdb.* to developer@’192.168.0.%’;
grant 操作 MySQL 视图、查看视图源代码 权限。
grant create view on testdb.* to developer@’192.168.0.%’;
grant show view on testdb.* to developer@’192.168.0.%’;
grant 操作 MySQL 存储过程、函数 权限。
grant create routine on testdb.* to developer@’192.168.0.%’; — now, can show procedure status gra
nt alter routine on testdb.* to developer@’192.168.0.%’; — now, you can drop a procedure grant execute on testdb.* to developer@’192.168.0.%’;
三、grant 普通 DBA 管理某个 MySQL 数据库的权限。
grant all privileges on testdb to dba@’localhost’
其中,关键字 “privileges” 可以省略。
四、grant ⾼级 DBA 管理 MySQL 中所有数据库的权限。
grant all on *.* to dba@’localhost’
五、MySQL grant 权限,分别可以作⽤在多个层次上。
1. grant 作⽤在整个 MySQL 服务器上:
grant select on *.* to dba@localhost; — dba 可以查询 MySQL 中所有数据库中的表。
grant all on *.* to dba@localhost; — dba 可以管理 MySQL 中的所有数据库
2. grant 作⽤在单个数据库上:
grant select on testdb.* to dba@localhost; — dba 可以查询 testdb 中的表。
3. grant 作⽤在单个数据表上:
grant select, insert, update, delete ders to dba@localhost;
4. grant 作⽤在表中的列上:
grant select(id, se, rank) on testdb.apache_log to dba@localhost;
5. grant 作⽤在存储过程、函数上:
grant execute on procedure testdb.pr_add to ‘dba’@’localhost’
grant execute on function testdb.fn_add to ‘dba’@’localhost’
六、查看 MySQL ⽤户权限
查看当前⽤户(⾃⼰)权限:
show grants;
查看其他 MySQL ⽤户权限:
show grants for dba@localhost;
七、撤销已经赋予给 MySQL ⽤户权限的权限。
revoke 跟 grant 的语法差不多,只需要把关键字 “to” 换成 “from” 即可:
grant all on *.* to dba@localhost;
revoke all on *.* from dba@localhost;
⼋、MySQL grant、revoke ⽤户权限注意事项
1. grant, revoke ⽤户权限后,该⽤户只有重新连接 MySQL 数据库,权限才能⽣效。
2. 如果想让授权的⽤户,也可以将这些权限 grant 给其他⽤户,需要选项 “grant option“
grant select on testdb.* to dba@localhost with grant option;
这个特性⼀般⽤不到。实际中,数据库权限最好由 DBA 来统⼀管理。
Category: Post
You can follow any responses to this entry via RSS.
Comments are currently closed, but you can trackback from your own site.
========================================================================= 1.创建⽤户并授权
grant语句的语法:
grant privileges (columns) on what to user identified by “password” with grant option
要使⽤该句型,需确定字段有:
privileges 权限指定符权限允许的操作
alter 修改表和索引
create 创建数据库和表
delete 删除表中已有的记录
drop 抛弃(删除)数据库和表
index 创建或抛弃索引
insert 向表中插⼊新⾏
reference 未⽤
select 检索表中的记录
update 修改现存表记录
file 读或写服务器上的⽂件
process 查看服务器中执⾏的线程信息或杀死线程
reload 重载授权表或清空⽇志、主机缓存或表缓存。
shutdown 关闭服务器
all 所有;
all privileges同义词
usage 特殊的“⽆权限”权限
以上权限分三组:
第⼀组:适⽤于数据库、表和列如:alter create delete drop index insert select update
第⼆组:数管理权限 它们允许⽤户影响服务器的操作 需严格地授权 如:file process reload shut*
第三组:权限特殊 all意味着“所有权限” uasge意味着⽆权限,即创建⽤户,但不授予权限
columns
权限运⽤的列(可选)并且你只能设置列特定的权限。如果命令有多于⼀个列,应该⽤逗号分开它们。
what
权限运⽤的级别。权限可以是全局,定数据库或特定表.
user
权限授予的⽤户,由⼀个⽤户名和主机名组成,许两个同名⽤户从不同地⽅连接.缺省:mysql⽤户password
赋予⽤户的⼝令(可选),如果你对⽤户没有指定identified by⼦句,该⽤户⼝令不变.
⽤identified by时,⼝令字符串⽤改⽤⼝令的字⾯含义,grant将为你编码⼝令.
注:set password使⽤password()函数
with grant option
⽤户可以授予权限通过grant语句授权给其它⽤户(可选)
实例讲解:
grant all on db_book.* to huaying@koowo identified by “yeelion” 只能在本地连接
grant all on db_book.* to huaying@vpn.koowo identified by “yeeliong” 允许从此域连接
grant all on db_book.* to huaying@% identified by “yeelion” 允许从任何主机连接 注:”%”字符起通配符作⽤,与like模式匹配的含义相同。
grant all on db_book.* to huaying@%.koowo identified by “yeelion”; 允许huaying从koowo域的任何主机连接
grant all on db_book.* to huaying@192.168.1.189 identified by “yeelion”
grant all on db_book.* to huaying@192.168.1.% identified by “yeelion”
grant all on db_book.* to huaying@192.168.1.0/17 identified by “yeelion”
允许从单IP 段IP或⼀⼦⽹IP登陆
注:有时 ⽤户@IP 需⽤引号 如”huaying@192.168.1.0/17″
grant all on *.* to huaying@localhost identified by “yeelion” with grant option
添加超级⽤户huaying 可在本地登陆做任何操作.
grant reload on *.* to huaying@localhost identified by “yeelion” 只赋予reload权限
grant all on db_book to huaying@koowo indetified by “yeelion” 所有权限
grant select on db_book to huaying@% indetified by “yeelion” 只读权限
grant select,insert,delete,update on db_book to huaying@koowo indetified by “yeelion”
只有select,insert,delete,update的权限
grant select on db_book.storybook to huaying@localhost indetified by “yeelion” 只对表
grant update (name) on db_book.storybook to huaying@localhost 只对表的name列 密码不变
grant update (id,name,author) on db_book.storybook to huaying@localhost 只对表的多列
grant all on book.* to “”@koowo 允许koowo域中的所有⽤户使⽤库book
grant all on book.* to huaying@%.koowo indetified by “yeelion” with grant option
允许huaying对库book所有表的管理员授权.
2.撤权并删除⽤户
revoke的语法类似于grant语句
to⽤from取代,没有indetifed by和with grant option⼦句. 如下:
revoke privileges (columns) on what from user
user:必须匹配原来grant语句的你想撤权的⽤户的user部分。
privileges:不需匹配,可以⽤grant语句授权,然后⽤revoke语句只撤销部分权限。
revoke语句只删权限不删⽤户,撤销了所有权限后user表中⽤户记录保留,⽤户仍然可以连接服务器.
要完全删除⼀个⽤户必须⽤⼀条delete语句明确从user表中删除⽤户记录:
delete from user where user=”huaying”
flush privileges; 重载授权表
注:使⽤grant和revoke语句时,表⾃动重载,⽽你直接修改授权表时不是.
实例:
1.创建数据库
CREATE DATABASE `fypay` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
2.为创建的数据库增加⽤户fypay
grant create,select,insert,update,delete,drop,alter on fypay.* to fypay@”%” identified by “testfpay”;
3.删除fypay⽤户
delete from user where user=”fypay”
drop user fypay@localhost
4.刷新数据库
flush privileges;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论