错误:致命错误:.......中未捕获到消息“ SQLSTATE [28000] [1045]用户'tech'@'localhost'(使用密码:是)的异常'PDOException'
我可以在命令行中进行远程连接,但不能使用php,在哪里可以找到任何想法?
详细信息如下:
网络服务器A:1.1.1.1拥有php脚本:
$REGIS_DB_SERVER = "2.2.2.2"; //I've tried the IP as well as "pretendhostname.com"
$REGIS_DB_NAME = "db_name";
$REGIS_DB_USER = "tech"; // or any other user name
$REGIS_DB_PASSWORD = "password";
//connect to db
$db = new PDO("mysql:host = $REGIS_DB_SERVER; dbname=$REGIS_DB_NAME; charset=utf8", $REGIS_DB_USER, $REGIS_DB_PASSWORD);
print_r($db -> errorInfo());
echo "Connected<br>";
$sql = "CREATE TABLE Test(PersonID int,LastName varchar(255),FirstName varchar(255),Address varcha(255),City varchar(255))";
$result = $db->query($sql);
echo "$result <br>";
?>
Web服务器B:2.2.2.2拥有mySQL数据库:运行Ubuntu 11.04
在/etc/mysql/my.cnf中
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#Commented out to allow remote connections to this database
#bind-address = 216.70.81.240
我跑步mysql> select Host,User from user;
得到:
+-----------------------+------------------+
| Host | User |
+-----------------------+------------------+
| % | root |
| 127.0.0.1 | root |
| 1.1.1.1 | tech |
| localhost | debian-sys-maint |
| localhost | root |
| localhost | tech |
+-----------------------+------------------+
在ubuntu 12.04中打开端口3306,以允许从任何ip连接到mysql暗示这不是iptable问题,并测试连接:
我使用SSH进入Web服务器A 1.1.1.1并运行:
mysql -u tech -p -h 2.2.2.2
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 200672
Server version: 5.1.63-0ubuntu0.11.04.1 (Ubuntu)
找到之后:PDO无法连接远程mysql服务器我意识到,如果主机不是“理解”的,则PDO连接将默认为host = localhost。仔细观察,我发现作业之间有2个空格。我没有意识到语法中的空格很重要。
所以最后,这是一个语法错误:
工作解决方案(通过删除空格):
$db = new PDO("mysql:host=$REGIS_DB_SERVER; dbname=$REGIS_DB_NAME; charset=utf8", $REGIS_DB_USER, $REGIS_DB_PASSWORD);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句