如何在Tablename上将SELECT值选择为MySQL中的PUBLIC

时间:2014-05-22 19:40:08

标签: mysql

我是MySQL新手。我试图弄清楚如何使一个表公开可读给所有经过身份验证的用户。在Oracle中我会说grant select on tablename to public。这种语法不适用于MySQL,我无法弄清楚等效的语法。

2 个答案:

答案 0 :(得分:1)

MySQL Documentation

  

MySQL不支持用户名中的通配符。参考一个   匿名用户,使用指定具有空用户名的帐户   GRANT声明:

GRANT ALL ON test.* TO ''@'localhost'

  

在这种情况下,任何从本地主机连接的用户   匿名用户的正确密码将被允许访问,具有   与匿名用户帐户关联的权限。

因此,您可以selectlocalhost的任何人授予grant select on tablename to ''@'localhost'

{{1}}

(OR)

您可以授予特定域中的所有用户。摘自MySQL doc

  

您可以在主机名中指定通配符。例如,   user_name@'%.example.com'适用于任何主机的user_name   example.com域和user_name@'192.168.1.%'适用于user_name   对于192.168.1 C类子网中的任何主机。

     

简单形式user_name是user_name @'%'的同义词。

答案 1 :(得分:0)

MySQL中的等效SQL语法是:

GRANT SELECT ON [database].[table] TO '[username]'@'[IP address]';

如果您尚未创建用户,则为:

GRANT SELECT ON [database].[table] TO '[username]'@'[IP address]' IDENTIFIED BY '[password]';

不要忘记在FLUSH PRIVILEGES;之后运行GRANT

如果您还没有创建数据库,那么在运行CREATE DATABASE '[database]';查询之前,您还需要运行GRANT

以下是创建名为“mydb”的数据库并允许用户“jblow”使用密码“password123”在本地计算机上的任何表上执行SELECT语句的示例:

CREATE DATABASE 'mydb';
GRANT SELECT ON mydb.* TO 'jblow'@'localhost' IDENTIFIED BY 'password123';
FLUSH PRIVILEGES;

此外,如果您想允许多个用户,请为每个用户重复GRANT语句。