天天看点

mysql 创建用户,指定数据库,表的读写权限常用命令

作者:琴岛蓝

老是记不住mysql命令,然后网上找了点资料,然后记录下来,方便查询使用

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 [email protected] identified by “123456″;
mysql>flush privileges;           

添加用户时可能会报 Your password does not satisfy the current policy requirements

可借鉴另一篇Mysql密码策略问题 https://www.cnblogs.com/livedian/p/12743031.html

例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 命令来替代:

grant select, insert, update, delete on testdb.* to common_user@’%’           

二、grant 数据库开发人员,创建表、索引、视图、存储过程、函数。。。等权限。

mysql 创建用户,指定数据库,表的读写权限常用命令
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
grant alter routine on testdb.* to developer@’192.168.0.%’; — now, you can drop a procedure
grant execute on testdb.* to developer@’192.168.0.%’;           
mysql 创建用户,指定数据库,表的读写权限常用命令

三、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 on testdb.orders 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 用户权限注意事项

mysql 创建用户,指定数据库,表的读写权限常用命令
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.           
mysql 创建用户,指定数据库,表的读写权限常用命令

=========================================================================

1.创建用户并授权

grant语句的语法:
grant privileges (columns) on what to user identified by “password” with grant option           

要使用该句型,需确定字段有:

mysql 创建用户,指定数据库,表的读写权限常用命令
privileges 权限指定符权限允许的操作
alter 修改表和索引
create 创建数据库和表
delete 删除表中已有的记录
drop 抛弃(删除)数据库和表
index 创建或抛弃索引
insert 向表中插入新行
reference 未用
select 检索表中的记录
update 修改现存表记录
file 读或写服务器上的文件
process 查看服务器中执行的线程信息或杀死线程
reload 重载授权表或清空日志、主机缓存或表缓存。
shutdown 关闭服务器
all 所有;
all privileges同义词
usage 特殊的“无权限”权限           
mysql 创建用户,指定数据库,表的读写权限常用命令

以上权限分三组:

第一组:适用于数据库、表和列如:alter create delete drop index insert select update

第二组:数管理权限 它们允许用户影响服务器的操作 需严格地授权 如:file process reload shut*

第三组:权限特殊 all意味着“所有权限” uasge意味着无权限,即创建用户,但不授予权限

mysql 创建用户,指定数据库,表的读写权限常用命令
columns
权限运用的列(可选)并且你只能设置列特定的权限。如果命令有多于一个列,应该用逗号分开它们。
what
权限运用的级别。权限可以是全局,定数据库或特定表.
user
权限授予的用户,由一个用户名和主机名组成,许两个同名用户从不同地方连接.缺省:mysql用户password           
mysql 创建用户,指定数据库,表的读写权限常用命令

赋予用户的口令(可选),如果你对用户没有指定identified by子句,该用户口令不变.

用identified by时,口令字符串用改用口令的字面含义,grant将为你编码口令.

注:set password使用password()函数
with grant option           

用户可以授予权限通过grant语句授权给其它用户(可选)

实例讲解:

mysql 创建用户,指定数据库,表的读写权限常用命令
grant all on db_book.* to [email protected] identified by “yeelion”   只能在本地连接
grant all on db_book.* to [email protected] identified by “yeeliong”  允许从此域连接
grant all on db_book.* to huaying@% identified by “yeelion”   允许从任何主机连接 注:”%”字符起通配符作用,与like模式匹配的含义相同。
grant all on db_book.* to huaying@%.koowo.com identified by “yeelion”;  允许huaying从koowo.com域的任何主机连接
grant all on db_book.* to [email protected] identified by “yeelion”
grant all on db_book.* to [email protected].% identified by “yeelion”
grant all on db_book.* to [email protected]/17 identified by “yeelion”           
mysql 创建用户,指定数据库,表的读写权限常用命令

允许从单IP 段IP或一子网IP登陆

注:有时 用户@IP 需用引号 如”[email protected]/17″

grant all on *.* to huaying@localhost identified by “yeelion” with grant option           

添加超级用户huaying 可在本地登陆做任何操作.

mysql 创建用户,指定数据库,表的读写权限常用命令
grant reload on *.* to huaying@localhost identified by “yeelion” 只赋予reload权限
grant all on db_book to [email protected] indetified by “yeelion” 所有权限
grant select on db_book to huaying@% indetified by “yeelion” 只读权限
grant select,insert,delete,update on db_book to [email protected] 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.com 允许koowo.com域中的所有用户使用库book
grant all on book.* to huaying@%.koowo.com indetified by “yeelion” with grant option
允许huaying对库book所有表的管理员授权.           
mysql 创建用户,指定数据库,表的读写权限常用命令

2.撤权并删除用户

mysql 创建用户,指定数据库,表的读写权限常用命令
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; 重载授权表           
mysql 创建用户,指定数据库,表的读写权限常用命令

注:使用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;            

下载最新资源请访问分享吧:www.insharebbs.com

继续阅读