mysql访问权限问题_关于Mysql中访问权限的问题

A,mysql中添加某个用户的两种操作方法:

1,最安全,最方便的做法,也是最最推荐的做法是使用grant操作,grant的语法如下所示:

GRANT OPTION;

其中授予的权利,主要有以下几方面:SELECT,INSERT,UPDATE,DELETE,CREATE,DROP

上面所述的 all privileges 表示把所有权利都赋予了那个用户。

2, 也可以直接在mysql 默认的数据库下面,表user中去插入相关的记录。这里,mysql的manual中给出了几个例子。

INSERT INTO user VALUES('localhost','monty',PASSWORD('some_pass'),

'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');

这里需要注意的是,这里有多少个Y。上面这个语句相当与 grant all privileges on *.* to 'monty' identified by 'some_pass'. 这里要注意,如果不显示指定某一个特权为‘Y’,mysql的默认值是'N'

对于admin账户来说,还可以使用扩展的insert语句进行操作,例子如下:

INSERT INTO user SET Host='localhost',User='admin',Reload_priv='Y', Process_priv='Y';

3,mysqlmanual中给出了这样一种授权的方式:

INSERT INTO user (Host,User,Password) VALUES('localhost','custom',PASSWORD('obscure'));

mysql>INSERT INTO user (Host,User,Password) VALUES('whitehouse.gov','custom',PASSWORD('obscure'));

mysql>INSERT INTO user (Host,User,Password) VALUES('server.domain','custom',PASSWORD('obscure'));

mysql>INSERT INTO db(Host,Db,User,Select_priv,Insert_priv, Update_priv,Delete_priv,Create_priv,Drop_priv)VALUES('localhost','bankaccount','custom', 'Y','Y','Y','Y','Y','Y');

mysql>INSERT INTO db (Host,Db,User,Select_priv,Insert_priv, Update_priv,Delete_priv,Create_priv,Drop_priv)VALUES('whitehouse.gov','expenses','custom', 'Y','Y','Y','Y','Y','Y');

mysql>INSERT INTO db (Host,Db,User,Select_priv,Insert_priv, Update_priv,Delete_priv,Create_priv,Drop_priv) VALUES('server.domain','customer','custom', 'Y','Y','Y','Y','Y','Y');

mysql>FLUSH PRIVILEGES;

这样,先授权连接权限,然后再授权各个数据库的操作权限。这里需要注意的是,在每次授权之后,都需要执行flush

privileges,这个操作的目的是,通知mysql将新的授权表重新加载到内存中去。

----------------------------------------------------------------------

B,长话短说,以下是几个数据库权限方面的几个常用命令:

1,添加某个账户时候,顺便加上的数据库连接权限,

GRANT ALL ON customer.* TO 'francis'@'localhost' IDENTIFIED BY 'frank'

WITH MAX_QUERIES_PER_HOUR 20 MAX_UPDATES_PER_HOUR 10

MAX_CONNECTIONS_PER_HOUR 5 MAX_USER_CONNECTIONS 2;

2,为某个账户设置密码:

SET PASSWORD FOR 'jeffrey'@'%' = PASSWORD('biscuit');

3,更改某个账户的密码:

UPDATE user SET Password = PASSWORD('bagel')

->WHERE Host = '%' AND User = 'francis';

4,查看某个用户被授予了哪些权限?

mysql>SHOW GRANTS FOR 'bob'@'pc84.example.com';

---------------------------------------------------------------------

C,mysql核查用户身份,是怎么核查的?

user表范围列决定是否允许或拒绝到来的连接。对于允许的连接,user表授予的权限指出用户的全局(超级用户)权限。这些权限适用于服务器上的all数据库。

db表范围列决定用户能从哪个主机存取哪个数据库。权限列决定允许哪个操作。授予的数据库级别的权限适用于数据库和它的表。

当你想要一个给定的db表行应用于若干主机时,db和host表一起使用。例如,如果你想要一个用户能在你的网络从若干主机使用一个数据库,在用户的db表行的Host值设为空值,然后将那些主机的每一个移入host表

有一些事情你不能用MySQL权限系统做到:

你不能明显地指定某个给定的用户应该被拒绝访问。即,你不能明显地匹配用户然后拒绝连接。你不能指定用户有权创建立或删除数据库中的表,但不能创建或删除数据库本身。

Mysql中host字段和user字段的特殊规定:

既然你能在Host字段使用IP通配符值(例如,'144.155.166.%'匹配在一个子网上的每台主机),有可能某人可能企图探究这种能力,通过命名一台主机为144.155.166.somewhere.com。为了阻止这样的企图,MySQL不允许匹配以数字和一个点起始的主机名,这样,如果你用一个命名为类似1.2.foo.com的主机,它的名字决不会匹配授权表中的Host列。只有一个IP数字能匹配IP通配符值。

通配符字符在User列中不允许,但是你能指定空的值,它匹配任何名字。如果user表匹配的连接有一个空用户名,用户被认为是匿名用户(没有名字的用户),而非客户端实际指定的名字。这意味着一个空的用户名被用于在连接期间的进一步的访问检查(即,在阶段2期间)。

Password列可以是空的。这不是通配符,也不意味着匹配任何密码,它意味着用户必须不指定一个密码进行连接。

D,Mysql中如何进行用户身份的判断?

当服务器读取表时,它首先以最具体的Host值排序。主机名和IP号是最具体的。'%'意味着“任何主机”并且是最不特定的。有相同Host值的条目首先以最具体的User值排序(空User值意味着“任何用户”并且是最不特定的)。

普遍的误解是认为,对给定的用户名,当服务器试图对连接寻找匹配时,明确命名那个用户的所有条目将首先被使用。这明显不符合事实。先前的例子说明了这点,在那里由jeffrey从thomas.loc.gov的连接没被包含'jeffrey'作为User列值的行匹配,但是由没有用户名的题目匹配!结果是,jeffrey被鉴定为匿名用户,即使他连接时指定了用户名。

E,Mysql对于已经连接的用户,对与用户执行的指令,如何进行鉴权判断?

user表在全局基础上授予赋予你的权限,该权限不管当前的数据库是什么均适用。例如,如果user表授予你DELETE权限, 你可以删除在服务器主机上从任何数据库删除行!换句话说,user表权限是超级用户权限。只把user表的权限授予超级用户如服务器或数据库主管是明智的。对其他用户,你应该把在user表中的权限设成'N'并且仅在特定数据库的基础上授权。你可以为特定的数据库、表或列授权。

----------------------------------------------------------------------------------

其实,后来想想,关于mysql中权限的访问,在服务器设置这一块,应该搞明白,mysql服务器是如何进行身份判断的,弄明白了这一点,当出现某种情况下,mysql连接者的权限问题时,就能很好的定位问题了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值