代码之家  ›  专栏  ›  技术社区  ›  robjmills

从PHP创建mysql用户和数据库

  •  5
  • robjmills  · 技术社区  · 15 年前

    有没有一种方法可以创建一个新的mysql数据库,一个新的mysql用户,并给新的数据库所有的新用户特权都使用php?

    编辑 -应该指出,这是从一个服务器运行到另一个服务器,因此服务器A试图在服务器B上安装DB/用户

    我有这个:

    $con = mysql_connect("REMOTE.IP.ADDRESS","root","pass");
    mysql_query("CREATE DATABASE ".$db."",$con)or die(mysql_error());
    mysql_query("GRANT ALL ON ".$db.".* to  ".$user." identified by '".$dbpass."'",$con) or die(mysql_error());
    

    但我在格兰特问题上得到了一个错误:

    "Access denied for user 'root'@'MY.REMOTE.SERVER.HOST.NAME' to database 'dbname'"
    
    4 回复  |  直到 15 年前
        1
  •  4
  •   Tim Post Samir J M Araujo    15 年前

    根据运营商提供的新信息,已多次编辑此答案。

    实际上是根 允许 要从您连接的主机连接到服务器吗?如果错误字符串返回服务器的规范名称,则很可能“localhost”未指向127.0.0.1:

    “用户访问被拒绝 'root'@'my.server.host.name'到 数据库'dbname'“

    这应该类似于“拒绝用户'root'@localhost'的访问”,而不是服务器的名称。

    尝试:

    $con = mysql_connect("127.0.0.1","root","pass");
    

    编辑 (在评论中提供更多信息后)

    如果你是从一个完全不同的主机连接,你必须告诉MySQL user@remote_hostname_or_ip 允许连接,并具有创建数据库和用户的适当权限。

    您可以使用phpmyadmin(在mysql服务器上)或类似的查询很容易做到这一点:

    CREATE USER 'root'@'192.168.1.1' IDENTIFIED BY PASSWORD 'secret';
    
    GRANT ALL PRIVILEGES ON * . * TO  'root'@'192.168.1.1' IDENTIFIED BY PASSWORD 'secret' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
    

    我建议不要将此用户命名为“root”,只创建一个具有所需所有全局权限的用户。在这个例子中,我使用了192.168.1.1,它很容易成为主机名,只需确保正确设置了DNS。指定要匹配的主机 确切地 当您连接到远程服务器时,它会出现在日志中。

    你也可以根据口味调整极限。有关 CREATE USER 语法可以是 found here , GRANT here

    编辑

    如果使用mysql 4-create不是一个选项。你只要用格兰特( 4.1 Docs On User Management )

    编辑

    如果使用C面板,只需 use the API . 虽然是的,它确实有自己的怪癖,但它更容易维护使用它的东西,而不是特别的工作环境。许多成功的应用程序都可以毫无疑问地使用它。与其他任何API一样,在使用它时,您需要随时掌握变化。

        2
  •  0
  •   Josh K    15 年前

    我相信你必须创造一种联系 root 用户)到现有数据库(如 mysql )然后运行创建查询。

        3
  •  0
  •   Your Common Sense    15 年前

    在本例中,您没有看到数据库连接,原因很明显:假设您已经了解了任何数据库操作都需要首先连接。
    这就是书的写作方式:前一课的内容在后一课中被省略了。否则每一章都会大两倍,你永远也完成不了这本书。

    所以是的,您需要首先使用mysql_connect()连接到数据库。

    要创建用户,可以使用MySQL GRANT query

    虽然我从来没有从剧本上完成过,但只从外壳上完成。

        4
  •  -1
  •   Gazler    15 年前

    您需要先连接到SQL Server:

    $conn=@mysql_connect(DB_HOST, DB_USER, DB_PASSWORD)
        or die("Err:Conn");
    

    然后执行查询。但是,很多共享主机服务器都禁止通过PHP创建数据库。