我目前正在通过$_SESSION['connection'] = odbc_connect('Driver={MySQL ODBC 5.1 Driver};Server=localhost;Database=mysql;Option=3;', 'root', '');
访问数据库
除了我需要在这个帐户上设置一个密码(甚至可能使用根之外的另一个帐户?并且可能会更改数据库名称?),我想编写一些代码,我可以拒绝在几个站点上安装这些代码。
我想在每个站点上使用相同的代码,尽管我无法预先知道IP地址。我该怎么做?我是否只是告诉他们的IT人员为类似于myDatabaseServer
的东西设置DNS流,然后在odbc_connect()调用中用Server=myDatabaseServer
替换Server=localhost
?还是我需要在Windows控制面板中使用ODBC管理器?
嗯,我应该先把代码弄糊涂或者组合一下,然后再重新分配.
更新:我找到了这个问题,上面说
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
可以是myDatabaseServer
,所以我不需要为每个远程站点(?)编辑配置文件。
它还提到了GRANT ALL ON test.* TO 'root'@'192.168.1.15' IDENTIFIED BY '';
,所以这是一个必须在数据库上运行一次的命令?但我不能提前知道IP地址?事实上,多个用户可能需要访问-我可以通配符它到192.168..?所以真的真的需要吗?是否有任何方法可以让我一次配置它,而不知道每个用户将使用的网络地址范围(我知道这听起来不安全,但我是否可以授予每个人访问权限并依赖密码保护,再加上没有外人知道数据库在那里?)
发布于 2011-02-07 03:48:57
bind-address
只能设置为IP地址,而不是域名,并引用mysql服务器将绑定到的传出IP地址。
但是,在外部连接时,您总是可以将bind-address
设置为0.0.0.0
,这样mysql服务器就可以在它可以访问的任何接口上接受传入的3306连接。管理端负责给服务器命名,您可以通过这个名称连接到它。
一旦设置正确,您只需要设置适当的用户凭据,以便外部用户可以从给定的IP (或模式)连接。
例如:
GRANT ALL PRIVILEGES ON *.* TO USERNAME@IP IDENTIFIED BY "PASSWORD";
用于外部IP模式的看这里。
当然,通常您应该使用有限的访问帐户,并且只允许访问特定的数据库/表(db.*通常是可以接受的)。
发布于 2012-01-17 22:48:30
为了补充Slomojo的准确答案:在对特权进行任何更改之后,不要忘记在mysql中使用flush privileges;
。
https://stackoverflow.com/questions/4917826
复制相似问题