Linux环境下创建MySQL只读用户

Linux环境下创建MySQL只读用户

grant select on *.* to jack@"%" identified by "jack";

解释

(1) *.* 表示任何数据库的任何表

(2) @"%" 表示任何ip对应的pc机上都可以登录数据库做查询操作

(3) jack 表示用户名

(4) "jack" 表示密码

整个语句的意思:赋予用户jack对任何数据库任何表的查询权限,同时该用户可以在任意ip地址对应的pc机上登录数据库。

补充

通过语句中的*.*和@"%"可以看出,除了上述的情况,我们还可以对用户的查询权限做更加细粒度的限制。

比如:

(1) 限定只可以查询数据库db1中的所有表

grant select on db1.* to jack@"%" identified by "jack";

(2) 限定只可以查询数据库db1的user表

grant select on db1.user to jack@"%" identified by "jack";

(3) 限定只可以在ip地址192.168.1.35的pc机上登录数据库,并且只可以查询数据库db1的user表中的数据

grant select on db1.user to [email protected] identified by "jack";

(4) 如果是grant ... to [email protected] identified by "jack";

那么要删除用户jack,则删除语句必须这么写:drop user [email protected]

如果是这么写:drop user jack 是无法删除成功的,这一点一定要注意。

注意1

当建立了只读用户之后,如果使用该账号登录本机(localhost)上的mysql数据库,此时的登录语句必须要加上本机的ip地址,假设本机的ip地址是192.168.1.40

mysql -ujack -pjack -h192.168.1.40 

只有这样才可以登录成功。

如果将192.168.1.40换成localhost或127.0.0.1是否可行呢?答案是否定的。

当然此时如果你想通过数据库客户端登录数据库,连接参数[主机名或ip地址]不可以是localhost或127.0.0.1,必须是本机实际的ip地址192.168.1.40。

注意2

当建立了只读用户后,如果使用该账号在其他pc机(不同ip地址)上登录数据库,ip地址都是必须要输的。

注意3

其实对于MySQL创建只读账号,在linux和windows上,创建语句完全一样。

猜你喜欢

转载自javawangbaofeng.iteye.com/blog/2233202
今日推荐