Создайте пользователя MySQL и базу данных от PHP

Существует ли способ создать новую базу данных MySQL, нового пользователя MySQL и дать новые полномочия пользователя на новой базе данных все использование PHP?

На РЕДАКТИРОВАНИЕ - нужно указать, это выполняется от 1 сервера до другого, таким образом, Сервер попытка установить DB/пользователя на Сервере 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'"
5
задан robjmills 2 May 2010 в 16:10
поделиться

4 ответа

Этот ответ редактировался несколько раз на основе новой информации, предоставленной OP

Действительно ли root разрешено подключаться к серверу с хоста, с которого вы подключаетесь? Если строка ошибки возвращает каноническое имя сервера, очень высока вероятность, что 'localhost' не указывает на 127.0.0.1:

«Доступ запрещен для пользователя (скрыт) к {{1 }} database 'dbname' "

Это должно отражать что-то вроде« Доступ запрещен для пользователя 'root' @ localhost '», а не имя сервера.

Попробуйте:

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

Изменить (после дополнительной информации в комментариях)

Если вы подключаетесь с совершенно другого хоста, вы должны сообщить MySQL пользователю @ remote_hostname_or_ip разрешено connect и имеет соответствующие привилегии для создания базы данных и пользователей.

Вы можете сделать это довольно легко, используя 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 Документы по управлению пользователями )

Редактировать

Если вы используете C-Panel, просто используйте API .Хотя да, у него есть свои причуды, его легче поддерживать, чем использовать специальные методы. Многие успешные приложения используют его без проблем. Как и любой другой API, вы должны быть в курсе изменений при его использовании.

4
ответ дан 15 December 2019 в 06:19
поделиться

Я считаю, что вам нужно будет создать соединение (с пользователем root ) с существующей базой данных (например, mysql ), а затем выполнить запрос на создание.

0
ответ дан 15 December 2019 в 06:19
поделиться

В этом примере вы не видите подключения к базе данных по очевидной причине: предполагается, что вы уже узнали, что любая база данных действие требует сначала подключения.
Так пишутся книги: вещи из предыдущих уроков опускаются в следующих. Или каждая глава будет в 2 раза больше, и вы никогда не дочитаете книгу.

так что да, вам нужно сначала подключиться к базе данных, используя mysql_connect ().

для создания пользователя вы можете использовать mysql GRANT query

, хотя я никогда не делал этого из сценария, а только из оболочки

0
ответ дан 15 December 2019 в 06:19
поделиться

Сначала вам нужно подключиться к серверу sql:

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

Затем запрос будет выполнен. Однако многие серверы виртуального хостинга отключают создание баз данных через PHP.

-1
ответ дан 15 December 2019 в 06:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: