【问题标题】:in mysql, how can a user create owner database and write in?在mysql中,用户如何创建所有者数据库并写入?
【发布时间】:2011-11-25 00:42:24
【问题描述】:

我都

我能够为用户分配创建新数据库的权限

root> GRANT CREATE ON *.* TO 'newuser'@'localhost';
newuser> create database newdb;
newuser> Query OK, 1 row affected (0.00 sec)

现在,我希望 'newuser' 刚刚创建的 newdb 可以由 newuser 本身写入。

newuser> CREATE TABLE newtable ( id INT );
Query OK, 0 rows affected (0.00 sec)
newuser> INSERT INTO newtable (id) VALUES (1);
ERROR 1142 (42000): INSERT command denied to user 'offique'@'localhost' for table 'newtable'

我尝试在没有解决方案的情况下设置权限(使用相同的用户...):-(

newuser> GRANT ALL PRIVILEGES ON newdb.* TO 'newuser'@'localhost';
ERROR 1044 (42000): Access denied for user 'newuser'@'localhost' to database 'newdb'

有什么想法吗?

非常感谢!

【问题讨论】:

  • 您在使用GRANT 命令后是否FLUSH PRIVILEGESdev.mysql.com/doc/refman/5.0/en/flush.html
  • 感谢 dak,但这将无济于事... GRANT 命令的输出效果不佳...(错误 1044 (42000):访问被拒绝)
  • 使用GRANT CREATE ON *.* TO 'newuser'@'localhost';,当他从本地主机连接时,您将CREATE 权限授予newuser。您是否尝试过授予他所有权限?
  • 为 newuser 添加权限时需要 root 权限 - 因为 newuser 只有CREATE 权限。所以,root> GRANT ALL PRIVILEGES ON newdb.* TO 'newuser'@'localhost' WITH GRANT OPTION; 应该赋予 newuser 对 newdb 的所有权限
  • 那么......新用户不可能自己创建数据库并写入而不传递root用户(授予权限)?

标签: mysql sql privileges


【解决方案1】:

现在,我希望 'newuser' 刚刚创建的 newdb 可以由 newuser 本身写入。

在这种情况下,授予数据库级别的 INSERT 权限就足够了 -

GRANT INSERT ON *.* TO 'newuser'@'localhost';

您应该从“root”帐户授予它,因为您的新用户无权自行执行此操作。


GRANT INSERT ON newdb.* TO 'newuser'@'localhost';

【讨论】:

  • 感谢德瓦特。但在这种情况下,newuser 可以访问所有数据库。我希望 newuser 只能访问数据库创建本身。
  • @Roberto 哦,对不起。我错过了。我改变了答案。
猜你喜欢
  • 2018-07-12
  • 1970-01-01
  • 2015-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-21
  • 2022-11-14
相关资源
最近更新 更多