1

Я понимаю, что этот вопрос задают много, но поскольку исправление является ситуационным, я задаю этот вопрос.mysql_connect(): Доступ запрещен для пользователя 'user' @ 'host' (с использованием пароля: НЕТ)

Ошибка: mysql_connect(): Доступ запрещен для пользователя «username'@'boscustweb0406.eigbox.net» (не используя пароль: NO)

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

Он выделяет эту строку на странице ошибки:

67    $userName = $this->userName; 
68    $password = $this->password; 
69    $databaseName = $this->databaseName; 
70    
71    /*$connection = new CDbConnection($localhost,$userName,$password); 
72    $connection->active=true; 
73    $sql = "SHOW DATABASES LIKE $databaseName"; 
74    $command = $connection->createCommand($sql); 
75    $rowCount=$command->execute(); */ 
76    
77    //$command = $connection->createCommand($sql); 
78    
79    $con = mysql_connect($localhost,$userName,$password); 
80    if (!$con) 
81    { 
82     $this->addError('databaseName','Database already exist'); 
83    } 
84    else 
85    { 
86      if(mysql_select_db($databaseName)) 
87      { 
88       $this->addError('databaseName','Database already exist'); 
89       return false; 
90      } 
91    } 

Я проверил и дважды проверил все детали, и они являются правильными.

Вот моя модель проверки:

50    $userPassword = base64_encode($_POST['InstallForm']['userPassword']); 
51    $name = $_POST['InstallForm']['name']; 
52    $compnyName = $_POST['InstallForm']['compnyName']; 
53    $language = $_POST['InstallForm']['language']; 
54    $timeZone = $_POST['InstallForm']['timeZone']; 
55    if($model->validate()) 
56    { 
57     $con = mysql_connect($hostName,$userName,$password); 
58     $dat = "CREATE database $databaseName"; 
59     
60     $controlVal = '$controllername'; 

Вы можете скопировать этот вопрос здесь: http://staging-sendy.elionweb.com/

Используйте хост elionweb.ipagemysql.com, а затем положить все, что вы хотите в других областях и вы получите ту же ошибку.

Я успешно получил скрипт, установленный на моей локальной машине, без каких-либо ошибок, поэтому, надеюсь, кто-то здесь поможет мне понять это.

+0

Не используйте ['mysql_connect'] (http://php.net/manual/en/function.mysql-connect.php) - эти методы безнадежно устарели и устарели. Вместо этого посмотрите на [PDO] (http://www.php.net/manual/en/intro.pdo.php). И поскольку вы отметили свой вопрос с помощью 'yii', вы все равно не должны возиться с пользовательским кодом подключения. Вместо этого вы можете настроить компонент 'db' Yii и быть счастливым. –

+0

У Yii есть абстракция DB, которая поставляется вместе с ней. Используйте это вместо устаревших 'mysql_ *' функций. Также base64 НЕ подходит для хранения паролей. –

ответ

0

Строка «using password: NO» сообщает мне, что ваша переменная $ password пуста.

Затем я просмотрел ваш код, и кажется, что имена атрибутов в форме и вашей модели проверки несовместимы. В вашей форме (используя указанную ссылку) я вижу: name = "InstallForm [пароль]", но в вашей модели проверки этот код выглядит так: $ userPassword = base64_encode ($ _ POST ['InstallForm'] ['userPassword']); Посмотрите немного ближе, и вы увидите, что «пароль» не соответствует «userPassword».

Есть и другие несоответствующие атрибуты. В вашей форме: name = "InstallForm [имя_пользователя]". Но ваша модель проверки имеет: $ name = $ _POST ['InstallForm'] ['name'];

Кроме того, атрибут «compnyName» кажется ошибочным, но, похоже, вы ошибочно написали его вне кода, чтобы не было проблем.

+0

userPassword и пароль - это две разные вещи. Один для использования администратора, а другой для базы данных. То же самое касается имени пользователя и имени. Как упоминалось в сообщении, я смог получить скрипт для установки на моем локальном уровне. –