0

我有 2 台服务器。Server A(10.0.0.1) 和Server B(10.0.0.2) [不是真实的 ips]。Server A包含在远程创建数据库的脚本Server B。数据库是动态创建的。上的脚本Server A如下:

$this->dbh->exec("CREATE DATABASE `" . $name . "`;
     CREATE USER '" . $username . "'@'localhost' IDENTIFIED BY '" . $password . "';
     GRANT ALL PRIVILEGES ON `" . $name . "`.* TO '" . $username . "'@'%' IDENTIFIED BY PASSWORD '" . $password . "' WITH GRANT OPTION;
     FLUSH PRIVILEGES;")

此脚本连接到Server B并使用 mysql 管理员帐户。Server B这可以很好地创建用户和数据库。执行后,我立即关闭当前的管理员连接并以新创建的用户身份打开一个新连接以创建几个表。这是我收到以下错误的时候Fatal error: Uncaught exception 'Exception' with message 'SQLSTATE[28000] [1045] Access denied for user.......

现在,当我登录到我的主机帐户并选择“允许远程连接”时,我可以从服务器 A 作为新用户正常运行查询。我从一开始就授予许可似乎有问题。如您所见,我使用通配符%来允许来自任何 IP 的连接,所以我不确定语句哪里出错了。如果需要,我可以提供更多信息。非常感谢任何帮助。

4

1 回答 1

0

原来我所要做的就是"'@'%' IDENTIFIED BY PASSWORD '"

"'@'%' IDENTIFIED BY '"不需要“密码”。删除它后,我可以远程连接。

于 2013-05-16T02:44:21.287 回答