我的Mac上有一个使用MAMP的MySQL数据库。我需要使用来自具有IP的远程服务器(例如184.173.9)的PHP脚本连接到此数据库....我已经尝试了2天而没有运气。
我尝试了一些论坛,他们要求注释跳过网络,并在MAMP的my.cnf文件中使用bind-address和远程服务器的IP。首先,我没有在MAMP中找到my.cnf文件,但最终在Library / support-files / my-medium.cnf中找到了一个。我复制了它并放在tmp / mysql / my.cnf中。但没有任何作用。
我还关闭了系统偏好设置/安全性和防火墙中的防火墙。隐私。
我用来连接的PHP代码如下所示:
mysql_connect('176.249.200 ....:3306','test','test')或死(mysql_error());
你能否告诉我我还缺少什么?
答案 0 :(得分:0)
这是输出:
授予所有特权。要'测试'@'%'IDENTIFI ......
在测试时授予所有特权。*'测试'@'%'
在easytask上授予所有特权。*'测试'@'%'...
IP地址184.173.9 ....是一个专用的远程服务器,我有PHP脚本。而176.249.200 ....是我的本地IP,3306是MySQL端口。
答案 1 :(得分:0)
首先确保它连接(您应该拒绝连接而不是超时/连接错误)。您可以通过执行以下命令来测试:
mysql -h ip.addr.goes.here -p -u test
如果无法连接,则可能是防火墙问题或配置问题。
如果它连接并且权限被拒绝,则可能是授权问题。创建用户然后授予对表的访问权限
CREATE USER 'dbusername'@'%' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON *.* TO 'dbusername'@'%'
请注意,如果您使用localhost替换%,则用户将获得本地访问权限,如果您指定ip,则从特定IP替换;如果指定%,则只能远程访问。关于mysql页面http://dev.mysql.com/doc/refman/5.1/en/adding-users.html
的更多细节之后,刷新权限以确保它们起作用:
flush privileges
答案 2 :(得分:0)
GRANT ALL PRIVILEGES ON database.* TO 'user'@'%' IDENTIFIED BY 'newpassword';
%是通配符,我们可以从任何IP地址连接MySQL服务器。 您还可以执行“%.domain.com”或“%.10.10.10”(用于特定的IP或域地址)。
flush privileges
使更改生效。
MySql端口3306可以免费远程访问;因此,我们需要在MySQL配置文件中绑定IP地址。
vi /etc/mysql/my.cnf
在文件中,搜索[mysqld]节,并添加新的绑定地址bind-address = 127.0.0.1
评论它并添加您的IP地址。
如果您的本地IP地址随机更改,请使用bind-address = 0.0.0.0
然后最后一步是重新启动MySql服务器。
mysql -u usename -p -A -h youripaddress
-A
`读取表信息以完成表名和列名
您可以关闭此功能以使用-A
注意:首先ping您的IP地址。并查看是否有掉线和延迟问题。
我使用下面的这段代码在php中连接MySQL服务器。
$conn = '';
try {
$conn = new PDO("mysql:host=ipaddress;dbname=databasename", 'userName', 'password');
}
catch(PDOException $e)
{
echo "Connection failed: " . $e->getMessage();
}