Есть ли способ создать новую базу данных MySQL, нового пользователя MySQL и предоставить новые пользовательские привилегии в новой базе данных с использованием PHP?создать db и пользовательский mysql и установить привилегии php
ответ
Да, так как все эти действия могут выполняться обычными SQL-запросами.
Однако я бы воздержался от запуска PHP-скриптов с подключением к базе данных от пользователя root.
Вы могли бы сделать что-то вроде этого:
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
не будет работать в создавать базы данных, пользователей и предоставлять разрешения.
Вы должны использовать XML Api для CPanel.
<?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, или просто поиск по Google для него.
Это то, что отлично сработало для меня.
Создана база данных успешно, а также пользователь, созданный успешно, но вновь созданный пользователь не назначает базу данных. –
вы можете скачать xmlapi.php здесь: https://github.com/CpanelInc/xmlapi-php/blob/master/xmlapi.php (ссылка для скачивания в ответе перемещена) – sudip
<!--
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>";
?>
Это не пытается ответить на вопрос. –
Я предлагаю вам использовать phpmyadmin.
вам нужно сделать шаги:
- открытый PHPMyAdmin
- пойти в раздел администрирования
- хит на счет добавить пользователя
- имя пользователя положить и пароль
- набор привилегий
- хит кнопка [go]
, что все увидеть в действии на YouTube [click here]
в том случае, если вы хотите узнать больше о PHPMYADMIN go with official
, но если есть какие-либо особые причины, чтобы сделать это с PHP здесь является SQL Commend
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. Создайте пользователя и привилегии для DB в скрипте MySQL VIA
- 2. PHP, MySQL DB и memcached
- 3. Пользователи MySQL и все привилегии
- 4. Аутентификация и привилегии MySQL с PHP-сервером на разных блоках
- 5. Как правильно установить права собственности и привилегии в MariaDB (MySQL)?
- 6. Создать MySQL пользователя и базу данных из PHP
- 7. PhpMyAdmin Grant и привилегии
- 8. Работа с MSSQL DB и MySQL DB
- 9. Как установить пользовательские привилегии?
- 10. PHP и MySQL Безопасность
- 11. Процесс Php/Mysql с вопросом о привилегии пользователя и администратора
- 12. Пользовательские привилегии с базой данных mysql и php
- 13. MySQL создать базу данных и пользовательский сценарий
- 14. clearDB - Mysql - как установить грантовые привилегии
- 15. GetCursorPos и привилегии
- 16. Php, MySql - Несколько соединений DB и mysql_insert_id()
- 17. MySQL и PHP multiple checklist db insert
- 18. MySQL Workbench и ограниченные привилегии SHOW
- 19. PHP PDO Создание MySQL базы данных и пользователей и предоставить привилегии
- 20. PHP/PDO - привилегии Flush
- 21. PHP и mySql пользовательский скрипт загрузки
- 22. .db-файл и MySQL
- 23. Массивные DB и mysql
- 24. создать ежемесячный архив с PHP и MySQL
- 25. MySQL Привилегии, разрешающие/запрещающие
- 26. Предоставить привилегии всем пользователям mysql?
- 27. MySQL фальшренонс корневые привилегии тщательно
- 28. Привилегии базы данных и роли
- 29. Как создать mysql db с Laravel
- 30. Дельфы и MySQL DB помощь
+1 Используйте специальный счет, который только способен создавать базы данных и пользователей, так как он предотвращает несчастные случаи и обеспечивает ограничение ущерба, если учетная запись скомпрометирована. Он ничего не может потерять и не имеет доступа к данным. –
plus1 Очень хорошая точка. –