我已经创建了数据库,例如’mydb’。
CREATE DATABASE mydb CHARACTER SET utf8 COLLATE utf8_bin;
CREATE USER 'myuser'@'%' IDENTIFIED BY PASSWORD '*HASH';
GRANT ALL ON mydb.* TO 'myuser'@'%';
GRANT ALL ON mydb TO 'myuser'@'%';
GRANT CREATE ON mydb TO 'myuser'@'%';
FLUSH PRIVILEGES;
现在,我可以从任何地方登录数据库,但是无法创建表。
如何授予该数据库和(将来)表的所有特权。我无法在“ mydb”数据库中创建表。我总是得到:
CREATE TABLE t (c CHAR(20) CHARACTER SET utf8 COLLATE utf8_bin);
ERROR 1142 (42000): CREATE command denied to user 'myuser'@'...' for table 't'
GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'%' WITH GRANT OPTION;
这就是我创建“超级用户”特权的方式(尽管我通常会指定一个主机)。
虽然此答案可以解决访问问题,但可以WITH GRANT OPTION
创建一个MySQL用户,该用户可以编辑其他用户的权限。
使用GRANT OPTION特权,您可以授予其他用户或从其他用户中删除您自己拥有的那些特权。
出于安全原因,您不应将此类用户帐户用于公众可以访问的任何过程(即网站)。建议您为这种使用创建仅具有数据库特权的用户。
如有任何帮助,我们将不胜感激。
我有一个用户测试。我想授予此用户在所有数据库上的所有权限。怎样才能做到呢?
我想在不使其成为管理员的情况下授予用户数据库的所有权限。我想这样做的原因是目前DEV和PROD是同一集群上的不同DBs,因此我不希望用户能够更改生产对象,但它必须能够更改DEV上的对象。 我尝试了: 但它似乎没有给予任何许可。 然后我尝试: 它似乎允许我创建对象,但不允许我在属于其他用户的模式上查询\delete对象 我可以继续通过给予用户USAGE权限MY_SCHEMA但它会抱怨没有在表上的权限
问题内容: 我有一个存储过程,该过程可以找到所有现有数据库并从每个数据库的表中读取数据。 有没有一种方法可以使我对所有数据库以及将来的所有数据库都具有登录读取访问权限,即在添加新数据库时我无需执行任何操作? 有服务器角色可以工作吗?有没有一种方法可以使SQL代理作业在任何新数据库上添加权限?还是有其他方法? 问题答案: 对于新数据库,将用户添加到模型数据库中。这用作所有新数据库的模板。 对于现有数
问题内容: 我需要授予对服务器上所有300个数据库的新登录读取访问权限。如何在不选中用户映射区域中的300个复选框的情况下完成此任务? 问题答案: 一种方法是在SSMS的查询菜单上设置“结果为文本”,然后执行以下操作。 它实际上并没有进行更改,而是生成了一个脚本供您查看和执行。 或者,你可以看看 这里或亚伦Bertrand的改进版本在这里 如果运行此命令时未看到所有字符,请打开“文本查询选项”,然
问题内容: 我想允许John mysql用户使用LOAD DATA命令。所以我以root用户身份登录mysql终端并发出以下语句: 但我收到以下错误: 如果将替换为,则一切正常。但这并不意味着所有数据库吗?我想将john mysql用户限制为johndatabase。 问题答案: 您不能仅在单个数据库上授予FILE特权。从逻辑上讲这没有任何意义。考虑一下文档怎么说: FILE特权授予您使用LOAD