我是MySQL新手。我试图弄清楚如何使一个表公开可读给所有经过身份验证的用户。在Oracle中我会说grant select on tablename to public
。这种语法不适用于MySQL,我无法弄清楚等效的语法。
答案 0 :(得分:1)
MySQL不支持用户名中的通配符。参考一个 匿名用户,使用指定具有空用户名的帐户 GRANT声明:
GRANT ALL ON test.* TO ''@'localhost'
在这种情况下,任何从本地主机连接的用户 匿名用户的正确密码将被允许访问,具有 与匿名用户帐户关联的权限。
因此,您可以select
向localhost
的任何人授予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
语句。