我使用角色向我的MySQL用户提供授权。我注意到一种奇怪的行为,在授予用户角色时,我在任何地方都找不到文档。让我陪你走一圈。
首先,我们创建一个实际的用户joe@localhost,并授予它在joe_db上的所有特权。虽然我省略了代码中的第二步,但我在这里使用它来说明这种行为是多么出乎意料。($ mysql将我作为root登录)。
$ mysql
mysql> CREATE USER 'joe'@'localhost';
Query OK, 0 rows affected (0.01 sec)
mysql> ALTER USER 'joe
创建角色的正确方法是什么,然后将新用户分配给角色以授予对所需数据库的访问权限?
对我来说不像我想象的那样。
如果我尝试创建一个读/写角色和一个只读角色,然后将权限授予这些角色,然后创建一个默认角色的用户,则会为该用户获得一个数据库访问被拒绝的错误:
CREATE DATABASE testDb;
CREATE ROLE readOnly;
CREATE ROLE readWrite;
GRANT SELECT ON testDB . * TO readOnly;
GRANT ALL ON testDB . * TO readWrite;
CREATE USER 'testUser
我创建了一个角色QI_RO,授予服务器上所有模式的所有权限,并且我试图将角色特权授予另一个用户,但却抛出了错误。
GRANT QI_RO to test_user@'%';
错误信息:
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 'QI_RO to test_user@'%'' at l
我已经在mysql中创建了角色。
我想给现有的角色多一项特权?我该怎么做呢?
例如:
mysql> show grants for 'testing_users'@'localhost' using app_write;
+---------------------------------------------------------------------------+
| Grants for testing_users@localhost |
+-------------
我正在使用MySQL工作台和MySQL 5.6。
我正在尝试创建一个只能执行存储过程的用户。
因此,我创建了一个用户,给出了一个密码,并给出了角色“常规执行”。
它生成以下内容:
CREATE USER 'serveruser' IDENTIFIED BY 'PASSWORD';
GRANT EXECUTE ON ROUTINE `myschema`.* TO 'serveruser';
这会产生这样的错误:
Executing SQL script in server
ERROR: Error 1064: You have an error
我需要帮助在MySql中构建一个触发器。我有一个“雇员”表,结构如下:
id
first name
role
我想要创建一个触发器,自动将角色分配给插入的新员工,选择当前不在表中的角色。例句:只有两个清洁工和一个司机。通过插入字段,自动分配驱动程序的角色。我的问题不是触发器结构,而是只在查询中选择正确的角色。你能帮帮我吗?
是否可以基于前缀向用户授予数据库访问权限?
例如,在MYSQL中,您可以执行以下操作:GRANT ALL PRIVILEGES ON `username\_%` . * TO 'username'@'localhost';
在我的用例中--我想在同名的数据库中授予特定用户readWrite角色--但也允许创建与此模式匹配的数据库,并授予其读/写访问权限。
例如,myuser将在myuser数据库上具有readWrite角色,但也具有创建myuser-otherdatabase的能力。
如果不为此目的将服务器范围的角色(readWriteAnyDatabase