我已经在MySQL中设置了一些特定于表的授权,但是当我以MySQL用户身份登录时,它仍然可以完全访问所有表。我想抹去所有的拨款,重新开始。
我正在运行Debian Linux服务器,使用命令行命令,如下所示:
GRANT INSERT on database.someTable TO 'everyone'@'localhost';
(乘以30左右)
试图使用下面的单个命令撤销授予只会产生一些错误,说明没有需要删除的授予:
REVOKE all on database.* FROM 'everyone'@'localhost';
我
在尝试从远程主机获得连接时,我进行了大量的授权。所以我就这么做了:
GRANT ALL PRIVILEGES ON *.* TO 'prog'@'foobar-dev.foobar.com' WITH GRANT OPTION;
但是,'foobar-dev‘已经不存在了。对于其他不存在的主机,还有一大堆其他条目。
我做了以下撤销,希望mysql.user中的条目会消失:
REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'prog'@'foobar-dev.foobar.com'.
这会将
我们有一个经常运行的进程,并在类型为innodb的mysql数据库上执行以下步骤。
SET autocommit = 0;
DELETE FROM table WHERE category='something';
-- every 300 rows or whatever is left in case of last round
INSERT IGNORE INTO table (fields) VALUES (row1),(row2),..,(row300);
-- check affected rows == number of rows given if no
使用标准SQL -已经在PosgresQL和Oracle中多次这样做了??我希望对schema1中的所有表( secret到user1除外)授予一个选择。
grant select on schema1.* to user1;
revoke select on schema1.users from user1;
接收错误:
ERROR 1147 (42000): There is no such grant defined for user 'user1' on host '%' on table 'secret'
我做错了什么?
显然这是标准
正如标题所说,然而,我已经尝试了所有方法来阻止用户修改这个表,但没有运气
由于某些原因,mySQL 5.5手册中不存在拒绝,因此以下命令不起作用
DENY ALL ON OBJECT::database.table TO user
DENY ALL ON database.table TO 'user'@'localhost'
REVOKE ALL ON database.table TO 'user'@'localhost'
最后一个命令给出了这个错误
There is no such grant defined for use
我有一个具有数据库级权限的MySQL用户。
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER ON mydb.* TO 'theuser';
用户可以创建表并将行插入其中。
当用户超过限制(例如,计划中允许的行数)时,我想撤销INSERT特权。因此,用户不能再向表中插入新行。这是个有软性限制的计划。
我知道我可以执行以下查询:
REVOKE INSERT ON mydb.* FROM 'theuser';
但它不会影响到下一个use mydb。
根据MySQL文档:
授予表重新加载会影响每个现有客户端连接的权
我需要添加一个能够读取我所有数据库的用户。所以我创造了:
create user 'reader' identified by 'password';
grant select on *.* to 'reader';
这方面的问题是,用户也能够读取系统表,比如mysql.user,我认为这是一个安全问题。我试图撤销该表上的select特权:
revoke SELECT ON mysql.* from 'reader';
但我得到
ERROR 1141 (42000): There is no such grant defined
我想撤销mysql中的用户在特定表上的insert,我在前面尝试了以下代码:
use varian_db; REVOKE INSERT ON 'gevhm_users' FROM 'varian_user';但是mysql返回了以下错误:
#1064 - 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 ''gevhm_users&
我已经使用以下命令将数据库的所有权限授予用户'demo‘:
grant all privileges on wordpress.* to demo@localhost;
现在,我想撤消表wp_users上的用户权限。我使用了这个命令:
revoke all privileges on wordpress.wp_users from demo@localhost;
但是我得到了这个错误:
ERROR 1147 (42000): There is no such grant defined for user 'demo' on host 'localhost'
鉴于这一表:
id | field
----------
1 | 2
如果两个进程并行运行这个查询,那么列field只会增加一次吗?
更新表集字段=字段+1其中id =1
换句话说,如果上面的查询要执行两次,那么是否有可能得到以下数据库呢?
id | field
----------
1 | 3
我在https://dev.mysql.com/doc/refman/8.0/en/innodb-locking.html搜索,但在那里找不到答案。
我有一个Mysql DB,有超过250个表,我需要阻止单个用户对其中一个表的删除权限。
我们已经尝试过了,但是对于这个DB有删除的权限,所以对单个表的授权查询不会生效,我仍然可以从这个表中删除行。我做了:
GRANT SELECT, INSERT, UPDATE ON db.table TO 'user'@'host';
全球许可:
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER ON `db`.* TO 'user'@'host'
是否有一种方法覆盖单个表的
假设我在MySQL中有一个这样的表:
CREATE TABLE Foo (
Key INT NOT NULL
, MyCol INT NOT NULL
PRIMARY KEY (Key))
我在下面执行这样的语句:
UPDATE Foo
SET MyCol = 13
WHERE Key = 42
MySQL会在幕后执行插入,然后删除该行(因此,可能会导致页面分裂),还是更新会在行上发生?
在哪种情况下,这些情况都会发生?
如果是一个用户,u1给另一个用户u2特权来查看PostgreSQL中的表,并给他们GRANT OPTION
GRANT SELECT ON t1 TO u1 WITH GRANT OPTION;
现在,u2允许另一个用户,u3
-- AS u2
GRANT SELECT ON t1 TO u3;
现在,u2改变了组织中的位置,他们的权限也发生了变化。其中,他们对t1的视图权限被撤销:
-- As u1
REVOKE GRANT OPTION ON t1 FROM u2;
u3的权限会怎样?
附加问题:如果u2和u3的权限被取消,u1会发生什么情况?
REVOKE ALL ON t1 FROM
最近,我一直在研究导出选项,以找到删除以下内容的选项:
DROP TABLE IF EXISTS并将其替换为CREATE TABLE IF NOT EXISTS。
我在其他MySQL客户机上见过,如HeidiSQL或sequelPro (用于MAC),您可以选择是否包含drop,但是在MySQL工作台中找不到任何相关的东西。
在导出和导入数据以与其他表交换数据时,这是非常危险的,它只是在表存在时删除表,而不是仅仅更新表。
我已经对这个问题做了研究,我得到的只是一个关于drop方法本身的解释。
我已经使用MySQL工作台很长一段时间了,现在我正考虑为此切换到另一个MySQL客户机。
我正在使用M