我创建了数据库,例如'mydb'。
现在我可以从任何地方登录到数据库,但无法创建表。
如何授予该数据库和(将来)表的所有权限。 我无法在'mydb'数据库中创建表。 我总是得到:
-
当你为CURRENT_USER展示资助时,你会得到什么;
-
你试过运行FLUSH PRIVILEGES吗?
-
@Andy感谢"为CURRENT_USER提供资助"; - 这有助于我看到我的错字。
-
使用grant命令时不需要@Romain,FLUSH PRIVILEGES。X4
-
仅当使用INSERT,UPDATE或DELETE等语句直接修改授权表时,才应使用FLUSH PRIVILEGES;
-
另外,尝试重新登录用户
这就是我创建"超级用户"权限的方式(虽然我通常会指定一个主机)。
重要的提示
虽然这个答案可以解决访问问题,但WITH GRANT OPTION创建了一个可以编辑其他用户权限的MySQL用户。
The GRANT OPTION privilege enables you to give to other users or remove from other users those privileges that you yourself possess.
出于安全原因,您不应将此类型的用户帐户用于公众可以访问的任何进程(即网站)。建议您创建仅具有此类用途的数据库权限的用户。
-
@Romain你真的没有把很多东西带到这里 - 我没有给我的用户myuser命名 - 提问者只是使用用户名作为例子 - 我使用相同的示例用户名来保持一致性。
-
很公平。但是,人们还必须考虑其他人,可能是新手,以后可以阅读这个问题。这不是SO的重点吗?
-
我也不认为这个答案是好的。它为所有数据库和所有表提供"管理员"权限,这不是所要求的。
-
我编辑了这个答案,说mydb。*而不是。,因为它是如此广泛的投票和观察的答案,我相信安全 - 特别是像MySQL这样的抛光粪便 - 是非常重要的。人们希望读者能够调查答案的细节而不是复制和粘贴,但我喜欢偶尔生活在现实中。
-
也不要忘记从phpMyAdmin登出登录以查看更改。
-
使用grant命令时不需要@kenorb,flush privileges。 X4
-
设置MySQL服务器的@Romain用户可能足够智能,可以意识到他们应该用自己的自定义用户名替换myuser。
-
以及如何撤销这些特权?
-
这不安全。这在没有密码的users表中创建了一个条目,mysql忽略了所有其他权限行,只查看最后一个匹配的行。因此,允许几分钟的完全访问权限生效,并拒绝使用密码访问任何人。这是一个可怕的安全违规行为!
-
如果重要的话,我正在使用mysql v5.1
-
我投票的原因与@ user3338098相同。其中"标识为"的答案应该是公认的答案。此外,只有在必要时才能使用"WITH GRANT OPTION"。我不相信OP表明它是。
-
一次性分配密码。 ==>:在mydb上授予所有特权。*向'myuser'@'%'识别'密码'WITH GRANT OPTION;
-
我有错误访问被拒绝用户'root'@'localhost'(使用密码:YES)
-
爆破。忘了用.*指定所有表...
这是一个老问题,但我不认为接受的答案是安全的。这对于创建超级用户很有好处,但如果要在单个数据库上授予权限则不好。
%似乎不包括套接字通信,localhost用于。 WITH GRANT OPTION仅对超级用户有利,否则通常存在安全风险。
希望这可以帮助。
-
+1不包括WITH GRANT OPTION并且定位指定数据库而不是全部(*)。
-
@IanBussieres的语法"%似乎没有涵盖套接字通信,本地主机用于"的语法尚不清楚。这究竟意味着什么?
-
@Thufir,搜索unix sockets。在linux上使用localhost myslq客户端时,尝试使用unix套接字而不是TCP连接到服务器。
-
请注意,除非您希望从外部IP地址或本地子网上的其他计算机进行访问,否则您可能不需要第一个命令。如果这样做,我建议使用针对您要允许的特定IP地址的命令,例如[email protected](对于本地子网上的一个),而不是myuser @%。
-
@EvanDonovan,这里有很多东西依赖于用例和环境。例如,java驱动程序不支持所有IIRC的套接字传输。但一般情况下我同意 - 尽可能更好地指定特定IP,或者仅在127.0.0.1上运行服务器,并在侦听非本地主机时对服务器进行防火墙。
-
我遇到了这个警告:Using GRANT statement to modify existing user's properties other than privileges is deprecated and will be removed in future release. Use ALTER USER statement for this operation. MySQL 5.7
-
mysql> ALTER USER'root'@'localhost'ENFENTIFIED BY'new_password';
这对某些人有用:
从MySQL命令行:
1
| CREATE USER 'newuser'@ 'localhost' IDENTIFIED BY 'password'; |
遗憾的是,此时newuser无权对数据库执行任何操作。事实上,如果newuser甚至尝试登录(使用密码,密码),他们将无法访问MySQL shell。
因此,首先要做的是为用户提供他们所需信息的访问权限。
此命令中的星号指的是它们可以访问的数据库和表(分别) - 此特定命令允许用户读取,编辑,执行和执行所有数据库和表中的所有任务。
完成要为新用户设置的权限后,请务必重新加载所有权限。
您的更改现在将生效。
有关更多信息,请访问:http://dev.mysql.com/doc/refman/5.6/en/grant.html
如果您对命令行不熟悉,那么您可以使用MySQL workbench,Navicat或SQLyog等客户端
-
使用grant命令时不需要flush privileges。 X4
-
停止使用FLUSH PRIVILEGES
-
您可以批量从Linode复制,也可以从您那里复制:linode.com/docs/databases/mysql/…
-
我需要再次识别GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost' IDENTIFIED BY 'my_password' WITH GRANT OPTION;(奇怪......,但是真的)
  1。创建数据库
  2。为数据库db_name创建用户名
  3。使用数据库
  4。最后,您在数据库db_name中,然后执行create,select和insert操作等命令。
-
今天,这给了我警告"使用GRANT语句来修改除特权之外的现有用户属性已被弃用,并且将在以后的版本中删除。使用ALTER USER语句进行此操作。" 那么我应该明白我应该创建一个用户,然后授予权限吗?
此SQL授予所有数据库,但只授予基本权限。它们足以用于Drupal或Wordpress,并且作为一个精确的,允许一个开发者帐户用于本地项目。
适用于架构的权限:)
可选:在mypasswd之后,您可以添加WITH GRANT OPTION
我只能通过添加GRANT OPTION来使其工作,而不会总是收到权限被拒绝错误
您好我使用此代码在mysql中拥有超级用户
1 2 3 4 5 6 7
| GRANT EXECUTE , PROCESS , SELECT, SHOW DATABASES, SHOW VIEW, ALTER, ALTER ROUTINE,
CREATE, CREATE ROUTINE, CREATE TEMPORARY TABLES, CREATE VIEW, DELETE, DROP,
EVENT , INDEX, INSERT, REFERENCES, TRIGGER, UPDATE, CREATE USER, FILE ,
LOCK TABLES, RELOAD , REPLICATION CLIENT , REPLICATION SLAVE , SHUTDOWN ,
SUPER
ON *. * TO mysql@ '%'
WITH GRANT OPTION; |
然后
-
使用grant命令时不需要flush privileges。X4
-
停止使用FLUSH PRIVILEGES
-
注意:grant中的确切列表因MySQL版本而异。
仅从远程服务器访问mydb数据库
从远程服务器访问所有数据库。
要授予数据库的所有权益:mydb给用户:myuser,只需执行:
要么:
PRIVILEGES关键字不是必需的。
另外我不知道为什么其他答案表明IDENTIFIED BY 'password'被放在命令的末尾。我认为这不是必需的。