我目前正在$_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地址范围(我知道它听起来不安全,但我可以只授予每个人访问权限并依赖密码保护,而且没有外人知道数据库在哪里?)
答案 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;
。