【问题标题】:create db and user mysql and set privileges php [closed]创建数据库和用户mysql并设置权限php [关闭]
【发布时间】:2012-04-01 00:16:42
【问题描述】:

有没有办法创建一个新的 MySQL 数据库,一个新的 MySQL 用户并赋予新用户在新数据库上的权限都使用 PHP?

【问题讨论】:

    标签: php mysql database privileges


    【解决方案1】:

    是的,因为所有这些操作都可以通过常规 SQL 查询来执行。

    但是,我会避免使用来自 root 用户的数据库连接运行 PHP 脚本。

    【讨论】:

    • +1 使用只能创建数据库和用户的专用帐户,因为它可以防止意外并在帐户被盗用时提供损害限制。它不能丢弃任何东西,也无法访问数据。
    【解决方案2】:

    你可以这样做:

    mysql_connect('localhost','user',password);
    mysql_query("CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';");
    mysql_query("GRANT ALL ON db1.* TO 'username'@'localhost'");
    mysql_query("CREATE DATABASE newdatabase");
    mysql_close();
    

    您可以查看GRANTCREATE USER 上的 MySQL 文档

    【讨论】:

    • mysqli 与 PHP 7
    【解决方案3】:

    如果您将项目托管在 CPanel 上,那么 mysql_query 方法将无法创建数据库、用户和授予权限。

    您必须使用 CPanel 的 XML Api。

    <?php
    include("xmlapi.php");
    
    $db_host = 'yourdomain.com'; 
    $cpaneluser = 'your cpanel username';
    $cpanelpass = 'your cpanel password'; 
    
    $databasename = 'testdb';
    $databaseuser = 'test'; // Warning: in most of cases this can't be longer than 8 characters
    $databasepass = 'dbpass'; // Warning: be sure the password is strong enough, else the CPanel will reject it
    
    $xmlapi = new xmlapi($db_host);    
    $xmlapi->password_auth("".$cpaneluser."","".$cpanelpass."");    
    $xmlapi->set_port(2082);
    $xmlapi->set_debug(1);//output actions in the error log 1 for true and 0 false  
    $xmlapi->set_output('array');//set this for browser output  
    //create database    
    $createdb = $xmlapi->api1_query($cpaneluser, "Mysql", "adddb", array($databasename));   
    //create user 
    $usr = $xmlapi->api1_query($cpaneluser, "Mysql", "adduser", array($databaseuser, $databasepass));   
     //add user 
    $addusr = $xmlapi->api1_query($cpaneluser, "Mysql", "adduserdb", array("".$cpaneluser."_".$databasename."", "".$cpaneluser."_".$databaseuser."", 'all'));
    ?>
    

    here下载xmlapi.php,或者直接在google上搜索。

    这对我来说非常有效。

    【讨论】:

    【解决方案4】:
    <!--
    
    Go to setup on line 48
    Created by kierzo@kierzo.com
    
    -->
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    
    <head>
    <meta content="en-gb" http-equiv="Content-Language" />
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
    <title>Create Database</title>
    </head>
    
    <body>
    
    
    
    
    <!-- Title -->
    <p><h1>Create Database</h1></p>
    <p></p>
    <p>
    
    
    <!-- The form -->
    <form action="<?php $currentFile = $_SERVER["PHP_SELF"];$parts = Explode('/', $currentFile);echo $parts[count($parts) - 1];?>" method="post">
    
    Database Name: <input name="databasename" type="text" />
    <br>
    DB Pass: <input name="dbpass" type="text" />
    <br>
    Admin Pass: <input name="passbox" type="password" />
    
    <p><input name="Submit1" type="submit" value="submit" /></p>
    
    </form>
    
    <!-- end form -->
    
    </p>
    
    </body>
    
    </html>
    
    
    
    <?php
    
    //*********************** CONFIG SETUP ************************************//
    // Created by kierzo@kierzo.com
    //
    // set the admin pass for the page
    $adminpass = "*******";   // change ******* with your page pass
    //
    // set mysql root pass
    $mysqlRootPass = "*******";  // change ******* with your mysql root pass
    //
    //
    //*********************** CONFIG SETUP ************************************//
    
    
    // if isset set the varibables
    
    if(isset($_POST["passbox"]) && ($_POST["databasename"])){
    
    
    $databasename = $_POST["databasename"];
    $password = $_POST["passbox"];
    $dbpass = $_POST["dbpass"];
    
    }
    else { exit;}
    
    if(($password) == ($adminpass)) {
    
    
    }
    else {
    
    echo "Incorrect Password!";
    
    exit;}
    
    // store connection info...
    
    $connection=mysqli_connect("localhost","root","$mysqlRootPass");
    
    
    // check connection...
    
    if (mysqli_connect_errno())
      {
      echo "Failed to connect to MySQL: " . mysqli_connect_error();
      }
    
    
      // Create database
      echo "<br><br>";
    #echo "$sql";
    $sql="CREATE DATABASE $databasename";
    
    if (mysqli_query($connection,$sql))
      {
      echo "<h2>Database <b>$databasename</b> created successfully!</h2>";
      }
    else
      {
      echo "Error creating database: " . mysqli_error($con);
      }
    
    
        // Create user
    
    $sql='grant usage on *.* to ' . $databasename . '@localhost identified by ' . "'" . "$dbpass" . "'";
    echo "<br><br>";
    #echo "$sql";
    if (mysqli_query($connection,$sql))
      {
      echo "<h2>User Created... <b>$databasename</b> created successfully!</h2>";
      }
    else
      {
      echo "Error creating database user: " . mysqli_error($con);
      }
    
    
          // Create user permissions
    
    $sql="grant all privileges on $databasename.* to $databasename@localhost";
    echo "<br><br>";
    #echo "$sql";
    if (mysqli_query($connection,$sql))
      {
      echo "<h2>User permissions Created... <b>$databasename</b> created successfully!</h2>";
      }
    else
      {
      echo "Error creating database user: " . mysqli_error($con);
      }
    
      echo "<p>Database Name: $databasename</p>";
      echo "<p>Database Username: $databasename</p>";
      echo "<p>Database Password: $dbpass</p>";
      echo "<p>Database Host: localhost</p>";
    ?>
    

    【讨论】:

    • 这并不试图回答这个问题。
    【解决方案5】:

    我会建议你使用 phpmyadmin。

    你需要做的步骤:

    1. 打开phpmyadmin
    2. 转到管理部分
    3. 点击添加用户帐户
    4. 输入用户名和密码
    5. 设置权限
    6. 点击 [ 开始 ] 按钮

    仅此而已 在 youtube 上查看实际操作 [click here ]

    如果您想了解更多关于phpMyadmin的信息go with official

    但是如果有任何特殊原因需要使用 php,这里是 sql 推荐

    CREATE USER 'tesrytss'@'%'//user name
    IDENTIFIED VIA mysql_native_password USING '***';.//set pass
    GRANT SELECT, INSERT, UPDATE, DELETE, FILE ON *.* TO 'tesrytss'@'%' // previlages and username and location
    REQUIRE NONE WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0; //other requerment
    

    【讨论】:

      【解决方案6】:

      打开 PHP myadmin 或 MySql 工作台进入查询窗口,然后在查询下方运行

      CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
      GRANT ALL ON db1.* TO 'username'@'localhost'"
      

      【讨论】:

        猜你喜欢
        • 2016-11-04
        • 2020-03-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多