Есть ли способ создать новую базу данных MySQL, новый пользователь MySQL и предоставить новые пользовательские привилегии в новой базе данных, используя PHP?
EDIT – следует указать, что это выполняется от 1 сервера к другому, поэтому сервер A пытается установить DB / user на сервере B
У меня есть это:
$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'" 
        
    Этот ответ был отредактирован несколько раз на основе новой информации, предоставленной OP
Разрешено ли root разрешать подключение к серверу с хоста, из которого вы подключаетесь? Если строка ошибки возвращает каноническое имя сервера, есть очень хорошая вероятность, что «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 можно найти здесь , GRANT . 
редактировать
Если использовать MySQL 4 – CREATE, это не вариант. Вы просто используете GRANT ( 4.1 Docs On User Management )
редактировать
Если вы используете C-Panel, просто используйте API . Хотя да, у него есть свои причуды, его легче поддерживать материал, который использует его, а не специальные рабочие места. Многие успешные приложения используют его без проблем. Как и любой другой API, вам нужно оставаться на вершине изменений при его использовании.
  Я считаю, что вам нужно будет создать соединение (с пользователем root ) с существующей базой данных (например, mysql ), а затем запустить запрос создания. 
  Вы не видите соединение с базой данных в этом примере по очевидной причине: предполагается, что вы уже узнали, что любое действие базы данных требует подключения сначала. 
  Это способ написания книг: вещи из предыдущих уроков опущены в следующих.  Или каждая глава будет в 2 раза больше, и вы никогда не закончите книгу. 
поэтому да, вам нужно сначала подключиться к базе данных, используя mysql_connect ().
для создания пользователя вы можете использовать запрос mysql GRANT
хотя я никогда не делал этого из сценария, но только из оболочки
Сначала вам нужно подключиться к серверу sql:
 $conn=@mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) or die("Err:Conn"); 
Затем запрос будет выполнен. Однако многие серверы общего доступа отключили создание баз данных через PHP.