Mysql 授予特定用户修改特定表行的权限
出于安全原因,我不喜欢审计员有权修改表中的所有行。所以我试着:Mysql 授予特定用户修改特定表行的权限,mysql,Mysql,出于安全原因,我不喜欢审计员有权修改表中的所有行。所以我试着: GRANT UPDATE audit_comment ON cgis TO auditor IDENTIFIED BY 'audit@TE'; 但它失败了 ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right synt
GRANT UPDATE audit_comment ON cgis TO auditor IDENTIFIED BY 'audit@TE';
但它失败了
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'audit_comment ON cgis TO auditor IDENTIFIED BY 'audit@TE'' at line 1
我在谷歌上搜索了很多,但我找不到答案,也许mysql不允许我们这样做?您不能在行上指定权限,只能在列上指定权限。检查语法
您需要类似
<代码> dxNAME.cGIS上的授权更新(AudiTwitter注释)到“审核员”“HooStIdNess”< /代码> < P>可选地,考虑使用A。让过程更新行,并将其设置为使用SQL安全定义器。在存储过程中,可以包括所需的任何验证,并从要对其进行限制的一个或多个用户处撤消修改行的访问权限。这有点复杂,但据我所知,这是限制您正在寻找的访问类型的唯一方法。您也可以尝试使用视图而不是表,这些表可用于限制对特定类型行的访问。这是一个非常基本的例子 图片表:
CREATE TABLE IF NOT EXISTS pictures_t
(
id INT NOT NULL auto_increment,
public BOOL NOT NULL DEFAULT TRUE,
PRIMARY KEY(id)
)
CREATE VIEW pictures_v
AS
SELECT
P.*
FROM pictures_t AS P
WHERE
P.public = TRUE
ORDER BY id;
GRANT SELECT, INSERT, UPDATE ON db.pictures_t TO 'god'@'localhost' IDENTIFIED BY 'heaven';
GRANT SELECT, INSERT, UPDATE ON db.pictures_v TO 'satan'@'localhost' IDENTIFIED BY 'hell';
图片视图:
CREATE TABLE IF NOT EXISTS pictures_t
(
id INT NOT NULL auto_increment,
public BOOL NOT NULL DEFAULT TRUE,
PRIMARY KEY(id)
)
CREATE VIEW pictures_v
AS
SELECT
P.*
FROM pictures_t AS P
WHERE
P.public = TRUE
ORDER BY id;
GRANT SELECT, INSERT, UPDATE ON db.pictures_t TO 'god'@'localhost' IDENTIFIED BY 'heaven';
GRANT SELECT, INSERT, UPDATE ON db.pictures_v TO 'satan'@'localhost' IDENTIFIED BY 'hell';
创建用户:
CREATE TABLE IF NOT EXISTS pictures_t
(
id INT NOT NULL auto_increment,
public BOOL NOT NULL DEFAULT TRUE,
PRIMARY KEY(id)
)
CREATE VIEW pictures_v
AS
SELECT
P.*
FROM pictures_t AS P
WHERE
P.public = TRUE
ORDER BY id;
GRANT SELECT, INSERT, UPDATE ON db.pictures_t TO 'god'@'localhost' IDENTIFIED BY 'heaven';
GRANT SELECT, INSERT, UPDATE ON db.pictures_v TO 'satan'@'localhost' IDENTIFIED BY 'hell';
显然他们已经从他们的网站上删除了这篇文章。为什么,我不知道,但是谷歌再也找不到它的最新版本了。这里有一个来自互联网档案的链接。这里还有一面镜子: