有沒有辦法創建一個新的MySQL數據庫,一個新的MySQL用戶,並給新的數據庫所有使用PHP的用戶權限?創建數據庫和用戶的MySQL和設置特權php
回答
是的,因爲所有這些操作都可以通過常規SQL查詢來執行。
但是,我不會從root用戶運行帶有數據庫連接的PHP腳本。
你可以做這樣的事情:
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();
你可以看看MySQL文檔GRANT和CREATE USER
如果你正在主持上的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'));
?>
下載xmlapi.php從here,或者乾脆在谷歌搜索它。
這是完美的工作。
數據庫創建成功,用戶也成功創建,但新創建的用戶不分配給數據庫。 – 2015-04-11 06:39:38
你可以從這裏下載xmlapi.php:https://github.com/CpanelInc/xmlapi-php/blob/master/xmlapi.php(回答中的下載鏈接被移動) – sudip 2017-08-02 20:12:47
<!--
Go to setup on line 48
Created by [email protected]
-->
<!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 [email protected]
//
// 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 [email protected]";
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>";
?>
這不會試圖回答題。 – 2013-08-18 15:42:10
我會建議你使用phpmyadmin。
你需要做的步驟:
- 開放的phpmyadmin
- 去管理部分
- 上添加用戶帳戶命中
- 看跌的用戶名和密碼,
- 組權限
- 命中[go]按鈕
這一切 在行動中看到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
- 1. PHP PDO創建MySQL數據庫和用戶,並授予權限
- 2. 數據庫創建使用PHP和MySQL
- 3. 使用用戶名,密碼和所有權限從PHP創建MySQL數據庫
- 4. 使用SMO創建和設置數據庫權限?
- 5. 使用cPanel API在PHP中創建MySQL數據庫和用戶
- 6. PHP - 創建MySQL數據庫和用戶代碼不起作用
- 7. 用戶權限與mysql數據庫和php
- 8. 爲授權用戶創建賬戶的數據庫設計
- 9. 使用PHP和MySQL重置數據庫
- 10. 創建登錄和PHP和數據庫
- 11. 在MySQL VIA腳本中爲數據庫創建用戶和權限
- 12. Heroku PostgreSQL用戶和數據庫創建
- 13. 的MySQL創建數據庫和用戶腳本
- 14. 創建數據庫與編碼和設置用戶名和密碼
- 15. PHP和MYSQL數據庫連接和表創建只有一次
- 16. 在PHP和MYSQL中設置用戶權限
- 17. 從php和mysql數據庫中獲取數據(創建報告)
- 18. MYSQL PHP用戶特權
- 19. MySQL用戶創建數據庫需要什麼權限?
- 20. 在bash腳本中創建mysql數據庫和用戶
- 21. MySQL - 自動創建數據庫,表和用戶
- 22. 當我嘗試通過PHP創建數據庫並設置用戶權限時,MySQL語法錯誤
- 23. 如何使用android連接php創建mysql數據庫和表?
- 24. 如何使用PHP和MySQL創建數據庫?
- 25. 使用PHP和MySql數據庫設置網頁標題
- 26. 用php爲MySQL數據庫設置用戶的默認圖像
- 27. 創建mysql數據庫和導入XML
- 28. MYSQL - 用戶數據庫設置
- 29. 用PHP創建多個MySQL數據庫
- 30. hibernate是否可以創建數據庫和數據庫用戶?
+1使用專用帳戶只能夠創建數據庫和用戶,因爲它可以防止意外,如果賬戶被攻破提供損壞限制。它不能丟棄任何東西,並且無法訪問數據。 – 2012-03-16 11:54:58
plus1非常好的點.. – 2017-07-10 03:31:36