52

我在这个问题上摸不着头脑,因为我看到大量的帮助网站展示了如何创建 MySQL 用户和授予权限,但由于某种原因,它对我不起作用。我在安装了最新 MySQL 版本的 WinXP 和 MacBook Pro 笔记本电脑上都进行了尝试。

以下只是我使用 WordPress 时的一个示例。实际的数据库是不同但相同的问题。

以下是步骤:

mysql> mysql -uroot -p<password>
mysql> CREATE DATABASE wwordpress;
mysql> CREATE USER 'www'@'localhost' IDENTIFIED BY 'basic';

查询正常,0 行受影响(0.14 秒)

mysql> GRANT INSERT ON wordpress.* TO 'www'@'localhost' IDENTIFIED BY 'basic';

查询正常,0 行受影响(0.00 秒)

mysql> FLUSH PRIVILEGES;

查询正常,0 行受影响(0.03 秒)

mysql> SELECT * FROM mysql.user WHERE User='www' \G
****************************** 1. 行 ************************ *******
                 主机:本地主机
                 用户:www
             密码:*E85C94AF0F09C892339D31CF7570A970BCDC5805
          Select_priv:N
          插入隐私:N
          更新隐私:N
          删除隐私:N
          Create_priv:N
            Drop_priv:N
          reload_priv:N
        Shutdown_priv:N
         Process_priv:N
            File_priv:N
           Grant_priv:N
      References_priv:N
           Index_priv:N
           Alter_priv:N
         Show_db_priv:N
           超级隐私:N
创建_tmp_table_priv:N
     Lock_tables_priv:N
         Execute_priv:N
      repl_slave_priv:N
     Repl_client_priv:N
     Create_view_priv:N
       Show_view_priv:N
  Create_routine_priv:N
   Alter_routine_priv:N
     创建用户隐私:N
           Event_priv:N
         Trigger_priv:N
             ssl_type:
           ssl_cipher:
          x509_issuer:
         x509_主题:
        最大问题:0
          最大更新:0
      最大连接数:0
 最大用户连接数:0
一组中的 1 行(0.00 秒)

mysql>

如您所见,“Insert_priv:N”应该是“Y”。

有什么建议么?

提前致谢。

4

5 回答 5

49

您选择的是全局权限。但是,您正在授予数据库(和主机,但这无关紧要)特定权限。

GRANT INSERT ON wordpress.* TO 'www'@'localhost' IDENTIFIED BY 'basic';

这些权限存储在db表中。

只是为您指出正确的方向:

SHOW GRANTS FOR 'www'@'localhost'

http://dev.mysql.com/doc/refman/5.0/en/show-grants.html

于 2010-10-08T19:29:55.870 回答
14

这不是存储最多用户授予权限的地方 - 尝试

SHOW GRANTS FOR 'www'@'localhost'

改为查看特定于数据库的权限。(如果授权是针对所有数据库的,那么它只会出现在用户表中。)

这是关于权限如何存储在 MySQL中的(相当老的)分步详细信息- 我认为事情没有太大变化。

于 2010-10-07T23:49:43.463 回答
2

这应该有效:

GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost';
于 2017-07-05T05:04:00.003 回答
1

您需要查看 mysql.db 或 mysql.tables_priv 表如果您需要选择 Y 或 N 如果您尝试对用户可以编辑或插入或删除的页面进行一些限制...此表会自动更新使用 Ys 和 Ns,因为它们仅用于显示用户对表或列的权限,而 mysql.user 的目的是显示某个用户可以登录(创建连接)到数据库。

于 2012-03-26T12:06:32.500 回答
0

是的,我同意我创建了 2 个用户并授予他们对数据库的所有权限,但不知何故,只有一个用户将获得升级的权限,无论我做什么,第二个用户都不会获得权限,尽管我试图授予以与第一个用户完全相同的方式授予用户的权限,然后我刷新了权限

于 2022-01-22T13:09:04.690 回答