我一直在使用 SQL Server,现在在一个项目中使用 MySQL。使用 SQL Server,如果我们的开发人员知道主机、用户名和密码,他们就可以连接到本地计算机上的远程数据库。不过,对于 MySQL,为了让开发人员能够从本地计算机进行访问,我必须登录 MySQL 并执行:
GRANT ALL ON *.* to user@address IDENTIFIED BY 'password';
flush privileges;
Where 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';
阅读完整文档here.
这是供参考的相关文章:
以 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,密码是
一些_pass。两个帐户都是具有完全权限的超级用户帐户
做任何事。 'monty'@'localhost' 帐户只能在以下情况下使用
从本地主机连接。 “monty”@“%”帐户使用“%”
主机部分的通配符,因此它可以用于从任何
主持人。
必须拥有两个帐户才能连接 monty
蒙蒂来自任何地方。如果没有本地主机帐户,
本地主机的匿名用户帐户由以下人员创建
当 Monty 从以下位置连接时,mysql_install_db 将优先
本地主机。因此,monty 将被视为匿名用户。
这样做的原因是匿名用户帐户具有更多权限
特定主机列值比“monty”@“%”帐户高,因此
在用户表排序顺序中靠前。 (讨论了用户表排序
(第 6.2.4 节“访问控制,第 1 阶段:连接验证”。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)