【问题标题】:PHP script to create db and allow remote access is not working用于创建数据库并允许远程访问的 PHP 脚本不起作用
【发布时间】:2013-05-13 20:29:52
【问题描述】:

我有 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 的连接,所以我不确定语句哪里出错了。如果需要,我可以提供更多信息。非常感谢任何帮助。

【问题讨论】:

  • 我不确定,但 @localhost 在我看来很可疑。为什么要运行CREATE USERGRANT 已经创建了它

标签: mysql database permissions pdo remote-connection


【解决方案1】:

原来我所要做的就是用

替换 "'@'%' IDENTIFIED BY PASSWORD '"

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

【讨论】:

    猜你喜欢
    • 2013-09-05
    • 1970-01-01
    • 1970-01-01
    • 2018-03-17
    • 2012-08-08
    • 1970-01-01
    • 1970-01-01
    • 2016-11-10
    • 2015-02-17
    相关资源
    最近更新 更多