大多数答案都认为这是一个正确的问题。但我假设不是在这种情况下,因为mysql连接仍然有效。
我正在尝试连接到mariadb10,它位于我网络中的服务器上 我想从我的localhost连接。
如果我在我的终端尝试:
myuser@mylocalComputer ~ $ mysql -h myserver -P 3307 -u mydbuser -pmyconfidentalpassword
一切正常!!
但如果我尝试通过pdo连接php scrypt我得到错误:
<?php
$dsn = 'mysql: host=myserver:3307;dbname=mydbname';
$username = 'mydbuser';
$password = 'myconfidentalpassword';
$options = array(
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
);
$dbh = new PDO($dsn, $username, $password, $options);
if(! $dbh ) {
die('Could not connect: ' . mysql_error());
}
$sql = 'select * from foo;';
$retval = mysql_query( $sql, $conn );
if(! $retval ) {
die('Could not select data: ' . mysql_error());
}
echo "Synced data successfully\n";
mysql_close($conn);
?>
错误是:
PHP致命错误:未捕获PDOException:SQLSTATE [HY000] [1045]在/home/myuser/Projekte/Hibiscus_extend/Hib_Nightly_sync.php:8中拒绝用户'mydbuser'@'localhost'(使用密码:YES)的访问权限
堆栈跟踪:
/home/myuser/Projekte/Hibiscus_extend/Hib_Nightly_sync.php(8):PDO - > __ construct('mysql:host = myse ...','mydbuser','myconfidentalpassword',Array) {main}在第8行的/home/myuser/Projekte/Hibiscus_extend/Hib_Nightly_sync.php中抛出
我做错了什么,在哪里?
哦哦哦! 我找到了解决方案!连接问题的原因只是$ dsn中的空格
错误: $ dsn ='mysql:host = myserver:3307; dbname = mydbname'; 工作良好 $ dsn ='mysql:host = myserver:3307; dbname = mydbname';