【发布时间】:2013-03-06 01:31:46
【问题描述】:
当我尝试通过远程 MySQL 服务器上的本地计算机的 shell 进行连接时,我可以成功连接:
> mysql -h remotehost -u myuser -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
但是当我尝试使用
通过 PHP 脚本进行连接时$serverName = "remotehost"; // here I put the actual IP address
$userName = "myuser";
$passCode = "actualpassword";
mysql_connect($serverName,$userName,$passCode);
我收到以下错误
警告:mysql_connect():拒绝用户“myuser”@“localhost”访问 (使用密码:YES)
远程MySQL服务器版本为5.1.52,本机PHP版本为5.3.10-1ubuntu3.4
我发现了一个类似的问题,但答案并没有解决我的问题: problem connecting to remote mysql database using php
非常感谢您的帮助!
编辑:
php -i | grep "mysql"的输出
/etc/php5/cli/conf.d/mysql.ini,
/etc/php5/cli/conf.d/mysqli.ini,
/etc/php5/cli/conf.d/pdo_mysql.ini
mysql
MYSQL_SOCKET => /var/run/mysqld/mysqld.sock
MYSQL_INCLUDE => -I/usr/include/mysql
MYSQL_LIBS => -L/usr/lib/i386-linux-gnu -lmysqlclient_r
mysql.allow_local_infile => On => On
mysql.allow_persistent => On => On
mysql.connect_timeout => 60 => 60
mysql.default_host => no value => no value
mysql.default_password => no value => no value
mysql.default_port => no value => no value
mysql.default_socket => /var/run/mysqld/mysqld.sock => /var/run/mysqld/mysqld.sock
mysql.default_user => no value => no value
mysql.max_links => Unlimited => Unlimited
mysql.max_persistent => Unlimited => Unlimited
mysql.trace_mode => Off => Off
mysqli
MYSQLI_SOCKET => /var/run/mysqld/mysqld.sock
mysqli.allow_local_infile => On => On
mysqli.allow_persistent => On => On
mysqli.default_host => no value => no value
mysqli.default_port => 3306 => 3306
mysqli.default_pw => no value => no value
mysqli.default_socket => /var/run/mysqld/mysqld.sock => /var/run/mysqld/mysqld.sock
mysqli.default_user => no value => no value
mysqli.max_links => Unlimited => Unlimited
mysqli.max_persistent => Unlimited => Unlimited
mysqli.reconnect => Off => Off
PDO drivers => mysql
pdo_mysql
pdo_mysql.default_socket => /var/run/mysqld/mysqld.sock => /var/run/mysqld/mysqld.sock
【问题讨论】:
-
您说它是远程服务器,但错误显示为 localhost。是哪个?
-
这是我尝试连接到远程服务器时在本地机器中遇到的错误
-
myuser 只能从 localhost 登录。您需要更改/添加允许您的主机的用户。
-
您为什么要使用早已弃用的
mysql_代码库?它在多年前就停产了,并在 PHP7 中完全删除。不应使用此库编写新代码。它使您容易受到 SQL 注入攻击(由于缺乏参数化查询支持)和潜在的其他未修补漏洞。尽快切换到使用mysqli或PDO,然后学习如何编写参数化查询以保护您的数据免受恶意输入。请参阅bobby-tables.com 了解风险的简单说明和一些用于安全编写查询的示例 PHP 代码。 -
@ADyson mysql_ 仅用于说明目的