如何允许远程访问我的数据库?

时间:2011-02-07 03:18:51

标签: php networking odbc dns

我目前正在$_SESSION['connection'] = odbc_connect('Driver={MySQL ODBC 5.1 Driver};Server=localhost;Database=mysql;Option=3;', 'root', '');

访问数据库

除了我需要在该帐户上输入密码(甚至可能使用除root之外的其他帐户?并且可能更改数据库名称?)之外,我想编写一些我可以解释为安装的代码在几个地方。

我想在每个站点使用相同的代码,虽然我事先无法知道IP地址。我该怎么做?我是否只是告诉他们的IT人员为myDatabaseServer设置DNS跟踪,然后在odbc_connect()调用中将Server=localhost替换为Server=myDatabaseServer?或者我是否需要在Windows控制面板中使用ODBC管理器进行修改?

嗯,我应该在编码之前混淆或补充代码......


更新:我发现this question表示

In your MySQL configuration file (my.cnf), you need the following at least:
port         = 3306          # Port MySQL listens on 
bind-address = 192.168.1.15  # IP address of your server 
# skip-networking            # This should be commented out to enable networking

我认为bind-address coudl为myDatabaseServer,因此我不需要编辑每个远程站点的配置文件(?)

它还说GRANT ALL ON test.* TO 'root'@'192.168.1.15' IDENTIFIED BY '';所以这是一个必须在数据库上运行一次的命令?但我不能提前知道IP地址?事实上,多个用户可能需要访问 - 我可以将其通配符到192.168。?因此,真的,真的需要吗?有没有办法我可以一次配置它,而不是事先知道每个用户将使用哪个netwrok地址范围(我知道它听起来不安全,但我可以只授予每个人访问权限并依赖密码保护,而且没有外人知道数据库在哪里?)

2 个答案:

答案 0 :(得分:1)

bind-address只能设置为IP地址,而不能设置为域名,并且是指mysql服务器将绑定的传出IP地址。

但是,在外部连接时,您始终只需将bind-address设置为0.0.0.0,即mysql服务器将接受其有权访问的任何接口上的传入3306连接。管理员方面会考虑命名服务器,您可以通过该名称连接到它。

一旦设置正确,您只需设置适当的用户凭据,以便外部用户可以从给定的IP(或模式)进行连接。

e.g。

GRANT ALL PRIVILEGES ON *.* TO USERNAME@IP IDENTIFIED BY "PASSWORD";

See here用于外部IP模式。

当然,您应该使用一般的受限访问帐户,并且只允许访问特定的数据库/表(db。*通常是可以接受的)

答案 1 :(得分:1)

添加到Slomojo的准确答案:在对权限进行任何更改后,不要忘记在mysql中flush privileges;