允许所有远程连接,MySQL
我一直在使用SQL Server,现在正在将MySQL用于一个项目。使用SQL
Server,我们的开发人员可以在知道主机,用户名和密码的情况下连接到本地计算机上的远程数据库。但是,使用MySQL,要使开发人员能够从其本地计算机访问,我一直必须登录MySQL并执行:
GRANT ALL ON *.* to user@address IDENTIFIED BY 'password'; flush privileges;
address
开发人员机器的IP地址在哪里。当然,如果他们更改网络,则必须再次执行。有没有一种方法可以允许所有远程连接(如我在SQL
Server中所经历的那样),或者由于某种原因这是一个坏主意吗?我们仍然有用户名和密码。.显然我有些困惑。
另外:这是一个开发数据库,只能从我们的内部网络访问。我知道为什么让所有人都可以访问生产数据库是个坏主意。
回答:
正如上面Ryan指出的,您需要的命令是
GRANT ALL ON *.* to user@'%' IDENTIFIED BY 'password';
但是,请注意,文档指出,要使此功能正常运行,localhost
必须为同一用户创建另一个用户帐户。否则,由自动创建的匿名帐户mysql_install_db
将具有优先权,因为它具有更特定的主机列。
换一种说法; 为了使用户user
能够从任何服务器进行连接;需要创建2个帐户,如下所示:
GRANT ALL ON *.* to user@localhost IDENTIFIED BY 'password'; GRANT ALL ON *.* to user@'%' IDENTIFIED BY 'password';
在此处阅读完整的文档。
这是相关的参考资料:
以root用户身份连接到服务器后,可以添加新帐户。以下语句使用GRANT设置四个新帐户:
mysql> CREATE USER 'monty'@'localhost' IDENTIFIED BY 'some_pass';mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost'
-> WITH GRANT OPTION;
mysql> CREATE USER 'monty'@'%' IDENTIFIED BY 'some_pass';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%'
-> WITH GRANT OPTION;
mysql> CREATE USER 'admin'@'localhost';
mysql> GRANT RELOAD,PROCESS ON *.* TO 'admin'@'localhost';
mysql> CREATE USER 'dummy'@'localhost';
这些语句创建的帐户具有以下属性:
其中两个帐户的用户名是monty,密码是some_pass。这两个帐户都是具有完全权限执行任何操作的超级用户帐户。仅在从本地主机连接时才能使用“
monty” @“ localhost”帐户。“ monty” @“%”帐户将“%”通配符用于主机部分,因此可用于从任何主机进行连接。
。如果没有localhost帐户,当monty从本地主机连接时,由mysql_install_db创建的localhost匿名用户帐户将具有优先权。结果,monty将被视为匿名用户。原因是匿名用户帐户比“
monty”
@“%”帐户具有更特定的“主机”列值,因此在用户表排序顺序中排在较早的位置。(在第6.2.4节“访问控制,阶段1:连接验证”中讨论了用户表排序。)
除非我误解,否则这对我来说似乎很愚蠢。
以上是 允许所有远程连接,MySQL 的全部内容, 来源链接: utcz.com/qa/408971.html